History of C++
Contenidos |
C++ Temprano
- 1979: C con Clases implementado por primera vez
- Nuevas características: classes , member functions , derived classes , compilación separada, public and private access control , friends , verificación de tipos de argumentos de función, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) igual que f ( void ) , funciones de llamada y retorno (características de sincronización, no en C++)
- Bibliotecas: la biblioteca de tareas concurrentes (no en C++)
- 1982: Manual de referencia de C with Classes publicado
- 1984: C84 implementado, manual de referencia publicado
- 1985: Cfront 1.0
-
Nuevas características:
virtual functions
, function and
operator overloading
,
references
,
new
and
delete
operators,
the keyword
const, scope resolution operator -
Adiciones a la biblioteca:
complex number
,
string(versión AT&T), I/O stream
- 1985: El Lenguaje de Programación C++, 1ª edición
- 1986: El documento "whatis?" que documenta los objetivos de diseño restantes, incluyendo herencia múltiple, manejo de excepciones y plantillas.
- 1987: Soporte de C++ en GCC 1.15.3
- 1989: Cfront 2.0
- Nuevas características: herencia múltiple , punteros a miembros , acceso protegido , vinculación segura de tipos, clases abstractas , funciones miembro estáticas y calificadas con const , sobrecargas específicas de clase para new y delete
- Adiciones a la biblioteca: manipuladores de E/S
- 1990: El Manual de Referencia de C++ Anotado
Este libro describía el lenguaje tal como fue diseñado, incluyendo algunas características que aún no estaban implementadas. Sirvió como estándar de facto hasta la ISO.
- Nuevas características: namespaces , exception handling , nested classes , templates
- 1991: Cfront 3.0
- 1991: El Lenguaje de Programación C++, 2ª edición
C++ Estándar
- 1990: Comité ANSI C++ fundado
- 1991: Comité ISO C++ fundado
- 1992: STL implementado en C++
Período C++98/03
- 1998: C++98 (ISO/IEC 14882:1998)
-
Nuevas características: RTTI (
dynamic_cast,typeid), tipos de retorno covariantes , operadores de conversión ,mutable,bool, declaraciones en condiciones, instanciaciones de plantillas , plantillas miembro , export - Adiciones a la biblioteca: localizaciones , bitset , valarray , auto_ptr , cadena parametrizada , flujos de E/S , y números complejos .
- Basado en STL: contenedores , algoritmos , iteradores , objetos función
- 1998: The C++ Programming Language, 3rd edition
- 1999: Boost fundado por miembros del comité para producir nuevas bibliotecas candidatas de alta calidad para el estándar.
- 2003: C++03 (ISO/IEC 14882:2003)
Esta fue una revisión menor, destinada a ser poco más que un corrigendum técnico. Esta revisión introduce la definición de value initialization .
- 2006: TR de Rendimiento (ISO/IEC TR 18015:2006) ( ISO Store ) ( Borrador 2006 )
Este TR analizó los costos de varias abstracciones de C++, proporcionó orientación de implementación, discutió el uso de C++ en sistemas embebidos e introdujo
<hardware>
como interfaz para el
<iohw.h>
de ISO/IEC TR 18037:2008 de C.
- 2007: Extensión de biblioteca TR1 (ISO/IEC TR 19768:2007) ( Tienda ISO ) ( Borrador 2005 ).
Este TR es una extensión de biblioteca de C++, que añade lo siguiente a la biblioteca estándar de C++:
- De Boost: reference_wrapper , Punteros inteligentes , Función miembro , result_of , bind , function , Rasgos de tipo , Aleatorio , Funciones matemáticas especiales, tuple , array , Contenedores no ordenados (incluyendo hash ), y Expresiones regulares .
-
De C99: funciones matemáticas de
<math.h>que fueron nuevas en C99, clase de caracteres en blanco , Entorno de punto flotante , hexfloat Manipulador de E/S, tipos integrales de tamaño fijo , el tipolong long, va_copy , las familias de funciones snprintf() y vfscanf() , y los especificadores de conversión de C99 para las familias de funciones printf() y scanf() .
Todo TR1 excepto las funciones especiales fue incluido en C++11, con cambios menores.
- 2010: Funciones matemáticas especiales (ISO/IEC 29124:2010) ( ISO Store ) ( 2010 draft )
Este estándar internacional es una extensión de la biblioteca estándar de C++, que añade las funciones especiales que formaban parte de TR1, pero no fueron incluidas en C++11: integrales elípticas, integral exponencial, polinomios de Laguerre, polinomios de Legendre, polinomios de Hermite, funciones de Bessel, funciones de Neumann, función beta y función zeta de Riemann. Este estándar fue fusionado en C++17 .
Período C++11
- 2011: C++11 (ISO/IEC 14882:2011) ( Tienda ISO ) ( Borrador posterior a la publicación de 2012 ).
Se introdujo un gran número de cambios tanto para estandarizar prácticas existentes como para mejorar las abstracciones disponibles para los programadores de C++
- 2011: TR de coma flotante decimal (ISO/IEC TR 24733:2011) ( ISO Store ) ( borrador 2009 )
Este TR implementa los tipos de coma flotante decimal del estándar IEEE 754-2008 para Aritmética de Coma Flotante:
std::decimal::decimal32
,
std::decimal::decimal64
, y
std::decimal::decimal128
.
- 2012: The Standard C++ Foundation fundada
- 2013: The C++ Programming Language, 4th edition
Período C++14
- 2014: C++14 ( Tienda ISO ) ( Tienda ANSI ) ( borrador final 2014 )
Revisión menor del estándar de C++
- 2015: Biblioteca del sistema de archivos TS (ISO/IEC TS 18822:2015) ( ISO Store ) ( 2014 draft )
Este TS es una extensión experimental de la biblioteca de C++ que especifica una biblioteca de sistema de archivos basada en boost.filesystem V3 (con algunas modificaciones y extensiones). Este TS fue incorporado en C++17.
- 2015: Extensiones para Paralelismo TS (ISO/IEC TS 19570:2015) ( ISO Store ) ( Borrador 2015 )
Este TS estandariza la API paralela y vector-paralela para todos los algoritmos de la biblioteca estándar, así como añade nuevos algoritmos como
reduce
,
transform_reduce
, o
exclusive_scan
. Este TS fue incorporado en C++17.
- 2015: Extensiones para Transactional Memory TS (ISO/IEC TS 19841:2015) ( ISO Store ) ([ 2015 draft )
Este TS extiende el lenguaje núcleo de C++ con bloques sincronizados y atómicos, así como funciones transaccionalmente seguras, que implementan semánticas de memoria transaccional.
- 2015: Extensiones para Library Fundamentals TS (ISO/IEC TS 19568:2015) ( ISO Store ) ( 2015 draft )
Este TS añade varios componentes nuevos a la biblioteca estándar de C++: optional , any , string_view , sample , search , apply , polymorphic allocators , y variable templates para type traits. Este TS fue incorporado en C++17.
- 2015: Extensiones para Concepts TS (ISO/IEC TS 19217:2015) ( ISO Store ) ( Borrador 2015 )
Este TS extiende el lenguaje central de C++ con conceptos (requisitos de tipos nombrados) y restricciones (límites en los tipos permitidos en declaraciones de plantillas, funciones y variables), lo cual ayuda a la metaprogramación y simplifica los diagnósticos de instanciación de plantillas, consulte concepts . Este TS fue incorporado en C++20, con algunas omisiones.
- 2016: Extensiones para Concurrency TS (ISO/IEC TS 19571:2016) ( ISO Store ) ( 2015 draft )
Este TS extiende la biblioteca de C++ para incluir varias extensiones a std::future , latches y barriers , y punteros inteligentes atómicos.
Período de C++17
- 2017: C++17 ( Tienda ISO ) ( Tienda ANSI ) ( n4659 2017-03-21 borrador final )
La revisión principal del estándar de C++ después de C++11
- 2017: Extensiones para Ranges TS (ISO/IEC TS 21425:2017) ( ISO Store ) ( 2017 draft )
Este TS extiende la biblioteca de C++ para incluir ranges , una nueva y más poderosa abstracción para reemplazar pares de iteradores, junto con vistas de rangos, rangos centinela, proyecciones para transformaciones en tiempo real, nuevos adaptadores de iteradores y algoritmos. Esta extensión finalmente hace posible ordenar un vector con sort ( v ) ;
- 2017: Extensiones para Coroutines TS (ISO/IEC TS 22277:2017) ( ISO Store ) ( 2017 draft )
Este TS extiende el lenguaje núcleo de C++ y la biblioteca estándar para incluir corrutinas sin pila (funciones reanudables). Esto añade las palabras clave co_await , co_yield , y co_return .
- 2018: Extensiones para Networking TS (ISO/IEC TS 19216:2018) ( ISO Store ) ( 2017 draft )
Este TS extiende la biblioteca de C++ para incluir redes TCP/IP basadas en boost.asio .
- 2018: Extensiones para modules TS (ISO/IEC TS 21544:2018) ( ISO Store ) ( 2018 draft )
Este TS extiende el lenguaje núcleo de C++ para incluir módulos. Esto añade los identificadores especiales module , import , y reintroduce la palabra clave export con un nuevo significado.
- 2018: Extensiones para Paralelismo versión 2 TS (ISO/IEC TS 19570:2018) ( ISO Store ) ( Borrador 2018 )
Este TS extiende la biblioteca de C++ para incluir dos nuevas políticas de ejecución ( unseq y vec ), algoritmos paralelos adicionales como reduction_plus o for_loop_strided , bloques de tareas para bifurcar y unir tareas paralelas, tipos SIMD y operaciones sobre esos tipos.
Período C++20
- 2020: C++20 ( Tienda ISO ) (borrador final n4860 2020-03-31 )
La revisión principal del estándar de C++ después de C++17
- 2021: TS de Reflexión (ISO/IEC TS 23619:2021) ( Tienda ISO ) ( Borrador 2020 )
Este TS extiende C++ con las facilidades para inspeccionar entidades del programa como variables, enumeraciones, clases y sus miembros, lambdas y sus capturas, etc.
Desarrollo futuro
- Especificaciones técnicas experimentales
- 2026: C++ borrador más reciente n5008 (2025-03-15)
La próxima revisión principal del estándar C++
Véase también
|
Documentación de C
para
Historia de C
|