Recherche…


Introduction

En 1998, il y a eu une première publication du standard rendant C ++ un langage standardisé en interne. A partir de ce moment, C ++ a évolué, donnant lieu à différents dialectes du C ++. Sur cette page, vous trouverez un aperçu de toutes les différentes normes et de leurs modifications par rapport à la version précédente. Les détails sur l'utilisation de ces fonctionnalités sont décrits sur des pages plus spécialisées.

Remarques

Lorsque C ++ est mentionné, il est souvent fait référence à "la norme". Mais quelle est exactement cette norme?

C ++ a une longue histoire. Lancé en tant que petit projet par Bjarne Stroustrup au sein des Bell Labs, au début des années 90, il était devenu très populaire. Plusieurs sociétés créaient des compilateurs C ++ afin que les utilisateurs puissent exécuter leurs compilateurs C ++ sur un large éventail d’ordinateurs. Mais pour faciliter cela, tous les compilateurs concurrents devraient partager une définition unique de la langue.

À ce stade, le langage C avait été normalisé avec succès. Cela signifie qu'une description formelle de la langue a été écrite. Celle-ci a été soumise à l’American National Standards Institute (ANSI), qui a ouvert le document pour examen et l’a ensuite publié en 1989. Un an plus tard, l’Organisation internationale de normalisation , ISO, dérivé du grec isos, qui signifie égal.), A adopté la norme américaine en tant que norme internationale.

Pour C ++, il était clair dès le début qu'il y avait un intérêt international. Un groupe de travail au sein de l'ISO a été créé (connu sous le nom de GT21, au sein du sous-comité 22). Ce groupe de travail a rédigé une première norme vers 1995. Mais comme nous le savons les programmeurs, il n’ya rien de plus dangereux pour une diffusion planifiée que les fonctionnalités de dernière minute, et c’est aussi le cas pour C ++. En 1995, une nouvelle bibliothèque géniale nommée STL a fait surface et les personnes travaillant dans WG21 ont décidé d'ajouter une version allégée au brouillon C ++. Naturellement, les délais ont été dépassés et, trois ans plus tard, le document est devenu définitif. ISO est une organisation très formelle, de sorte que le standard C ++ a été baptisé avec le nom peu commercialisable de ISO / IEC 14882. Comme les normes peuvent être mises à jour, cette version exacte est connue sous le nom de 14882: 1998.

Et en effet, il y avait une demande de mise à jour de la norme. Le standard est un document très épais, qui vise à décrire exactement le fonctionnement des compilateurs C ++. Même une légère ambiguïté mérite d’être corrigée. En 2003, une mise à jour a été publiée en 14882: 2003. Cependant, cela n'a ajouté aucune fonctionnalité à C ++; les nouvelles fonctionnalités ont été programmées pour la deuxième mise à jour.

De manière informelle, cette deuxième mise à jour était connue sous le nom de C ++ 0x, car on ne savait pas si cela prendrait avant 2008 ou 2009. Eh bien, cette version a également été légèrement retardée, ce qui explique pourquoi elle est devenue 14882: 2011.

Heureusement, le GT21 a décidé de ne pas laisser cela se reproduire. C ++ 11 a été bien accueilli et a suscité un intérêt renouvelé pour C ++. Pour conserver cet élan, la troisième mise à jour est passée de la planification à la publication en 3 ans, pour devenir 14882: 2014.

Le travail ne s'est pas arrêté là non plus. La norme C ++ 17 a été proposée et le travail pour C ++ 20 a été démarré.

Projets de travail actuels

