c ++ 11统一初始化不适用于clang ++

Sim*_*mon 4 c++ clang c++11

我从这个维基百科页面复制了以下示例:

struct BasicStruct {
    int x;
    double y;
};

struct AltStruct {
    AltStruct(int x, double y) : x_{x}, y_{y} {}

private:
    int x_;
    double y_;
};

BasicStruct var1{5, 3.2};
AltStruct var2{2, 4.3};

int main (int argc, char const *argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试用它编译它

clang++ -Wall -std=c++11 test.cpp 
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

test.cpp:17:11: error: non-aggregate type 'AltStruct' cannot be initialized with
      an initializer list
AltStruct var2{2, 4.3};
          ^   ~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)

我的铿锵版clang++ --version

Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

这个例子不应该有效吗?也许clang只是不完全兼容c ++ 11吗?

这是怎么回事?

Mat*_* M. 7

提示实际上在这里:

Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
                                                                   ^~~~~~
Run Code Online (Sandbox Code Playgroud)

这意味着它不是3.1版本,但介于3.0和3.1之间.

统一初始化的支持是在这两个版本之间的某个地方实现的,因此Apple可能完全没有支持或只是部分支持的版本.