2009-06-02 18 views
5

La mayoría de los compiladores already support C++0x. ¿Has empezado a usar C++ 0x o estás esperando la definición de x? Tengo que hacer una refacturación de mi código; ¿Debería comenzar a usar las nuevas características?¿Has empezado a usar C++ 0x?

+13

No, todavía no hay CUALQUIER compilador que soporte completamente C++ 0x. Varios compiladores han implementado un SUBSET parcial de las características de C++ 0x, pero no casi todo. Además, el estándar aún no está terminado y podría cambiar. –

+1

Se están quedando sin tiempo antes de que tengan que cambiarle el nombre C++ 1x. –

+5

Será C++ 0a si se retrasa –

Respuesta

8

C++ 0x todavía no es un estándar completo. Es probable que haya muchas revisiones antes de que se publique un estándar internacional aceptado. Así que todo depende, ¿para qué está escribiendo el código? Si se trata de una tarea de trabajo, me quedaría con C++ normal, espere a que se establezca el estándar y otorgue a la comunidad de programación el tiempo que lleva ajustarse. No refactorices el código que realmente necesitas implementar, puede darte un montón de problemas.

Sin embargo, creo que C++ 0x es genial para jugar y también no está de más saber que esté familiarizado con la sintaxis cuando 0x es aceptado globalmente.

+3

El plan es que la norma se publique a finales de este año, y no se esperan muchas revisiones. Ya sacaron un borrador y lo revisaron una o dos veces. Más adelante este año, van a someterlo a votación en ISO, y se espera que pase sin problemas. – jalf

3

Retengo la redacción del código de producción hasta '0x + y, donde y es cuando eliminan los errores del compilador y lo ponen en cumplimiento estándar (cualquiera que sea el estándar).

¿Pero para el desarrollo? Lo uso para jugar, escribir project euler, etc. Lo uso en presentaciones y grupos de noticias también.

1

Comenzaré a usarlo cuando Visual Studio TOTALMENTE lo admita. En este momento VS10 solo es compatible con algunas funciones.

+0

También pensé de esa manera. Pero esperar a que la implementación sea completa podría tomar un buen tiempo (Mi opinión es que esto llevará años y tal vez habrá algunas características menores que rara vez se utilizarán y que nunca se implementarán en algunos compiladores). Por lo tanto, usaré todas las características que están disponibles en todos los compiladores involucrados. (Desgraciadamente tenemos que usar GCC 3.4.5 para nuestro desarrollo integrado: - ((() – mmmmmmmm

4

He comenzado a usar nullptr, usando #define nullptr 0 para aquellos compiladores (es decir, la mayoría) que aún no lo admiten.

+0

+1: actualmente estoy pensando en hacer lo mismo. – mmmmmmmm

+0

Haciendo lo mismo. –

1

Todavía estamos en el proceso de cambiar de VS6 a VS 2005. Probablemente no usemos compiladores C++ 0x exclusivamente para trabajos nuevos hasta finales de 201x.

4

Desde el enlace que ha proporcionado, parece que realmente quiere decir TR1, no realmente C++ 0x. Y , estoy usando la mayoría de las nuevas bibliotecas TR1 desde hace bastante tiempo, porque muchas de ellas son antiguas bibliotecas Boost.

Y solo puedo alentar a todos a usarlos también.

3

Hay muy pocos compiladores que admitan algo. En realidad, VS solo admite bibliotecas TR1, gcc admite algunas características como varialat templatres, rvalue, auto y algunas más. El compilador de Intel tiene algunos.

sobre todo me empezó a utilizar las plantillas variadic como:

#ifdef HAvE_VARIADIC 
template<typename... Args> 
void format(std::string,Args... args); 
#else 
template<typename T1> 
void format(std::string,T1 p1); 
template<typename T1,typename T2,> 
void format(std::string,T1 p1,T2 p2); 
... 
template<typename T1,typename T2,...,typename T10> 
void format(std::string,T1 p1,T2 p2,..., T10 p10); 
#endif 
2

Hemos jugado con C++ 0x mucho y ahora, cuando gcc apoya algunas de las características que vamos a utilizar tan pronto como estén disponibles. La razón es simple: con la palabra clave auto ahorra mucho tipeo, con las referencias de valor se obtiene un aumento del rendimiento y con listas de inicializadores y plantillas variadas menos tipeo y código mucho más legible.

En realidad, los principales objetivos de C++ 0x estándar también son nuestros objetivos, ya que tendremos ventajas para nuestros competidores con estas características. Es por eso que vamos a usarlos sin esperar nada. Por supuesto, si necesita compatibilidad multiplataforma, este paso no es aceptable. En caso de que no te importe, úsalo de inmediato y solo podrás ganar.

2

Sí, ya estoy usando C++ 0x y liberando bibliotecas y código de código abierto. Todos mis futuros proyectos de código abierto en C++ se escribirán en esta variante.¡Después de usar los parámetros de plantilla variadic y decltype/auto no puedo volver atrás!