2012-01-19 141 views
25
std::map<std::string, int> m = { 
    {"Marc G.", 123}, 
    {"Zulija N.", 456}, 
    {"John D.", 369} 
}; 

在Xcode中我有C++語言方言設置爲「C++ 0x中[-std =的C++ 0x]」和C++標準庫集到「libC++ LLVM C++標準庫,支持C++ 0X」爲什麼我會收到「非集合無法初始化列表初始化」

我需要設置別的東西嗎?

+0

語法看起來正確,有或沒有'='(假設你在當然的範圍內帶了std :: string)。 –

+0

'g ++ -std = C++ 11 ' –

回答

28

編輯10/2013:這個答案真的很老,Apple Clang現在確實支持這個。

C++ 11名初始化列表尚不支持作爲鏘3.0

見的執行情況在這裏:(如果只是編譯器支持此功能,你的語法看起來是正確的)Clang C++11 implementation status

+0

噢,我以爲它依賴於使用的庫。我想編譯器需要支持它更有意義。 – joels

+5

您可以嘗試使用GNU ++ 11(-std = gnu ++ 11)。很確定它支持初始化列表。 – rgbrgb

+2

-std = gnu ++ 11爲我工作 - 在Xcode或makefile中編譯差異 – chaosless

11

Clang 3.6.2支持初始化器列表語法。編譯時只記得通過-std=c++11標誌。