Namespaces
Variants

C++14

Depuis fr.cppreference.net
< cpp

Le C++14 est une version mineure après la version majeure C++11, comportant principalement des améliorations mineures et des corrections de défauts. Son approbation a été annoncée le 18 août 2014. Il a été publié le 15 décembre 2014.

Avant son approbation, C++1y est parfois utilisé pour indiquer sa sortie dans les années 2010.

Nouvelles fonctionnalités du langage

Nouvelles fonctionnalités de la bibliothèque

  • std::make_unique
  • std::shared_timed_mutex et std::shared_lock
  • std::integer_sequence
  • std::exchange
  • std::quoted
  • et de nombreuses petites améliorations des fonctionnalités existantes de la bibliothèque, comme
    • surcharges à deux plages pour certains algorithmes
    • versions d'alias de type pour les traits de type
    • littéraux définis par l'utilisateur pour basic_string, duration et complex
    • etc.

Rapports de défauts

Rapports de défauts corrigés en C++14 (276 cœur, 158 bibliothèque)

Support du compilateur

Fonctionnalités principales du langage C++14

4.9 3.4 Yes 4.9 16.0 16.1 9.0 10.3 17.1.0 1.1.0 5.14 5 3.4 Yes 4.10.1 17.0 16.1 10.3 17.1.0 1.1.0 5.14 4.9 3.4 Yes 4.10 16.0 2015 9.0 10.3 17.1.0 1.1.0 5.14
Fonctionnalité C++14

 
Proposition(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++
Révision du libellé pour les conversions contextuelles N3323 4.9 3.4 18.0* Yes 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Littéraux binaires  (FTM)* N3472 4.3*
4.9
2.9 19.0 (2015)* Yes 4.10 11.0 2015 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
decltype(auto), Déduction du type de retour pour les fonctions normales  (FTM)*  (FTM)* N3638 4.8 (partiel)*
4.9
3.3 (partiel)*
3.4
19.0 (2015)* Yes 4.9 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Captures de lambda initialisées/généralisées (init-capture)  (FTM)* N3648 4.5 (partiel)
4.9
3.4 19.0 (2015)* Yes 4.10 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.15
Expressions lambda génériques  (FTM)* N3649 4.9 3.4 19.0 (2015)* Yes 4.10 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Modèles de variables  (FTM)* N3651 5 3.4 19.0 (Mise à jour 2)* Yes 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
constexpr étenduconstexpr  (FTM)* N3652 5 3.4 19.10* Yes 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Agrégats avec initialiseurs de membres par défaut  (FTM)* N3653 5 3.3 19.10* Yes 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.14
Omettre/étendre les allocations mémoire N3664 N/A 3.4 N/A Yes N/A N/A 17.4 N/A 8.6  10.3 17.1.0 1.1.0 N/A N/A
[[deprecated]]Attribut [[deprecated]] N3760 19.0 (2015)* 15.0*
 8.6 13.1.2*
Désallocation dimensionnée  (FTM)* N3778 19.0 (2015)*  8.6 16.1.1*
Guillemet simple comme séparateur de chiffres N3781 19.0 (2015)*  8.6 13.1.2*
 

Fonctionnalité C++14
 

Proposition(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++

Fonctionnalités de la bibliothèque C++14

4.9 3.4
Fonctionnalité C++14

 
Proposition(s)

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
 
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*
constexprLittéraux définis par l'utilisateur pour <complex> N3302 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Objets fonctions opérateurs transparents   (FTM)* N3421 4.9 3.4 18.0* Oui  17.1.0 5.15 10.3
std::result_of et SFINAE  (FTM)* N3462 5 Oui 19.0 (Mise à jour 2)* Oui  17.1.0 5.15 10.3
constexprLittéraux définis par l'utilisateur pour <chrono> N3469 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
constexprconstexpr pour <array> N3470 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
constexprconstexpr pour <initializer_list>, <utility> et <tuple> N3471 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::integral_constant amélioré  (FTM)* N3545 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Littéraux définis par l'utilisateur pour <chrono> et <string>  (FTM)*  (FTM)* N3642 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Itérateurs avant nuls  (FTM)* N3644 5 (partiel)
10
3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::quoted  (FTM)* N3654 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::make_unique  (FTM)* N3656 4.9 3.4 18.0* Oui  17.1.0 5.15 10.3
Recherche associative hétérogène  (FTM)* N3657 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::integer_sequence  (FTM)* N3658 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::shared_timed_mutex N3659 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
std::exchange  (FTM)* N3668 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Correction des fonctions membres constexpr sans const N3669 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Accès aux tuples par type : std::get<T>()  (FTM)* N3670 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Dual-Range std::equal, std::is_permutation, std::mismatch  (FTM)* N3671 5 3.4 19.0 (2015)* Oui  17.1.0 5.15 10.3
Modèles d'alias pour les traits de transformation  (FTM)* N3655 4.9 3.4 18.0* Oui 
Littéraux définis par l'utilisateur pour std::complex basic_string (FTM)* N3779 19.0 (2015)*  Oui
DR11 : std::is_null_pointer  (FTM)* LWG2247 4.9 3.4 19.0 (2015)*  
std::is_final  (FTM)* LWG2112 5 3.4 19.0 (2015)*  
std::make_reverse_iterator  (FTM)* LWG2285 5 3.4 19.0 (2015)*  
std::shared_timed_mutex  (FTM)* N3891 4.9 3.5 19.0 (2015)* Oui 
std::tuple_element_t  (FTM)* N3887 4.10 3.5 19.0 (2015)* Oui 
 

Fonctionnalité C++14
 

Proposition(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
 IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*

* - survolez une cellule marquée d'une étoile * pour voir des notes contextuelles supplémentaires.
DRnn - le nombre nn après "DR" indique la révision C++ cible à laquelle le rapport de défaut s'applique, par exemple DR20 → C++20.

Liens externes

1.  C++14 - Wikipédia
2.  Exemples C++14 fonctionnels