2011-11-28 16 views
19

Aunque aquí hay algunas preguntas sobre el soporte de C++ 11 de clang, no parece que pueda obtener clang++ para comer mi código de C++ 11.clang ++ invocación de C++ 11

$ clang++ --version 
clang version 2.9 (tags/RELEASE_29/final) 
Target: x86_64-pc-linux-gnu 
Thread model: posix 

Según the clang C++11 status page que debería tener apoyo, al menos parcial (por ejemplo, soportes de ángulo recto), pero se niega todas las características que probé.

¿Hay algún interruptor que indique a clang que use C++ 11?


Ejemplo de Ensayo:

$ clang++ -stdlib=libstdc++ cpp11.cpp 
cpp11.cpp:16:33: error: a space is required between consecutive right angle brackets (use '> >') 
    std::vector<std::pair<int,char>> xs; 
           ^~ 
           > > 
cpp11.cpp:18:8: error: C++ requires a type specifier for all declarations 
    auto y = x; 
    ~~~~^
2 errors generated 
+4

¿Has probado '-std = C++ 0x'? – ildjarn

+0

@ildjarn: Sí, pero se ahoga horriblemente en ese argumento (alrededor de dos páginas de mensajes de error y un Segfault final). – bitmask

+0

¿Es esta la versión de Apple o la versión base? Preguntar porque informé de un error de Apple al sitio principal y me llamaste :) –

Respuesta

19

Ildjarn señala el argumento correcto, -std=c++0x o -std=c++11. Los errores que obtiene con ese argumento pueden deberse a que la versión de libstdC++ que está utilizando utiliza C++ 11, o C++ no estándar, que no es compatible con el clang 2.9.

+4

Pruebe algo similar a 'clang ++ -std = C++ 0x -stdlib = libC++ ...' (suponiendo, por supuesto, que tenga instalado libC++). – Hugh

+0

@Huw: Sí, me acabo de dar cuenta de que tengo la opción entre 'libC++' y 'libstdC++' y hasta ahora era demasiado perezoso para compilar 'clang' o' llvm', así que lo obtuve de mis fuentes de paquetes, que lo hacen no incluir 'libC++' y si creo que la documentación del proyecto esa biblioteca solo está disponible para Mac. Lo que significa que no está disponible para mí, ¿verdad? – bitmask

+0

@bitmask: Sí, parece que no está disponible para sistemas que no sean OS X, por desgracia. – Hugh