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

W Xcode Mam C++ Język Dialekt ustawiony na "C++ 0x [-std = C++ 0x]" i C++ biblioteki standardowej zestawie do "biblioteki standardowej biblioteki libC++ LLVM C++ z obsługą języka C++ 0X"dlaczego ja się "non-kruszywo nie można zainicjować z listy inicjatora"

Czy muszę ustawić coś innego?

+0

Składnia wydaje się poprawna z lub bez "=" (zakładając, że oczywiście przyniesiesz std :: string). –

+0

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

Odpowiedz

28

EDYCJA 10/2013: ta odpowiedź jest naprawdę stara, Apple Clang obsługuje to teraz.

C++ 11 Listy initializer nie są jeszcze obsługiwane z Clang 3.0

sprawdzić status realizacji tutaj: Clang C++11 implementation status

(Twój składnia wygląda poprawnie, jeśli tylko kompilator wspiera tę funkcję)

+0

Och, myślałem, że to zależy od używanej biblioteki. Sądzę, że ma to więcej sensu, że kompilator musi go obsługiwać. – joels

+5

Możesz spróbować użyć GNU ++ 11 (-std = gnu ++ 11). Na pewno obsługuje on listy inicjalizatorów. – rgbrgb

+2

-std = gnu ++ 11 pracował dla mnie - czy kompilowanie różnic w Xcode lub z makefile – chaosless

11

Clang 3.6.2 obsługuje składnię listy inicjalizatorów. Po prostu pamiętaj, aby podczas kompilacji przekazać flagę -std=c++11.

Powiązane problemy