History of C++
Table des matières |
C++ Primitif
- 1979 : C avec Classes première implémentation
- Nouvelles fonctionnalités : classes , member functions , derived classes , compilation séparée, public and private access control , friends , vérification de type des arguments de fonction, default arguments , inline functions , overloaded assignment operator , constructors , destructors , f ( ) identique à f ( void ) , fonction d'appel et fonction de retour (fonctionnalités de synchronisation, absentes en C++)
- Bibliothèques : la bibliothèque de tâches concurrentes (absente en C++)
- 1982 : Manuel de référence de C with Classes publié
- 1984 : C84 implémenté, manuel de référence publié
- 1985 : Cfront 1.0
-
Nouvelles fonctionnalités :
fonctions virtuelles
, surcharge de fonctions et
d'opérateurs
,
références
,
new
et
delete
,
le mot-clé
const, opérateur de résolution de portée -
Ajouts à la bibliothèque :
nombres complexes
,
string(version AT&T), flux d'E/S
- 1985 : Le langage de programmation C++, 1ère édition
- 1986 : Le document "whatis?" décrivant les objectifs de conception restants, incluant l'héritage multiple, la gestion des exceptions et les templates.
- 1987 : Prise en charge de C++ dans GCC 1.15.3
- 1989 : Cfront 2.0
- Nouvelles fonctionnalités : héritage multiple , pointeurs vers membres , accès protégé , liaison de type sûre, classes abstraites , fonctions membres statiques et fonctions membres qualifiées const , surcharges spécifiques à la classe pour new et delete
- Ajouts à la bibliothèque : manipulateurs d'E/S
- 1990 : Le Manuel de Référence C++ Annoté
Ce livre décrivait le langage tel que conçu, incluant certaines fonctionnalités qui n'étaient pas encore implémentées. Il a servi de standard de facto jusqu'à l'ISO.
- Nouvelles fonctionnalités : namespaces , exception handling , nested classes , templates
- 1991 : Cfront 3.0
- 1991 : The C++ Programming Language, 2 e édition
C++ Standard
- 1990 : Comité ANSI C++ fondé
- 1991 : Comité ISO C++ fondé
- 1992 : STL implémentée en C++
Période C++98/03
- 1998 : C++98 (ISO/CEI 14882:1998)
-
Nouvelles fonctionnalités : RTTI (
dynamic_cast,typeid), types de retour covariants , opérateurs de conversion ,mutable,bool, déclarations dans les conditions, instanciations de templates , templates membres , export - Ajouts à la bibliothèque : locales , bitset , valarray , auto_ptr , chaîne de caractères template , flux d'E/S , et nombres complexes .
- Basé sur STL : conteneurs , algorithmes , itérateurs , objets fonctionnels
- 1998 : The C++ Programming Language, 3ème édition
- 1999 : Boost fondé par les membres du comité pour produire de nouvelles bibliothèques candidates de haute qualité pour la norme.
- 2003 : C++03 (ISO/IEC 14882:2003)
Il s'agissait d'une révision mineure, destinée à être un peu plus qu'un correctif technique. Cette révision introduit la définition de value initialization .
| Rapports de défaut corrigés dans C++03 (92 noyau, 125 bibliothèque) |
|---|
|
- 2006 : Rapport technique sur la performance (ISO/IEC TR 18015:2006) ( Boutique ISO ) ( Ébauche 2006 )
Ce TR a examiné les coûts des diverses abstractions C++, a fourni des conseils de mise en œuvre, a discuté de l'utilisation de C++ dans les systèmes embarqués et a introduit
<hardware>
l'interface vers
<iohw.h>
du C ISO/IEC TR 18037:2008.
- 2007 : Extension de bibliothèque TR1 (ISO/IEC TR 19768:2007) ( Boutique ISO ) ( Ébauche 2005 ).
Ce TR est une extension de bibliothèque C++, qui ajoute les éléments suivants à la bibliothèque standard C++ :
- De Boost : reference_wrapper , Pointeurs intelligents , Fonction membre , result_of , bind , function , Traits de type , Génération aléatoire , Fonctions mathématiques spéciales, tuple , array , Conteneurs non ordonnés (incluant hash ), et Expressions régulières .
-
De C99 : fonctions mathématiques de
<math.h>nouvelles dans C99, classe de caractères blancs , Environnement à virgule flottante , hexfloat Manipulateur d'E/S, types entiers de taille fixe , le typelong long, va_copy , les familles de fonctions snprintf() et vfscanf() , et les spécificateurs de conversion C99 pour les familles de fonctions printf() et scanf() .
L'intégralité de TR1, à l'exception des fonctions spéciales, a été incluse dans C++11, avec des modifications mineures.
- 2010 : Fonctions mathématiques spéciales (ISO/IEC 29124:2010) ( Boutique ISO ) ( Ébauche 2010 )
Cette norme internationale est une extension de la bibliothèque standard C++, qui ajoute les fonctions spéciales faisant partie de TR1, mais non incluses dans C++11 : intégrales elliptiques, intégrale exponentielle, polynômes de Laguerre, polynômes de Legendre, polynômes d'Hermite, fonctions de Bessel, fonctions de Neumann, fonction bêta et fonction zêta de Riemann. Cette norme a été fusionnée dans C++17 .
Période C++11
- 2011 : C++11 (ISO/IEC 14882:2011) ( Boutique ISO ) ( Ébauche post-publication 2012 ).
Un grand nombre de modifications ont été introduites pour normaliser les pratiques existantes et améliorer les abstractions disponibles pour les programmeurs C++
- 2011 : Spécification technique sur les nombres à virgule flottante décimale (ISO/IEC TR 24733:2011) ( Boutique ISO ) ( Ébauche 2009 )
Ce TR implémente les types de nombres flottants décimaux de la norme IEEE 754-2008 pour l'arithmétique en virgule flottante :
std::decimal::decimal32
,
std::decimal::decimal64
, et
std::decimal::decimal128
.
- 2012 : The Standard C++ Foundation fondée
- 2013 : The C++ Programming Language, 4ᵉ édition
Période C++14
- 2014 : C++14 ( Boutique ISO ) ( Boutique ANSI ) ( Ébauche finale 2014 )
Révision mineure de la norme C++
- 2015 : Bibliothèque de système de fichiers TS (ISO/IEC TS 18822:2015) ( Boutique ISO ) ( Ébauche 2014 )
Ce TS est une extension expérimentale de la bibliothèque C++ qui spécifie une bibliothèque de système de fichiers basée sur boost.filesystem V3 (avec quelques modifications et extensions). Ce TS a été fusionné dans C++17.
- 2015 : Extensions pour le TS de Parallélisme (ISO/IEC TS 19570:2015) ( Boutique ISO ) ( Ébauche 2015 )
Cette TS normalise les API parallèles et vectorielles-parallèles pour tous les algorithmes de la bibliothèque standard, et ajoute également de nouveaux algorithmes tels que
reduce
,
transform_reduce
, ou
exclusive_scan
. Cette TS a été intégrée dans C++17.
- 2015 : Extensions pour Transactional Memory TS (ISO/IEC TS 19841:2015) ( ISO Store ) ([ Ébauche 2015 )
Cette TS étend le langage de base du C++ avec des blocs synchronisés et atomiques, ainsi que des fonctions transaction-sécurisées, qui implémentent la sémantique de la mémoire transactionnelle.
- 2015 : Extensions pour la bibliothèque Fundamentals TS (ISO/IEC TS 19568:2015) ( ISO Store ) ( Ébauche 2015 )
Cette spécification technique ajoute plusieurs nouveaux composants à la bibliothèque standard C++ : optional , any , string_view , sample , search , apply , allocateurs polymorphes , et templates de variables pour les traits de type. Cette spécification technique a été intégrée dans C++17.
- 2015 : Extensions pour Concepts TS (ISO/IEC TS 19217:2015) ( ISO Store ) ( Ébauche 2015 )
Cette spécification technique étend le langage cœur du C++ avec les concepts (exigences de types nommées) et les contraintes (limites sur les types autorisés dans les déclarations de templates, fonctions et variables), ce qui facilite la métaprogrammation et simplifie les diagnostics d'instanciation de templates, voir concepts . Cette spécification technique a été intégrée dans le C++20, avec certaines omissions.
- 2016 : Extensions pour Concurrency TS (ISO/IEC TS 19571:2016) ( Boutique ISO ) ( Ébauche 2015 )
Cette spécification technique étend la bibliothèque C++ pour inclure plusieurs extensions à std::future , les latches et les barriers , ainsi que les pointeurs intelligents atomiques.
Période C++17
- 2017 : C++17 ( Boutique ISO ) ( Boutique ANSI ) ( n4659 ébauche finale 2017-03-21 )
La révision majeure de la norme C++ après C++11
- 2017 : Extensions pour Ranges TS (ISO/IEC TS 21425:2017) ( Boutique ISO ) ( Ébauche 2017 )
Cette TS étend la bibliothèque C++ pour inclure les ranges , une nouvelle abstraction plus puissante pour remplacer les paires d'itérateurs, ainsi que les vues de ranges, les ranges sentinelles, les projections pour les transformations à la volée, de nouveaux adaptateurs d'itérateurs et algorithmes. Cette extension permet enfin de trier un vecteur avec sort ( v ) ;
- 2017 : Extensions pour Coroutines TS (ISO/IEC TS 22277:2017) ( Boutique ISO ) ( Ébauche 2017 )
Cette spécification technique étend le langage cœur du C++ et la bibliothèque standard pour inclure les coroutines sans pile (fonctions reprises). Cela ajoute les mots-clés co_await , co_yield , et co_return .
- 2018 : Extensions pour Networking TS (ISO/IEC TS 19216:2018) ( Boutique ISO ) ( Ébauche 2017 )
Cette TS étend la bibliothèque C++ pour inclure la mise en réseau TCP/IP basée sur boost.asio .
- 2018 : Extensions pour le modules TS (ISO/IEC TS 21544:2018) ( Boutique ISO ) ( Ébauche 2018 )
Cette TS étend le langage cœur du C++ pour inclure les modules. Cela ajoute les identifiants spéciaux module , import , et réintroduit le mot-clé export avec une nouvelle signification.
- 2018 : Extensions pour le parallélisme version 2 TS (ISO/IEC TS 19570:2018) ( Boutique ISO ) ( Ébauche 2018 )
Cette TS étend la bibliothèque C++ pour inclure deux nouvelles politiques d'exécution ( unseq et vec ), des algorithmes parallèles supplémentaires tels que reduction_plus ou for_loop_strided , des blocs de tâches pour le forking et joining de tâches parallèles, des types SIMD et des opérations sur ces types.
Période C++20
- 2020 : C++20 ( Boutique ISO ) (avant-projet final n4860 2020-03-31 )
La révision majeure de la norme C++ après C++17
- 2021 : TS sur la réflexion (ISO/IEC TS 23619:2021) ( Boutique ISO ) ( Ébauche 2020 )
Cette spécification technique étend le C++ avec les fonctionnalités pour inspecter les entités du programme telles que les variables, les énumérations, les classes et leurs membres, les lambdas et leurs captures, etc.
Développement futur
- Spécifications techniques expérimentales
- 2026 : C++ dernier projet n5008 (2025-03-15)
La prochaine révision majeure de la norme C++
Voir aussi
|
Documentation C
pour
Historique du C
|