C++14

C++14 est une version de la norme définissant le langage C++ approuvée en [1], en tant que mise à jour mineure du langage, faisant suite à la norme de connue sous le nom de C++11.

C++14
Date de première version
Influencé par C
Site web www.iso.org/standard/64029.html

C++14 a été publié sous le nom de ISO/CEI 14882:2014 en . Une version payante est disponible sur le site de l'ISO[2]. Le dernier working draft gratuit est le N4140, qui date du , les seules différences avec le standard étant des corrections éditoriales.

Améliorations apportées

Littéraux binaires [3]

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

Des apostrophes peuvent être utilisées librement pour séparer des chiffres dans les littéraux numériques, facilitant ainsi la lecture.

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

L'attribut [[deprecated]] [4]

L'attribut deprecated indique qu'une entité est obsolète. Cela n'empêche pas 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 );

Autres améliorations

  • Améliorations des fonctions constexpr [5].
  • Généricité et polymorphisme des fonctions lambda [6]
  • Introduction de make_unique [7] 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.

Références

  1. (en)annonce de parution sur le site du comité ISO C++.
  2. (en) « ISO/CEI 14882:2014 », ISO
  3. (en) James Dennett, « N3472 - Binary Literals in the C++ Core Language » [PDF], 2012‐10‐19
  4. (en) Alberto Ganesh Barbati, « N3760 - [[deprecated]] attribute »,
  5. (en) Richard Smith, « N3652 - Relaxing constraints on constexpr functions, constexpr member functions and implicit const »,
  6. (en) Faisal Vali, Herb Sutter et Dave Abrahams, « N3649 - Generic (Polymorphic) Lambda Expressions »,
  7. (en) Stephan T. Lavavej, « N3656 - make_unique »,

Liens externes

  • Portail de la programmation informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.