为什么我得到"非聚合不能用初始化列表初始化"

joe*_*els 34 c++ xcode

std::map<std::string, int> m = {
    {"Marc G.", 123},
    {"Zulija N.", 456},
    {"John D.", 369}
};
Run Code Online (Sandbox Code Playgroud)

在Xcode中,我将C++语言方言设置为"C++ 0x [-std = c ++ 0x]",并将C++标准库设置为"libc ++ LLVM C++标准库,支持C++ 0X"

我还需要设置其他内容吗?

Fir*_*eer 35

编辑10/2013:这个答案很老,Apple Clang现在确实支持这个.

从Clang 3.0开始,尚不支持C++ 11初始化列表

请参阅此处的实现状态:Clang C++ 11实现状态

(如果只有编译器支持此功能,则语法看起来正确)

  • 您可以尝试使用GNU ++ 11(-std = gnu ++ 11).很确定它支持初始化列表. (5认同)
  • -std = gnu ++ 11对我有用 - 在Xcode或makefile中进行差异编译 (2认同)

Bar*_*zKP 18

Clang 3.6.2支持初始化列表语法.记得-std=c++11在编译时传递标志.