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

In Xcode ho linguaggio C++ Dialetto impostata su "C++ 0x [-std = C++ 0x]" e C++ Standard Library set a "libC++ LLVM Libreria standard C++ con supporto C++ 0X"Perché ricevo "non-aggregazione non può essere inizializzato con lista di inizializzazione"

Devo impostare qualcos'altro?

+0

La sintassi sembra corretta con o senza '=' (assumendo che tu abbia portato std :: string in scope ovviamente). –

+0

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

risposta

28

EDIT 10/2013: questa risposta è davvero vecchia, Apple Clang lo supporta ora.

C++ 11 liste di inizializzazione non sono ancora supportati come di Clang 3.0

Vedere lo stato di attuazione qui: Clang C++11 implementation status

(la sintassi sembra corretta se solo il compilatore ha sostenuto questa funzione)

+0

Oh, pensavo dipendesse dalla libreria usata. Immagino che abbia più senso che il compilatore debba supportarlo. – joels

+5

Si potrebbe provare a utilizzare GNU ++ 11 (-std = gnu ++ 11). Abbastanza sicuro che supporta gli elenchi di inizializzatori. – rgbrgb

+2

-std = gnu ++ 11 ha funzionato per me - era la differenza che compila in Xcode o da makefile – chaosless

11

Clang 3.6.2 supporta la sintassi della lista inizializzatore. Ricorda solo di passare il flag -std=c++11 durante la compilazione.

Problemi correlati