AccueilđŸ‡«đŸ‡·Chercher

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

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.