Namespaces
Variants

History of C++

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
History of C++

Contenidos

C++ Temprano

  • 1979: C con Clases implementado por primera vez
  1. 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++)
  2. 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
  1. Nuevas características: virtual functions , function and operator overloading , references , new and delete operators, the keyword const , scope resolution operator
  2. 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
  1. 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
  2. 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.

  1. 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)
  1. 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
  2. Adiciones a la biblioteca: localizaciones , bitset , valarray , auto_ptr , cadena parametrizada , flujos de E/S , y números complejos .
  3. 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 .

Informes de Defectos corregidos en C++03 (92 núcleo, 125 biblioteca)

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.

Este TR es una extensión de biblioteca de C++, que añade lo siguiente a la biblioteca estándar de C++:

  1. 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 .
  2. 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 tipo long 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.

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

Artículo Principal: C++11

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++

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 .

Período C++14

Artículo Principal: C++14

Revisión menor del estándar de C++

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.

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.

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.

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.

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.

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

Artículo Principal: C++17

La revisión principal del estándar de C++ después de C++11

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 ) ;

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 .

Este TS extiende la biblioteca de C++ para incluir redes TCP/IP basadas en boost.asio .

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.

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

Artículo Principal: C++20

La revisión principal del estándar de C++ después de C++17

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

Artículo Principal: C++23

La próxima revisión principal del estándar C++

Véase también

Documentación de C para Historia de C

Enlaces externos

1. Una Historia de C++: 1979-1991
2. Evolucionando un lenguaje en y para el mundo real: C++ 1991-2006
3. Prosperando en un mundo lleno y cambiante: C++ 2006-2020
4. Fundación de C++ Estándar
5. C++ en Wikipedia
6. Comité de Estándares de C++