Toutes les normes ISO publiées sont disponibles à la vente auprès de la boutique ISO ( http://www.iso.org ). Les versions de travail des normes C ++ sont disponibles gratuitement pour le public.

Les différentes versions de la norme:

C ++ 11

Le standard C ++ 11 est une extension majeure du standard C ++. Vous trouverez ci-dessous un aperçu des modifications telles qu'elles ont été regroupées dans la FAQ isocpp avec des liens vers une documentation plus détaillée.

Extensions de langue

Caractéristiques générales

Des classes

  • = par défaut et = supprimer
  • Contrôle du déplacement et de la copie par défaut
  • Déléguer des constructeurs
  • Initialisateurs membres en classe
  • Constructeurs hérités
  • Contrôles de remplacement: remplacer
  • Contrôles de remplacement: final
  • Opérateurs de conversion explicite

Autres types

  • classe enum
  • long long - un entier plus long
  • Types entiers étendus
  • Unions généralisées
  • POD généralisé

Modèles

  • Modèles externes
  • Alias ​​de modèle
  • Modèles variadiques
  • Types locaux comme arguments de modèle

Concurrence

  • Modèle de mémoire de concurrence
  • Initialisation dynamique et destruction avec accès simultané
  • Stockage local

Fonctions linguistiques diverses

  • Quelle est la valeur de __cplusplus pour C ++ 11?
  • Suffixe type de syntaxe de retour
  • Prévenir le rétrécissement
  • Crochets à angle droit
  • static_assert assertions à la compilation
  • Littéraux de chaîne bruts
  • Les attributs
  • Alignement
  • Fonctions C99

Extensions de bibliothèque

Général

  • unique_ptr
  • shared_ptr
  • faiblesse_ptr
  • Collecte des ordures ABI
  • tuple
  • Caractères de type
  • fonction et lier
  • Expressions régulières
  • Utilitaires de temps
  • Génération de nombres aléatoires
  • Scalled allocators

Conteneurs et Algorithmes

  • Améliorations des algorithmes
  • Amélioration des conteneurs
  • unordered_ * conteneurs
  • std :: array
  • forward_list

Concurrence

C ++ 14

La norme C ++ 14 est souvent appelée correction de bogue pour C ++ 11. Il ne contient qu'une liste limitée de modifications dont la plupart sont des extensions des nouvelles fonctionnalités de C ++ 11. Vous trouverez ci-dessous un aperçu des modifications telles qu'elles ont été regroupées dans la FAQ isocpp avec des liens vers une documentation plus détaillée.

Extensions de langue

Extensions de bibliothèque

Déconseillé / Supprimé

C ++ 17

Le standard C ++ 17 est complet et a été proposé pour la normalisation. Dans les compilateurs avec support expérimental pour ces fonctionnalités, il est généralement appelé C ++ 1z.

Extensions de langue

Extensions de bibliothèque

C ++ 03

Le standard C ++ 03 traite principalement des rapports de défauts du standard C ++ 98. En dehors de ces défauts, il ne fait qu'ajouter une nouvelle fonctionnalité.

Extensions de langue

C ++ 98

C ++ 98 est la première version standardisée de C ++. Comme il a été développé en tant qu'extension de C, de nombreuses fonctionnalités qui séparent C ++ de C sont ajoutées.

Extensions linguistiques (en ce qui concerne C89 / C90)

  • Classes, classes dérivées, fonctions de membre virtuel, fonctions de membre const
  • Fonction surcharge, surcharge de l'opérateur
  • Commentaires sur une seule ligne (a été introduit dans la langue C avec la norme C99)
  • Les références
  • nouveau et supprimer
  • type booléen (a été introduit dans la langue C avec la norme C99)
  • des modèles
  • espaces de noms
  • des exceptions
  • moulages spécifiques

Extensions de bibliothèque

  • La bibliothèque de modèles standard

C ++ 20

C ++ 20 est la nouvelle norme de C ++, actuellement en développement, basée sur la norme C ++ 17. Ses progrès peuvent être suivis sur le site officiel ISO cpp .

Les fonctionnalités suivantes sont simplement ce qui a été accepté pour la prochaine version du standard C ++, ciblé pour 2020.

Extensions de langue

Aucune extension de langue n'a été acceptée pour le moment.

Extensions de bibliothèque

Aucune extension de bibliothèque n'a été acceptée pour le moment.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow