2011-10-19 9 views
8

¿Cuáles son las características de C++11 que tienen suficiente madurez que puedo comenzar a utilizar de forma segura en mis proyectos. Estoy hablando de GCC principalmente rara vez necesito Visual Studio. y obviamente no quiero incluir una característica en mi código que requiera una reescritura después de algunos meses. y debería incluso comenzar a usar estas características en este mismo comienzo? porque lo que sea que hagamos en su mayoría no es c++11 dependent, también podemos hacer todo y todas las cosas en los métodos de la vieja escuela. Entonces, ¿deberíamos incluso comenzar a usar las características de C++ 11 en esta etapa inicial?Qué característica estable de C++ 11 se puede usar con seguridad

+4

A qué versión de GCC se dirige, dónde se ejecutará este código, qué utilizan los sistemas de destino ... Esta página detalla cuándo las características están disponibles en las versiones de GCC: http://gcc.gnu.org/projects/cxx0x. html – birryree

+0

Estoy usando MinGW en Windows. He comprobado esa versión. y en Linux tengo 4.3.2 sin embargo, no sé dónde me ubicaré la próxima vez para el trabajo. –

+0

son esas características abiertas a cambios? o son estables? –

Respuesta

8

El estándar C++ 11 finalmente se hace y se publica, por lo que no habrá más cambios. Las implementaciones todavía se retrasan un poco y pueden implementar versiones ligeramente más antiguas de C++ 0x, pero es probable que no noten mucha diferencia cuando se actualicen.

C++ 11 no es perfectamente compatible con versiones anteriores, por lo que lo primero que debe hacer es comenzar a desarrollar teniendo en cuenta la compatibilidad con C++ 11. GCC tiene una bandera de advertencia, "-WC++ 0x-compat", para ayudar con esto. Las incompatibilidades son bastante pequeñas, pero esto debería revelar cualquier cosa que sea un problema.

Una gran incompatibilidad es que el ABI de libstdC++ cambia con la mudanza a C++ 11, por lo que también deberá asegurarse de que puede ocuparse de eso.

Una vez que sepa que es seguro moverse, simplemente comience a construir en modo C++ 11. Puede adoptar gradualmente las funciones de C++ 11 que le resulten útiles a medida que escribe un nuevo código o cambia el código anterior. También puede considerar buscar usos de la funcionalidad obsoleta, como las antiguas especificaciones de excepción, y reemplazarlas con las nuevas.

Hay muchas cosas nuevas, eche un vistazo a la norma si puede obtenerla o alguna documentación en línea. Encuentro que la mayoría de las cosas realmente interesantes que quiero usar directamente están en la biblioteca. Desafortunadamente, parece ser que las implementaciones actuales todavía tienen más retraso.

0

Es posible que desee visitar:

http://gcc.gnu.org/projects/cxx0x.html

Este enlace da el soporte C++ 0x en diferentes versiones del CCG.

Sugiero que use C++ 11 ahora (simplemente agregando -std = C++ 0x en la línea de comando de GCC). Si tuvo suerte, entonces nada cambiaría en su código. Incluso si no usa ninguna característica de C++ 11, aún puede beneficiarse de las mejoras de rendimiento provenientes de las referencias rvalue y la semántica de movimiento.

Cuestiones relacionadas