2011-12-23 21 views
11

He descargado y compilado gcc 4.6.2. Encuentro que para las características de C++ 11, la opción de línea de comando -std=c++0x sigue siendo necesaria. ¿Porqué es eso? ¿No se supone que es compatible por defecto?¿Por qué es necesario "-std = C++ 0x" para g ++ 4.6.2?

$ g++ --version 
    g++ (GCC) 4.6.2 
    Copyright (C) 2011 Free Software Foundation, Inc. 
    This is free software; see the source for copying conditions. There is NO 
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+1

Interesante pregunta. Otros compiladores (VC10) eligieron incluir las nuevas características por defecto. Realmente me pregunto por qué tomaron caminos diferentes aquí. – ereOn

+4

Estoy más molesto por el hecho de que el valor predeterminado ni siquiera es '-std = C++ 98' –

+0

Keep It Simple, Stupid. ¿Quieres usar otro estándar? Especifíquelo O incluso siempre especifique el estándar a usar. Si eso no es de su gusto, use un IDE que lo configurará automáticamente. O reutilice un archivo de configuración adicional de Makefile. – Geoffroy

Respuesta

11

Debido

  • C++ 11 es sólo 4 meses de edad y apoyo a la misma está lejos de ser completa o probado
  • cambiar el valor por defecto y sin un gran anuncio y fase de preparación para personas no es agradable
  • No está claro si el valor predeterminado cambiará alguna vez (ver -std = C99).
+0

Y no lo olvidemos que la serie GCC 4.6 tiene casi 9 meses, y que no habrían hecho cambios importantes como ese menos de 5 meses antes de eso. (La versión 4.6.2 puede no ser tan antigua, pero solo se trata de correcciones de errores). – ams

+1

@ams: De hecho, lo tomé como obvio, pero probablemente sea útil mencionarlo. – PlasmaHH

2

Todavía se necesita, y probablemente se quedará de esta manera en el futuro previsible, porque C++11 has incompatibilities with C++03. Cambiar G ++ para compilar C++ 11 de forma predeterminada romperá una gran cantidad de código existente.

+2

Realmente no * mucho * del código existente.El comité hizo un buen trabajo para minimizar la cantidad de código existente que se rompe. –

+2

@ R.MartinhoFernandes, los codificadores hicieron un gran trabajo al contrario! –

Cuestiones relacionadas