C++14

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

C++14 est le nom usuel de la norme du langage C++. Elle est approuvée en août 2014[1], en tant que mise à jour mineure du langage, faisant suite à la norme de 2011 connue sous le nom de C++11. Une mise à jour plus importante est aussi déjà annoncée sous le nom de C++17.

Améliorations apportées[modifier | modifier le code]

Littéraux binaires[modifier | modifier le code]

Avec le C++14, il est désormais possible de spécifier des nombres binaires en utilisant le préfixe 0b ou 0B :

int nb = 0b11;
std::cout << nb << std::endl;  // sortie de l'application : 3

Séparateur de chiffres[modifier | modifier le code]

La citation simple peut être utilisée librement pour séparer des chiffres dans les littéraux numériques, facilitant ainsi la lecture par l'homme.

int un_milliard = 1'000'000'000;
int deux_cents = 0b0000'0000'1100'1000;

L'attribut [[deprecated]][modifier | modifier le code]

L'attribut deprecated indique qu'une entité est dépréciée. Cela n'empêche pas de l'utilisateur de l'utiliser, mais signale que son utilisation est déconseillée et peut provoquer un avertissement lors de la compilation. Cet attribut peut être utilisé avec un message d'information :

[[deprecated]] int f();
 
[[deprecated("La fonction g() est dépréciée. Utilisez plutôt la fonction h()")]]
void g( int& x );
 
void h( int& x );

Améliorations possibles[modifier | modifier le code]

Les propositions d'améliorations suivantes ont été faites :

  • Améliorations des fonctions constexpr
  • Généricité et polymorphisme des fonctions lambda
  • Introduction de make_unique par symétrie avec l'ajout de make_shared dans le C++11. Ceci afin d'éviter des problèmes lors d'un appel comme f(std::unique_ptr<int>(new int), g()), en effet, le compilateur peut très bien faire l'allocation dynamique puis l'appel à g avant de créer le pointeur intelligent, pouvant causer une fuite de mémoire si g lance une exception. L'introduction de std::make_shared en C++11 avait été faite pour éviter deux allocations dynamiques (une pour l'objet partagé, une pour le compteur de référence), d'où l'absence de std::make_unique dans le standard précédent.
  • Possibilité d'écrire des nombres binaires dans le code source en commençant par 0b ou 0B. Eg. 0b1101100011

L'ajout de deux "headers" à la bibliothèque standard, filesystem et networking, ont dans un premier temps été espérés pour C++14, mais quelques jours après la conférence de Bristol (avril 2013), suivant les sources[2],[3], il est possible que ces nouveautés soient repoussées pour C++17. Ces API ainsi que d'autres pourraient sortir sous la forme de Technical Specifications d'ici là[4].

Références[modifier | modifier le code]

Liens externes[modifier | modifier le code]