c++ - VS2010 中的前向/强枚举

标签 c++ visual-studio-2010 c++11

http://blogs.msdn.com/vcblog/archive/2010/04/06/c-0x-core-language-features-in-vc10-the-table.aspx有一张表显示了在 2010 RC 中实现的 C++0x 功能。其中列出了转发枚举和强类型枚举,但它们被列为“部分”。文章的正文说,这意味着它们要么不完整,要么以某种非标准方式实现。

所以我有 VS2010RC 并且正在使用 C++0x 特性。我无法弄清楚这些,也找不到关于这两个功能的任何文档。即使是最简单的尝试也无法编译。


enum class E { test };
int main() {}

fails with:

1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2332: 'enum' : missing tag name
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2236: unexpected 'class' 'E'. Did you forget a ';'?
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C3381: 'E' : assembly access specifiers are only available in code compiled with a /clr option
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C2143: syntax error : missing ';' before '}'
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(518): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



int main()
{
  enum E : short;
}


Fails with:
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(513): warning C4480: nonstandard extension used: specifying underlying type for enum 'main::E'
1>e:\dev_workspace\experimental\2010_feature_assessment\2010_feature_assessment\main.cpp(513): error C2059: syntax error : ';'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

所以看起来一定是一些完全非标准的实现让他们有理由称这个功能“部分”完成。我将如何重写该代码以访问转发和强类型功能?

关于我尝试使用的新功能的一些进一步信息:

强类型枚举:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf

枚举的前向声明:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf

最佳答案

我想我找到了答案。我在关键字文档下的 VS 2010 文档中找到了“枚举类”。它仅被管理——在真正的 C++ 构建中不受支持。所以看起来他们的意思是这个 C++0x 特性是“部分完成”的,因为它根本没有完成。

关于c++ - VS2010 中的前向/强枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948265/

相关文章:

C++11 正则表达式匹配——我无法让它正常工作

c++ - 使用 Qt Creator 编译 PythonQt

c++ - 是否有一个 C 预处理器可以根据已定义/未定义的值消除 #ifdef block ?

python - 嵌入在 C++ 中的 Python 在十六进制编辑器中是什么样子的?

visual-studio-2008 - Visual Studio 2008 到 2010 年的软件保证

c++ - 使用 std::random_device 和 pRNG 有什么区别,例如std::mt19937 和没有?

c++ - OpenCV Apple Mach-O 链接器错误 - 架构 x86_64 的 undefined symbol

c# - 添加 View 上下文菜单项消失了

c# - 如何告诉调试器忽略抛出的异常中断?

c++ - 允许/禁用模板的特定复制构造函数和赋值操作