结构A {int a [2] = {1,2}; }; 合法的C++ 11?

xml*_*lmx 2 c++ standards compiler-errors visual-c++ c++11

clang 3.4接受以下代码

struct A
{
    int a[2] = {1, 2};
};
Run Code Online (Sandbox Code Playgroud)

但是,vc ++ 2014 CTP拒绝它并显示错误消息:

error C2536: 'A::A::a': cannot specify explicit initializer for arrays

哪个编译器正确?

M. *_* E. 6

是的,这是合法的,但VC++不支持此功能.它是均匀的初始化一个的在类成员初始化.

当然,=标志是可选的,您的代码与以下代码相同:

struct A
{
    int a[2] {1, 2};
};
Run Code Online (Sandbox Code Playgroud)