Pregunta

Como muchos de nosotros sabemos (y muchos, muchos más no), C ++ se encuentra actualmente en fase de redacción final para la próxima revisión de la Norma Internacional, que se publicará en unos 2 años. Actualmente hay borradores y documentos disponibles en el sitio web del comité . Se están agregando todo tipo de nuevas características, siendo los conceptos y lambdas más importantes. Hay un artículo de Wikipedia muy completo con muchas de las nuevas funciones. GCC 4.3 y posterior implementan algunas características de C ++ 0x .

En cuanto a las nuevas características, realmente me gustan los rasgos de tipo (y los conceptos apropiados), pero mi líder definitivo son las plantillas variadas. Hasta 0x, las largas listas de plantillas han involucrado a Boost Preprocessor generalmente y son muy desagradables de escribir. Esto hace las cosas mucho más fáciles y permite que las plantillas C ++ 0x sean tratadas como un lenguaje perfectamente funcional usando plantillas variadas. Ya he escrito un código muy bueno con ellos, ¡y no puedo esperar para usarlos más a menudo!

Entonces, ¿qué características estás esperando más ansiosamente?

¿Fue útil?

Solución

auto palabra clave para inferencia de tipo variable

Otros consejos

Lambdas y listas de inicializadores.

Además, los cambios para facilitar la incorporación de C ++ en un modelo de recolección de basura, parecen bastante interesantes. Quizás C ++ 1x realmente traerá la recolección de basura, pero 0x / 10 simplemente configura las cosas para la eventualidad.

Quiero referencias de valores.

Todas las demás funciones nuevas son cosas sin las que podríamos vivir fácilmente (por desgracia, funciones). Sin embargo, la falta de valores en C ++ hasta ahora ha provocado que cientos de autores de bibliotecas de plantillas tengan que & Quot; hackear & Quot; alrededor del problema de referencia Rvalue roto.

¡Plantillas variadas! (¡Lo que combinado con referencias de valor r nos da un reenvío perfecto!)

Hilos y atómicos.

Con procesadores multinúcleo ahora la norma C ++ 0x debería haber sido C ++ 07.

G.

enumeraciones fuertemente tipadas obtengo mi voto. Pascal solo los ha tenido durante unos 40 años, por lo que es bueno ver que C ++ finalmente se esté poniendo al día.

Sin embargo, la publicación del estándar no es realmente un evento. Lo que es mucho más importante es cuando las características que desea utilizar son compatibles de manera total y confiable con las cadenas de herramientas del mundo real. Hay personas que parecen disfrutar realmente escribiendo código compatible con los estándares que no se compila en ningún compilador conocido. Buena suerte a ellos.

  1. Tiene que ser la incorporación de algunas de las bibliotecas Boost (shared_ptr < > y enlazar en la parte superior de la lista)

  2. El control sobre la instanciación de plantillas finalmente debería resolver el problema de los enormes tiempos de compilación y hacer que sea realmente factible usar código de plantilla moderno en proyectos grandes.

  3. Plantilla typedefs

Muchas otras cosas pequeñas pero importantes, pero sí importan en el código de producción.

Sin duda conceptos para mí. Pero las listas de inicializadores, las lambdas y las plantillas variadas son el segundo lugar.

No puedo decidir entre Tipo de puntero nulo , < a href = "http://en.wikipedia.org/wiki/C%2B%2B0x#Tuple_types" rel = "nofollow noreferrer"> Tipos de tupla , o Regex . 'Foreach' también está ahí arriba. 'Punteros inteligentes' no hace falta decir ... :-)

Básicamente, estoy ansioso por la actualización.

Personalmente, creo que el uso intensivo del tipo de puntero nulo atrapará muchos errores. Las tuplas son excelentes para tratar con datos relacionales. Un montón de cosas geniales.

No es grande, pero me encanta la idea de un verdadero nullptr . Debería haber sido una palabra clave desde el git-go.

Cierres para mí.

palabra clave automática

Lambdas y Conceptos

Paréntesis angular en declaraciones de plantillas anidadas.

Así podré escribir

std::vector<std::vector<int>> a;

en lugar de lo horrible

std::vector<std::vector<int> > a;

La sintaxis de iteración for (auto x : collection) es genial, creo ... literalmente reduce el tamaño de muchos encabezados de bucle en un factor de 4 o más (¡los tipos de iterador son a menudo ... detallados)!

También significa que no tiene que desreferenciar el iterador en el cuerpo del bucle (con un bucle iterador tradicional, siempre debe usar *i o i->... para obtener el valor del elemento, pero aquí puede usar x), lo que en algunos casos hace que el código se vea mucho mejor.

unicode, multihilo, hash_tables, punteros inteligentes y expresiones regulares.

ps: Me pregunto por qué simplemente no pueden hacer una revisión del código gr8 y aceptar todas las librerías de impulso y tr1 en los estándares y hacer la vida más fácil para todos. Todo lo que tendrían que resolver es acordar un modelo de recolección de basura opcional que funcione.

Punteros inteligentes. Realmente hace un mundo de diferencia no tener que gestionar explícitamente la memoria de objetos asignados en el montón.

Obviamente todavía necesita & "; saber lo que está haciendo &"; pero en mi experiencia ha disminuido el número de errores relacionados con la memoria al menos un orden de magnitud en el software que he trabajado con.

La sintaxis va de mal en peor.

Las plantillas y lambdas variables son agradables, aunque desafortunadamente la sintaxis de ambas es bastante objetable.

Me gusta constexpr especialmente en combinación con plantillas variadas y literales definidos por el usuario, finalmente podemos tener literales binarios y muchas otras cosas.

obj.bitmask |= 00001010B; 

REGEX !! y bibliotecas de programación paralelas, aunque todavía no conozco las características de todas ellas.

Literales de cadena sin formato ! Pensé que los bloques de cadena tipo pitón eran increíbles, ¡pero estaba equivocado! En C ++ 0x, los literales de cadena sin formato son increíblemente útiles para el formato de texto. ¡Los lenguajes de marcado se pueden escribir directamente en su fuente!

por el momento me ha gustado mucho C ++ 0x con el que he jugado:

  • nullptr
  • static_assert
  • lambdas
  • shared_ptr y weak_ptr
  • unique_ptr
  • decltype y auto

No he intentado <regexp> ... pensé que era una gran idea ... pero ni siquiera me tomé el tiempo para mirarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top