Visual Studio 2012/2013 类内成员初始化
Posted
技术标签:
【中文标题】Visual Studio 2012/2013 类内成员初始化【英文标题】:Visual Studio 2012/2013 in-class member initialization 【发布时间】:2013-08-29 18:44:37 【问题描述】:这个
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 中搜索了有关类内初始化的答案,但没有找到有关最新版本的任何具体信息。
提前致谢。
【问题讨论】:
是的,它还没有在 VS 中可用。 gcc 和 clang 支持它。 Intel C++ compiler v14也支持 infoq.com/resource/news/2013/07/vs2013_CPP_compliance/en/… 【参考方案1】:不,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 开始支持【讨论】:
谢谢,这也回答了我的其他几个问题。 :)以上是关于Visual Studio 2012/2013 类内成员初始化的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Visual Studio 2012/2013 的 MySQL
我可以在 Visual Studio 2012/2013/2015/2017/2019 中录制/播放宏吗?
VS2012/2013/2015/Visual Studio 2017 关闭单击文件进行预览的功能
串口通信IN C++(适用于Microsoft Visual Studio 2010/2012/2013 ,VC++6.0 )