C ++:template <typename t,=“”t =“”t =“”>并使用float实例化

时间:2018-05-04 16:28:51

标签: c++ templates

我遇到了一个问题,我无法使用 float 类型实例化模板,尽管它可以正常使用 int

以下代码显示了我的问题:

template<typename T, T v>
struct Test
{
    constexpr static T value = v;
};

int main()
{
    Test<int,   1   >::value;
    Test<float, 1.0f>::value;

    return 0;
}

这个程序编译完全正常,只要存在 int 的实例化 - 只要我用 float 添加第二行,编译就会出现错误:“C993:'float':非类型参数'v'的非法类型”。有没有人知道如何解决问题并使用 float 进行编译?

我正在使用MSVC和C ++ 17。

此致

Lehks

0 个答案:

没有答案