2012-09-29 7 views
24

Duplicar posible:
C++11 features in Visual Studio 2012¿La lista de inicializadores no funciona con el vector en Visual Studio 2012?

así que estaba leyendo sobre C++ 11 listas de inicializador hoy a través de Wikipedia y vi que C++ 11 es compatible con la siguiente sintaxis para los contenedores estándar :

std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" }; 
std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" }); 
std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" }; 

Cuando intento lo siguiente en Visual Studio 2012 obtengo el error de compilación C2552: 'vecs' : non-aggregates cannot be initialized with initializer list

Aquí está mi código:

#include <vector> 

using namespace std; 

int main() { 
    vector<string> vecs = {"h", "g", "e"}; 
} 

¿El VS2012 es compatible con listas de inicializador O solo estoy malentendido algo?

Gracias!

+15

Sin embargo, fue mucho más rápido que yo haga una pregunta SO que leer algún artículo de MSDN mal distribuida. Supongo que no debería publicar en SO la próxima vez. – Polaris878

+3

Estoy de acuerdo con Polaris. MSDN me enoja. Gracias – Marlon

Respuesta

38

Visual Studio 2012 no admite listas de inicializador.

Bueno, no fue hasta el CTP de noviembre de 2012. Ahora lo hace, al menos en un estado alfa. De acuerdo, este código aún no funcionará porque todavía están poniendo listas de inicializadores en la biblioteca estándar.

+2

Nicol, que aquí hay una bastante buena tabla que describe la lista de características VS2012 es compatible con: http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx – Polaris878

+1

El apoyo es muy malo sin embargo. 'int main() {for (int i: {1, 2, 3, 4, 5}) {}}' da un error de compilador interno. [edit] en realidad, el pre-CTP se cuelga. El CTP simplemente carece de las funciones de inicio/final para las listas de inicializadores. – dascandy

+0

@dascandy: Sí. Eso es parte de la falta de soporte de biblioteca estándar para las listas de inicializadores: no tener las sobrecargas adecuadas para std :: begin y std :: end, que se basa en 'basado en rangos' para '. –

Cuestiones relacionadas