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

En Xcode Tengo lenguaje C++ dialecto serie a serie "C++ 0x [-std = C++ 0x]" y C++ Standard Library a "biblioteca estándar de libC++ LLVM C++ con soporte de C++ 0X"¿Por qué recibo "no-agregado que no se puede inicializar con lista de inicialización"

¿Debo configurar algo más?

+0

La sintaxis parece correcta con o sin '=' (suponiendo que hayas introducido std :: string en el ámbito del curso). –

+0

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

Respuesta

28

EDIT 10/2013: esta respuesta es muy antigua, Apple Clang es compatible con esto ahora.

C++ 11 Listas inicializador sin embargo, no se admiten como de Clang 3.0

Ver el estado de aplicación aquí: Clang C++11 implementation status

(Su sintaxis es correcta si sólo el compilador compatible con esta función)

+0

Oh, pensé que dependía de la biblioteca utilizada. Supongo que tiene más sentido que el compilador necesite soportarlo. – joels

+5

Puede intentar usar GNU ++ 11 (-std = gnu ++ 11). Bastante seguro de que admite listas de inicializadores. – rgbrgb

+2

-std = gnu ++ 11 funcionó para mí - fue la compilación de diferencias en Xcode o en makefile – chaosless

11

Clang 3.6.2 admite la sintaxis de la lista de inicializadores. Solo recuerde pasar el indicador -std=c++11 al compilar.

Cuestiones relacionadas