C++14
From cppreference.net
<
cpp
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. Elle a été publiée le 15 décembre 2014.
Avant son approbation, C++1y est parfois utilisé pour indiquer sa sortie dans les années 2010.
| Cette section est incomplète |
Table des matières |
Nouvelles fonctionnalités du langage
- modèles de variables
- lambdas génériques
- capture d'initialisation de lambda
- élision new/delete
- restrictions assouplies sur les fonctions constexpr
- littéraux binaires
- séparateurs de chiffres
- déduction du type de retour pour les fonctions
- classes agrégées avec initialiseurs de membres non statiques par défaut.
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 améliorations mineures aux fonctionnalités existantes de la bibliothèque, telles que
- 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.
| Cette section est incomplète |
Rapports de défauts
Support du compilateur
Fonctionnalités principales du langage C++14
|
Fonctionnalité C++14
|
Document(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++
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Formulation ajustée pour les conversions contextuelles | N3323 | 4.9 | 3.4 | 18.0* | Oui | 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)* | Oui | 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)* | Oui | 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)* | Oui | 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)* | Oui | 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 (Update 2)* | Oui | 4.11 | 17.0 | 17.4 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.15 | |
| Étendu constexpr ( FTM ) * | N3652 | 5 | 3.4 | 19.10* | Oui | 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* | Oui | 4.9 | 16.0 | 16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | |
| Omission/extension des allocations de mémoire | N3664 | N/A | 3.4 | N/A | Oui | N/A | N/A | 17.4 | N/A | 8.6 | 10.3 | 17.1.0 | 1.1.0 | N/A | N/A | |
[[
deprecated
]]
attribut
|
N3760 | 4.9 | 3.4 | 19.0 (2015)* | Oui | 4.9 |
15.0*
16.0 |
16.1 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
| Désallocation dimensionnée ( FTM ) * | N3778 | 5 | 3.4 | 19.0 (2015)* | Oui | 4.10.1 | 17.0 | 16.1 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 16.1.1* | 5.14 | ||
| Apostrophe comme séparateur de chiffres | N3781 | 4.9 | 3.4 | 19.0 (2015)* | Oui | 4.10 | 16.0 | 2015 | 9.0 | 8.6 | 10.3 | 17.1.0 | 1.1.0 | 13.1.2* | 5.14 | |
|
Fonctionnalité C++14 |
Document(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
|
Fonctionnalité C++14
|
Document(s)
|
GCC libstdc++
|
Clang libc++
|
MSVC STL
|
Apple Clang*
|
IBM Open XL C/C++ for AIX*
|
Sun/Oracle C++*
|
Embarcadero C++ Builder*
|
|
|---|---|---|---|---|---|---|---|---|---|
| constexpr pour <complex> | N3302 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| Opérateurs transparents de fonctions d'opérateur ( 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 (Update 2)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| constexpr pour <chrono> | N3469 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| constexpr pour <array> | N3470 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| constexpr pour <initializer_list> , <utility> et <tuple> | N3471 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| Amélioration de std::integral_constant ( 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 forward 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éder aux tuples par type : std::get<T>() ( FTM ) * | N3670 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| Double Plage std::equal , std::is_permutation , std::mismatch ( FTM ) * | N3671 | 5 | 3.4 | 19.0 (2015)* | Oui | 17.1.0 | 5.15 | 10.3 | |
| Alias de modèles pour traits de transformation ( FTM ) * | N3655 | 4.9 | 3.4 | 18.0* | Oui | ||||
Littéraux définis par l'utilisateur pour
std::complex
(
FTM
)
*
|
N3779 | 4.9 | 3.4 | 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 |
Document(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 les notes contextuelles supplémentaires.
DR
nn
- le nombre
nn
après "DR" désigne la révision C++ cible à laquelle le Rapport de Défaut est appliqué, par exemple DR20 → C++20.
Liens externes
| 1. | C++14 - Wikipédia |
| 2. | Exemples fonctionnels C++14 |