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]
[[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 demake_sharedâ
dans le C++11. Ceci afin d'Ă©viter des problĂšmes lors d'un appel commef(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 sigâ
lance une exception. L'introduction destd::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 destd::make_uniqueâ
dans le standard précédent.
Références
- (en)annonce de parution sur le site du comité ISO C++.
- (en) « ISO/CEI 14882:2014 », ISO
- (en) James Dennett, « N3472 - Binary Literals in the C++ Core Language » [PDF], 2012â10â19
- (en) Alberto Ganesh Barbati, « N3760 - [[deprecated]] attribute »,
- (en) Richard Smith, « N3652 - Relaxing constraints on constexpr functions, constexpr member functions and implicit const »,
- (en) Faisal Vali, Herb Sutter et Dave Abrahams, « N3649 - Generic (Polymorphic) Lambda Expressions »,
- (en) Stephan T. Lavavej, « N3656 - make_unique »,
Liens externes
- Le Comité du Standard C++
- Présentation de nombreuses propositions pour C++14 par Jens Weller sur son blog : 1re, 2e, 3e et 4e partie.
- Bilan de la conférence de Bristol par Herb Sutter