[英]Is struct A { int a[2] = {1, 2}; }; legal as per C++11?
clang 3.4接受以下代码
struct A
{
int a[2] = {1, 2};
};
但是,vc ++ 2014 CTP拒绝它并显示错误消息:
error C2536: 'A::A::a': cannot specify explicit initializer for arrays
哪个编译器正确?
是的,它是允许的(但新的)C ++ 11。 具体来说,在C ++ 03中,类成员的语法是(§9.2):
declarator brace-or-equal-initializer opt
这通常允许“大括号或相等的初始化程序”,而不是像C ++ 03中那样限制为常量表达式。
[注意,我在这里省略了一些不相关的语法部分,比如比特字段的规范]。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.