compiler compile c++ g++ ubuntu-14.04 c++14

compile - Compilar el código 14 de C++ con g++



gcc (3)

Estoy usando g ++ 4.8.4 en Ubuntu 14.04 LTS. Cuando intento compilar con ''-std = c ++ 14'', aparece este error:

g++: error unrecognized command line option ''-std=c++14''

Compilar con ''-std = c ++ 11'' funciona bien, así que no estoy seguro de lo que está pasando. ¿Todavía no tiene g ++ compatibilidad con C ++ 14? ¿Estoy usando una opción de línea de comando incorrecta?

Utilicé "sudo apt-get install g ++", que debería recuperar automáticamente la última versión, ¿es correcto?


G ++ es compatible con C ++ 14 tanto vía -std=c++14 como -std=c++1y . Este último era el nombre común para el estándar antes de que se supiera en qué año sería lanzado. En las versiones anteriores (incluida la suya), solo se acepta esta última, ya que todavía no se conocía el año de lanzamiento cuando se lanzaron esas versiones.

Utilicé "sudo apt-get install g ++", que debería recuperar automáticamente la última versión, ¿es correcto?

Instala la última versión disponible en los repositorios de Ubuntu, no la última versión que existe.

La última versión de GCC es 5.2.


La -std=c++14 no es compatible con GCC 4.8. Si desea utilizar las funciones de C ++ 14, debe compilar con -std=c++1y . Usando godbolt.org parece que la versión más antigua para soportar -std=c++14 es GCC 4.9.0 o Clang 3.5.0


Para gcc 4.8.4 necesita usar -std=c++1y en versiones posteriores, parece que comenzar con 5.2 puede usar -std=c++14 .

Si miramos los documentos en línea de gcc podemos encontrar los manuales para cada versión de gcc y podemos ver yendo a Dialect options for 4.9.3 en el manual de GCC 4.9.3 que dice:

''c ++ 1y''

La próxima revisión de la norma ISO C ++, tentativamente planificada para 2014. El soporte técnico es altamente experimental, y seguramente cambiará de manera incompatible en lanzamientos futuros.

Hasta 4.9.3 , tenía que usar -std=c++1y mientras que las opciones de gcc 5.2 dicen:

''c ++ 14'' ''c ++ 1y''

El 2014 ISO C ++ estándar más enmiendas. El nombre ''c ++ 1y'' está en desuso.

No me queda claro por qué aparece en Options Controlling C Dialect pero así es como se organizan actualmente los documentos.