c++ - 模板中 sizeof 的 constexpr 无法编译

标签 c++ visual-studio-2012

在 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/

相关文章:

c++ - 在不增加引用计数的情况下迭代共享指针映射?

c++ - x&&y||z 是如何计算的?

android - 如何为 gSoap-OpenSSL Android 应用程序存储和加载 cacerts.pem

c++ - "Cleaning up"嵌套 if 语句

c++ - 如何在 Visual Studio 2012 上构建 LIBSVM,然后缩放训练数据

c++ - "int duplicate = num"是如何用于此代码段的?

c++ - 尝试在 Visual Studio 2013 中打印棋子

unit-testing - 当我取消单元测试运行时,当前运行的测试是否完成?

c# - 用 RichTextBox 替换 WinForms TextBox

vb.net - 申请在线支付