这个
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中搜索了关于类内初始化的答案,但没有找到关于最新版本的具体内容。
提前致谢。
答案 0 :(得分:9)
不,Microsoft compiler不支持非静态数据成员初始值设定项。 Herb Sutter宣布它将在Visual Studio 2013 RTM中实现。 (Link)
先生。 Sutter说,实现C ++ 11功能这种延迟的主要原因是微软试图同时实现C ++ 14功能,因为它们是紧密耦合的。 所以,我们可能会在VS2013版本中获得一些C ++ 14特性。
其他主要编译器: