Visual Studio 2012/2013类内成员初始化

时间:2013-08-29 18:44:37

标签: c++ visual-studio-2012 c++11 visual-studio-2013

这个

class X
{
 int x = 2;
 string y {"smt"};
 int tab[3] = {1,2,3}; // or tab[3] {1,2,3}
};
据我所知,

可以在新的C ++ 11标准中使用。但是,Visual Studio 2012 V3或2013中不允许这样做。第一个给出:

error C2864: 'A::a' : only static const integral data members can be initialized within a class

关于';'的第二和第三个错误和'{'。

它是否基本上意味着这些功能在MS编译器中仍然不可用?什么编译器实际支持它?我在Visual中搜索了关于类内初始化的答案,但没有找到关于最新版本的具体内容。

提前致谢。

1 个答案:

答案 0 :(得分:9)

不,Microsoft compiler不支持非静态数据成员初始值设定项。 Herb Sutter宣布它将在Visual Studio 2013 RTM中实现。 (Link

先生。 Sutter说,实现C ++ 11功能这种延迟的主要原因是微软试图同时实现C ++ 14功能,因为它们是紧密耦合的。 所以,我们可能会在VS2013版本中获得一些C ++ 14特性。

其他主要编译器:

  • GCC支持它(它是第4.8.1版以来第一个完全符合C ++ 11标准的编译器)
  • Clang支持自3.0版以来
  • Intel自版本14起支持