2012-05-02 12 views
50

¿Cómo puedo usar las últimas características de C++ 11 en Clang? ¿Qué (sub) conjunto de características es compatible?¿Cómo puedo usar las características de C++ 11 en Clang?

+5

he añadido el [tag: C++ 11] etiqueta aquí, esta pregunta parece probable que genere suficiente interés en el futuro que tenga la mayor visibilidad a C++ 11 expertos desde el principio me parece que vale la pena, pero si desean restringir la etiqueta a cuestiones estrictamente de lenguaje, siéntanse libres de eliminarla, y me gustaría saberlo. Gracias :) – sarnold

Respuesta

66

Necesitará clang 3.3 para usar el conjunto de características más relevantes de C++ 11. Lea C++ Support in Clang para obtener la lista completa de características compatibles actualizadas. Se afirma que Clang 3.3 tiene la característica C++ 11 completa.

línea de comandos de Sonido metálico es compatible con gcc lo que tiene que permitir a C++ 11 de soporte a través del interruptor de línea de comandos followinf

-std=c++11 

También hay un montón de post-C++ 11 características (como decltype (automático), inicializadores de miembros y agregados) que son compatibles con Clang 3.3. Utilice este modificador de línea de comandos para que puedan

-std=c++1y 
+2

Lo que hace que el punto que lamentablemente esta página no está actualizada ... Voy a plantear este problema en la lista: x –

+3

Es, pero hay un problema que hace que no actualice el caché ... Así que solo Ctrl + R y lo obtendrás. – Klaim

+4

Si está utilizando clang/llvm en Mac, también deberá agregar -stdlib = libC++ (además del distintivo -std = C++ 11) para acceder a la mayoría de las características, ya que no están disponibles en el antiguo libstdC++. Pero ten cuidado: obtendrás incoherencias al pasar objetos estándar a bibliotecas vinculadas con libstdC++ (por ejemplo, si usas boost que no has compilado manualmente con libC++) – kamjagin

15

Aquí está la siempre lista actualizada de las funciones compatibles sonido metálico:

http://clang.llvm.org/cxx_status.html

Para activar C++ 11, hay que añadir -std = C++ 11 en sus llamadas clang, como para gcc. Si utiliza un IDE que tenga conocimiento de clang o conocimiento de gcc, hay una opción de configuración de proyecto específica disponible para hacerlo.

Cuestiones relacionadas