在 Visual C++ 2012 (C++ 11) 中,我收到代码错误
template <typename T, T... I>
struct structFoo
{
static const T sz = sizeof...(I); (1)
static constexpr T size = sizeof...(I); (2)
};
编译器采用第 (1) 行,但提示第 (2) 行是一个错误: '错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int。
为什么?
最佳答案
Microsoft 直到 Visual Studio 2015 才实现对 constexpr
的支持。
您暗示 VC++2012 是 C++11 的一个实现,但这是一种严重的过度简化。事实上,随着时间的推移,在多个版本中添加了各种语言和库功能;一些 C++11 特性仍然不受支持,更不用说 C++14:
关于c++ - 模板中 sizeof 的 constexpr 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632491/