我遇到了一个问题,我无法使用 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