descargar - ¿Qué característica de C++ 0x tendrá el mayor impacto?
c++17 descargar (12)
¿Cómo será el desarrollo cotidiano de C ++ en unos pocos años? ¿Qué características de C ++ 0x cambiarán más el desarrollo de C ++?
¿En qué orden debo concentrarme aprendiendo estas nuevas características?
Cambiamos a 2010 hace aproximadamente un mes. Las dos cosas más comunes que hemos usado son auto y lambda. Las referencias de Rvalue me han permitido hacer muchas cosas que antes no eran posibles, pero en el uso cotidiano no se utilizan AS como lambda y auto.
Instalaciones estándar para enhebrado y sincronización.
Las expresiones regulares como una biblioteca estándar - usted sabe que las necesita.
Personalmente creo que la semántica de movimiento (y las referencias de valores en general) son el cambio más importante, a la par de hilos / bloqueos / atómicos. Todo lo demás es, más o menos, la simplificación de la sintaxis o la estandarización de soluciones comunes de terceros: podemos escribir funtores cuando necesitamos lambdas y tenemos numerosas bibliotecas de expresiones regulares. Incluso por la falta de operaciones atómicas, había algunas soluciones, pero NO había constructores de movimiento / operadores de asignación de movimiento.
Ser capaz de mover objetos cambia toda la percepción del lenguaje para mí. A pesar de que teníamos RVO y el truco de cambiar a temporal para emular algo de eso ya, es difícil imaginar cómo cambia la vida cuando esto es parte de la vida cotidiana. No es solo ofstream("log.txt") << "Hi!";
, o los algoritmos STL, mucho más rápidos, es una forma completamente nueva de pasar datos entre funciones.
Rango de bucles for-based.
for (int x: numbers) std::cout << x << " ";
¡Hurra!
Soporte de Unicode. No más adoquines y trucos para obtener el manejo correcto de los caracteres Unicode: ahora el idioma es totalmente compatible con el estándar Unicode.
auto
, lambdas, y punteros inteligentes.
Este es un gran artículo sobre nuevas características. Explicación del nuevo estándar de C ++ (C ++ 0x) y su implementación en VC10.
La palabra clave auto Para la deducción automática de tipo de datos (en tiempo de compilación), dependiendo de la inicialización.
La palabra clave decltype Para deducir el tipo de datos de una expresión o una variable automática
La palabra clave nullptr puntero nulo ahora se promueve, ¡y se le ha otorgado una palabra clave!
La palabra clave static_assert Para las aserciones de tiempo de compilación. Útil para plantillas y validaciones que no se pueden hacer usando #ifdef.
Expresiones Lambda Funciones definidas localmente. Hereda características de punteros de función y objetos de clase (functores).
Tipos de retorno de seguimiento Principalmente útil cuando el tipo de retorno de la función de plantilla no se puede expresar.
Referencias de valor R Mover la semántica: utilización de recursos antes de que se destruya un objeto temporal.
También se describen nuevas características del nuevo compilador de Microsoft.
Automático en los bucles for, y lambdas para el algoritmo, comenzaré con un uso masivo de for_each.
Automático porque la gente lo usará en exceso.
Conceptos Por fin, podremos revisar las plantillas antes de crear una instancia de ellas, y cuando las instalemos de manera incorrecta, recibiremos mensajes de error razonables. Whoops! El comité de C ++ 0X no pudo ponerse de acuerdo y finalmente los echó. Ah bueno, espera a C ++ 1X ...
Lambdas , porque finalmente introducen medios razonables para aprovechar los beneficios de la programación funcional.