Namespaces
Variants

C++ compiler support

From cppreference.net


Les tableaux suivants présentent la prise en charge par les compilateurs des nouvelles fonctionnalités du C++. Celles-ci incluent les révisions acceptées de la norme, ainsi que diverses spécifications techniques :

Table des matières

Notes

* - survolez une cellule marquée d'une étoile * pour voir des 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.

Fonctionnalités C++26

Notez que cette liste peut changer, au fur et à mesure que l'ébauche de la norme C++26/2c évolue.

Fonctionnalités fondamentales du langage C++26

Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" Le code C++ (`= delete("reason");`) et les termes techniques (`FTM`, `__cpp_deleted_function`) ont été conservés en anglais conformément aux instructions.
Fonctionnalité C++26

Document(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98 : Suppression du comportement indéfini lors de l'analyse lexicale P2621R3 Oui 3.3 16.0.0*
DR98 : Rendre les littéraux de chaîne non encodables mal formés P1854R4 14 14 16.0.0*
Chaînes non évaluées P2361R6 14 17 (partiel)*
18
16.0.0*
Ajout de @ , $ , et ` au jeu de caractères de base P2558R2 15 Oui 16.0.0*
constexpr conversion depuis void * ( FTM ) * P2738R1 14 17
DR20 : Sur l'ignorabilité des attributs standard P2552R3 15 Oui
DR11 : Stockage statique pour les initialiseurs entre accolades P2752R3 14
Messages générés par l'utilisateur pour static_assert ( FTM ) * P2741R3 14 17
Variables de substitution sans nom ( FTM ) * P2169R4 14 18
Indexation de pack ( FTM ) * P2662R3 15 19
Suppression des conversions arithmétiques obsolètes sur les énumérations P2864R2 14 18
DR11/20 : Initialisation des paramètres de template P2308R1 9 18
Interdire la liaison d'une référence retournée à un temporary P2748R5 14 19
Attributs pour les structured bindings ( FTM ) * P0609R3 15 19
Comportement erroné pour lectures non initialisées , [[ indeterminate ]] attribut P2795R5
= delete ( "reason" ) ; ( FTM ) * P2573R2 15 19
Variadic amis ( FTM ) * P2893R3 15 20
DR98 : Clarification des règles pour l'élision des accolades dans l'initialisation d'agrégat P3106R1 Oui 17
DR20 : Interdire que les déclarations de module soient des macros P3034R1 15
DR11 : Les boucles infinies triviales ne sont pas un comportement indéfini P2809R3 14 19
constexpr placement new  ( FTM ) * ( FTM ) * P2747R2 15 20
Déclaration de liaison structurée comme condition  ( FTM ) * P0963R3 15 6 (partiel)*
21
Ordre des contraintes impliquant des expressions de repli ( FTM ) * P2963R3 19
Suppression d'un pointeur vers un type incomplet devrait être mal formé P3144R2 15 19 6.7
Liaisons structurées peuvent introduire un pack ( FTM ) * P1061R10 21
constexpr liaisons structurées et références aux variables constexpr P2686R5 6.7
constexpr exceptions : [1] , [2] ( FTM ) * P3068R6
Virgule variadique d'Oxford P3176R1 15 20
Suppression des comparaisons de tableaux obsolètes P2865R6 15 20
#embed ( FTM ) * P1967R14 15 19 *
Paramètres de template de concept et de variable-template  ( FTM ) * P2841R7
Déplacement trivial ( FTM ) * P2786R13 21 *
Unions triviaux  ( FTM ) * P3074R7
Points de contrôle observables P1494R5
Contrats ( FTM ) * P2900R14


Fonctionnalité C++26


Document(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

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

**Notes sur la traduction :** - "stable sorting" a été traduit par "tri stable" (terme technique en informatique) - "Feature-testing macro" a été traduit par "Macro de test de fonctionnalité" - Le terme C++ "constexpr" n'a pas été traduit comme demandé - Les balises HTML et attributs sont conservés intacts - Le texte dans les attributs title a été traduit - Les références techniques (P2562R1, FTM, __cpp_lib_constexpr_algorithms) sont conservées en anglais Traductions effectuées : - "Member" → "Membre" - "Feature-testing macro" → "Macro de test de fonctionnalité" Éléments préservés : - Toutes les balises HTML et attributs - Le texte dans les balises ` ` (`std::variant::visit()`) - Les termes C++ spécifiques (FTM, __cpp_lib_variant, P2637R3) - La mise en forme originale et les valeurs numériques **Explications des traductions :** - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le terme `std::copyable_function` et l'acronyme `FTM` sont conservés tels quels conformément aux instructions - La structure HTML et tous les attributs sont préservés sans modification - Le formatage original est maintenu Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le reste (HTML tags, `std::submdspan()`, FTM, P2630R4, P3355R1) a été conservé tel quel conformément aux instructions. La traduction a été effectuée en respectant toutes les consignes : - Les balises HTML et attributs sont préservés - Le texte dans les balises ` ` (contenant du code C++) n'a pas été traduit - Les termes spécifiques C++ (`views::concat`, `__cpp_lib_ranges_concat`, `FTM`) sont conservés - Le formatage original est maintenu - Seul le texte descriptif a été traduit en français **Notes sur la traduction :** - `std::atomic_ref::address()` et `FTM` sont conservés tels quels (termes techniques C++) - `Feature-testing macro` a été traduit par "Macro de test de fonctionnalité" - La structure HTML et tous les attributs sont préservés - Les liens et identifiants restent inchangés Seul le texte dans l'attribut `title` a été traduit en français : - "Feature-testing macro" → "Macro de test de fonctionnalité" Tous les autres éléments ont été préservés : - `std::polymorphic` (terme C++ spécifique) - `FTM` (acronyme) - `P3019R14` (référence de document) - Structure HTML et attributs - Formatage et mise en page
Fonctionnalité C++26

Document(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Test de réussite ou d'échec des fonctions <charconv> ( FTM ) * P2497R0 14 18 16.0.0*
std::text_encoding : identification des encodages de texte  ( FTM ) * P1885R12
P2862R1
14
Surcharges arithmétiques de std::to_string et std::to_wstring utilisent std::format ( FTM ) * P2587R3 14
Vérification de type des arguments de format  ( FTM ) * P2757R3 15
Formatage des pointeurs  ( FTM ) * P2510R3 14 * 17 * 19.40* *
Prise en charge du hachage pour les classes de valeur std::chrono ( FTM ) * P2592R3
<rcu> : Mise à jour par copie en lecture ( FTM ) * P2545R4
<hazard_pointer> : Pointeurs de danger ( FTM ) * P2530R3
Résistant à ADL std::projected P2538R1 14 * 18 * 19.38* * 16.0.0*
constexpr tri stable  ( FTM ) * P2562R1 15 21
Membre std::basic_format_arg::visit() ( FTM ) * P2637R3 15 19
Membre std::variant::visit() ( FTM ) * P2637R3 15 18
std::is_within_lifetime ( FTM ) * P2641R4
Extension des conteneurs associatifs avec les surcharges hétérogènes restantes  ( FTM ) * P2363R5
Permettre l'utilisation de std::weak_ptr comme clés dans les conteneurs associatifs non ordonnés  ( FTM ) * P1901R2
Poignées natives dans les flux de fichiers  ( FTM ) * P1759R6 14 18 16.0.0*
Interface des flux de chaînes avec std::string_view ( FTM ) * P2495R3 19
Interface std::bitset avec std::string_view ( FTM ) * P2697R1 18 16.0.0*
Plus de constexpr pour <cmath> et <complex> ( FTM ) * ( FTM ) * P1383R2 4.6 (partiel)*
Ajout des nouveaux préfixes SI 2022 pour les ratios : std::quecto , std::ronto , std::ronna , et std::quetta ( FTM ) * P2734R0 14 17 *
std::function_ref : référence appelable à effacement de type  ( FTM ) * P0792R14
std::copyable_function ( FTM ) * P2548R6 16
std::bind_front , std::bind_back , et std::not_fn vers les appelables NTTP  ( FTM ) * ( FTM ) * ( FTM ) * P2714R1
std::submdspan() ( FTM ) * P2630R4
P3355R1
Langage autonome : Optionnel ::operator new P2013R5 N/A
Autonome std::char_traits , std::errc et fonctionnalités dans : <charconv> , <cstdlib> , <cstring> , <cwchar> ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2338R4 N/A
Fonctionnalités autonomes supplémentaires  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2198R7 N/A
Arithmétique de saturation ( FTM ) * P0543R3 14 18 16.0.0*
<debugging> : Support de débogage ( FTM ) * P2546R5
P2810R4
<linalg> : Une interface d'algèbre linéaire basée sur des fonctions libres reposant sur le BLAS  ( FTM ) * P1673R13
P3050R2
P3222R0
Rendre la macro assert() conviviale P2264R7
Chaînes de formatage à l'exécution  ( FTM ) * P2918R2 14 18 16.0.0*
std::span sur une liste d'initialisation  ( FTM ) * P2447R6 15 18 16.0.0*
std::span::at() ( FTM ) * P2821R5 14 18 16.0.0*
Protocole tuple ajouté à std::complex ( FTM ) * P2819R2 15 19
Une nouvelle spécification pour std::generate_canonical P0952R2 19.42*
Suppression du typedef obsolète std::allocator::is_always_equal P2868R3 15 18 16.0.0*
Suppression de la surcharge de fonction de std::basic_string::reserve() ne prenant aucun argument P2870R3 18 16.0.0*
Suppression des facettes de conversion Unicode obsolètes ( <codecvt> ) P2871R3 18 16.0.0*
Autonome : suppression de std::strtok ( FTM ) * P2937R0 14 19.40*
Bibliothèque autonome : classes partielles  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2407R5 14 19.42*
Bibliothèque autonome : std::inout , std::expected , std::span ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P2833R2 14 19.42*
DR23: std::basic_const_iterator doit suivre la convertibilité de son type sous-jacent  ( FTM ) * P2836R1
P2950R0
14 19.40*
DR20 : std::make_format_args n'accepte désormais que des références lvalue au lieu de références de transfert P2905R2 14 18 19.40* 16.0.0*
DR20: Correction du formatage des unités de code en tant qu'entiers  ( FTM ) * P2909R4 13.3 18 19.40* 16.0.0*
views::concat ( FTM ) * P2542R8 15
Concatenation de strings et de string views ( FTM ) * P2591R5 15 19
Activation de l'initialisation par liste pour les algorithmes ( FTM ) * P2248R8
P3217R0
15
std::ranges::generate_random ( FTM ) * P1068R11
Comparaisons pour std::reference_wrapper , et contraintes pour les comparaisons de std::pair , std::tuple , std::optional , et std::variant ( FTM ) * ( FTM ) * P2944R3 14 19 (partiel) *
Dispositions mdspan avec remplissage  ( FTM ) * P2642R6
Nouveau CTAD pour std::span et std::mdspan avec constantes entières P3029R1 19
Maximum et minimum atomiques  ( FTM ) * P0493R5
std::formatter<std::filesystem::path> ( FTM ) * P2845R8
Impression de lignes vides avec std::println() ( FTM ) * P3142R0 14 * 19 * 19.41* *
Déprécier l'annulation std::polymorphic_allocator::destroy P2875R4 15 19.41*
Suppression des strstreams obsolètes P2867R2 19
Suppression des API d'accès atomique obsolètes pour std::shared_ptr P2869R4
Suppression std::wstring_convert P2872R3 19
DR23: Permettre une implémentation efficace de std::print ( FTM ) * P3107R5
P3235R3
19.43*
Bibliothèque de contrôle d'exécution ( FTM ) * P2300R10
P3396R0
std::inplace_vector : vecteur redimensionnable dynamiquement avec capacité fixe  ( FTM ) * P0843R14
std::philox_engine : moteur de nombres aléatoires basé sur un compteur  ( FTM ) * P2075R6
std::optional prise en charge des plages  ( FTM ) * P3168R2
std::is_virtual_base_of : trait de type pour détecter les classes de base virtuelles  ( FTM ) * P2985R0 15 20
std::dims pour std::mdspan ( FTM ) * P2389R2 19
DR11 : Spécification formelle du type de std::ignore P2968R2 15 19 19.42*
DR20: Suppression de l'exigence de référence commune des concepts indirectement invocables  ( FTM ) * P2997R1 15 19 19.42*
Dépréciation de std::is_trivial et std::is_trivial_v P3247R2 15 21
DR20 : Objets fonction d'algorithmes P3136R1 Oui 14 19.39* 14.0.3*
std::ranges::cache_latest_view ( FTM ) * P3138R5 15
Contrainte des std::expected opérateurs d'égalité ( FTM ) * P3379R0 15
std::aligned_accessor : un accesseur std::mdspan exprimant le sur-alignement de pointeur  ( FTM ) * P2897R7 21
std::is_sufficiently_aligned : vérifie le précondition d'alignement d'un pointeur  ( FTM ) * P2897R7 21
std::atomic_ref::address() ( FTM ) * P2835R7
DR11/20: types avec qualificateurs cv dans std::atomic et std::atomic_ref P3323R1 19.44*
constexpr std::atomic et std::atomic_ref ( FTM ) * P3309R3
constexpr pour algorithmes de mémoire spécialisés ( FTM ) * P3508R0
P3369R0
15
<stdbit.h> et <stdckdint.h> P3370R1 15
<simd> : types parallèles de données ( FTM ) * ( FTM ) * P1928R15
P3430R3
P3441R2
P3287R3
P2663R7
P2933R4
Un utilitaire pour créer des environnements d'exécution P3325R5
constexpr pour les types d'exception, par ex. std::bad_alloc , std::bad_cast etc.  ( FTM ) * P3068R6
P3378R2
Traits et opérations de relocalisation triviale  ( FTM ) * P2786R13
Défanger et déprécier std::memory_order::consume P3475R1
Placer std::monostate dans <utility> P0472R3 15 21 19.50*
std::indirect ( FTM ) * P3019R14
std::polymorphic ( FTM ) * P3019R14
Davantage de constexpr pour les conteneurs et adaptateurs de conteneurs :

std::deque , std::flat_map , std::flat_multimap , std::flat_set , std::flat_multiset , std::forward_list , std::list , std::map , std::multimap , std::queue , std::priority_queue , std::set , std::multiset , std::stack , std::unordered_map , std::unordered_multimap , std::unordered_set , et std::unordered_multiset
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *

P3372R3
constexpr std::inplace_vector pour les types non triviaux  ( FTM ) * P3074R7
std::ranges::to_input_view ( FTM ) * P3137R3 15
std::ranges::approximately_sized_range et std::ranges::reserve_hint ( FTM ) * P2846R6
<hive> : Un conteneur basé sur des compartiments qui réutilise les emplacements mémoire des éléments effacés  ( FTM ) * P0447R28
<contracts> : Prise en charge de la gestion des violations de contrat  ( FTM ) * P2900R14
Durcissement de la bibliothèque standard  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P3471R4 15 (partiel)* 19.44* (partiel)*
Bibliothèque autonome : <algorithm> , <numeric> , <random> , ( <execution> , <memory> )
( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) *
P2976R1
DR20 : Conversion des itérateurs contigus en pointeurs P3349R0 15


Fonctionnalité C++26


Document(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Fonctionnalités C++23

Fonctionnalités fondamentales du langage C++23

Seul le texte dans l'attribut `title` a été traduit de "Feature-testing macro" vers "Macro de test de fonctionnalité". Tous les autres éléments (balises HTML, code C++, termes techniques, et contenu numérique) ont été préservés dans leur format d'origine.
Fonctionnalité C++23

Document(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Suffixe littéral pour (signé) size_t ( FTM ) * P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
Rendre () plus optionnel pour les lambdas P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval ( FTM ) * P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
Suppression de la prise en charge du Garbage Collection P2186R2 12 N/A 19.30* N/A N/A
Conversions contextuelles restrictives dans static_assert et constexpr if P1401R5 9 13 (partiel)*
14
14.0.0* 2022.2 20.7
Suppression des espaces blancs avant le collage de lignes P2223R2 Oui Oui Oui 6.7 2022.2 Oui
Rendre obligatoire la disposition selon l'ordre de déclaration P1847R4 Oui Oui Oui Oui 2022.2 Oui
Suppression de la concaténation de littéraux de chaîne large mixte concatenation P2201R1 Oui Oui Oui Oui Oui Oui Oui
Fonctions membres à objet explicite (déduction de this )  ( FTM ) * P0847R7 14 18
19*
19.32*
(partiel)*
19.43*
6.3 22.5
auto(x) et auto{x} ( FTM ) * P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef et #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
Variables non littérales (et étiquettes et gotos) dans les fonctions constexpr ( FTM ) * P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
Encodage cohérent des littéraux de caractères P2316R2 Oui Oui 19.30* Oui Oui 2022.2 Oui
Jeux de caractères et encodages P2314R4 10 Oui Oui Oui 2022.2 Oui
Étendre l'instruction d'initialisation (de la for boucle ) pour permettre la déclaration d'alias P2360R0 12 14 14.0.0* 2022.2
Opérateur d'indice multidimensionnel ( FTM ) * P2128R6 12 15 19.42* 14.0.3* 2022.2
Attributs sur les lambdas P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 Oui* Oui 15.0.0* 6.5 2023.2 Oui
Supprimer les littéraux de caractères larges non encodables et les littéraux de caractères larges multi-caractères P2362R3 13 14 15.0.0* 6.7 2023.2
Étiquettes à la fin des instructions composées P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
Séquences d'échappement délimitées P2290R3 13 15 15.0.0* 6.7 2023.2
Échappements de caractères universels nommés ( FTM ) * P2071R2 13 15 15.0.0* 6.7 2023.2
Assouplissement de certaines constexpr restrictions  ( FTM ) * P2448R2 13 17 (partiel)
19
2024.0 (partiel)
Déplacement implicite simplifié  ( FTM ) * P2266R3 13 13 6.7 2022.2
static operator ( ) ( FTM ) * P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
Exigences pour les types extended floating-point types optionnels P1467R9 13 N/A 6.4
Dédduction d'arguments de template de classe à partir des constructeurs hérités P2582R1 14
Attribut [[ assume ]] P1774R8 13 19
Prise en charge de UTF-8 comme encodage portable des fichiers source P2295R6 13* 15* 19.0 (Update 2)* * 15.0.0* 2023.2
static operator [ ] ( FTM ) * P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
Autorisation des variables static constexpr dans les fonctions constexpr ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
Extension de la durée de vie des temporaires dans l'initialiseur de boucle for basée sur des plages  ( FTM ) * P2644R1
P2718R0
CWG2659
15 19
Déclarations et où les trouver P1787R6
DR11 : Modifier la portée du lambda trailing-return-type P2036R3
P2579R0
17 2023.2
DR20 : Exportations significatives P2615R1 15 17 (partiel)
DR20: consteval doit se propager vers le haut  ( FTM ) * P2564R3 14 17 16.0.0* 6.7 2024.0
DR98 : Syntaxe des identifiants C++ utilisant l'Annexe 31 de la norme Unicode P1949R7 12 14 14.0.0* 6.4 2022.2
DR11 : Autoriser les doublons d' attributs P2156R1 11 13 13.1.6* 6.5 23.9
DR20 : Ajustement de la valeur de la macro de test de fonctionnalité __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98 : Assouplir les exigences sur wchar_t pour correspondre aux pratiques existantes P2460R2 Oui Oui Oui 15.0.0* N/A 2023.2
DR11 : Utilisation de pointeurs et références inconnus dans les expressions constantes P2280R4 14 20 *
DR20 : L'opérateur d'égalité que vous recherchez P2468R2 13 16 16.0.0* 2023.2
DR20 : char8_t Correctif de Compatibilité et Portabilité  ( FTM ) * P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11 : Clarifier le rapport des directives de diagnostic et autoriser static_assert d'expressions non dépendantes de la valeur dans un contexte de template CWG2518 13 17 16.0*
(partiel)*
19.40*


Fonctionnalité C++23


Document(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

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

**Traductions effectuées :** - "Feature-testing macro" → "Macro de test de fonctionnalité" - Les termes C++ (`views::join_with`, `__cpp_lib_ranges_join_with`, `FTM`, `P2441R2`) ont été conservés en anglais - Toutes les balises HTML et attributs sont préservés - Le texte dans les balises ` `, ` ` n'a pas été traduit Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le reste du contenu (balises HTML, ` `, FTM, P0429R9, et les numéros de version) a été conservé tel quel conformément aux instructions. Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le reste du contenu (balises HTML, ` `, FTM, P1222R4, et les numéros de version) a été conservé tel quel conformément aux instructions. **Traductions effectuées :** - "Feature-testing macro" → "Macro de test de fonctionnalité" - Les termes C++ (`views::cartesian_product`, `__cpp_lib_ranges_cartesian_product`, `FTM`) et les références techniques (`P2374R4`, `P2540R1`) ont été conservés en anglais - La structure HTML et tous les attributs sont restés inchangés **Note:** Aucun texte traduit n'a été identifié dans ce fragment HTML. Tous les éléments visibles sont soit : - Des balises HTML et attributs (non traduits selon les instructions) - Du contenu dans des balises ` ` (non traduit selon les instructions) - Des termes spécifiques au C++ (non traduits selon les instructions) - Des numéros de version et références techniques (ne nécessitant pas de traduction) Le fragment HTML original est déjà conforme aux exigences de traduction spécifiées.
Fonctionnalité C++23

Document(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Bibliothèque Stacktrace ( FTM ) * P0881R7
P2301R1
12 (partiel)*
14*
19.34*
<stdatomic.h> ( FTM ) * P0943R6 12 15 19.31* 14.0.3*
std::is_scoped_enum ( FTM ) * P1048R1 11 12 19.30* 13.0.0*
std::basic_string::contains() , std::basic_string_view::contains() ( FTM ) * P1679R3 11 12 19.30* 13.0.0*
std::to_underlying ( FTM ) * P1682R3 11 13 19.30* 13.1.6*
Assouplissement des exigences pour time_point<>::clock P2212R2 N/A N/A N/A N/A
Retour d'information sur la taille dans l'interface Allocator  ( FTM ) * P0401R6 15 19.30* 14.0.3*
<spanstream> : flux de chaîne avec std::span -based buffer  ( FTM ) * P0448R4 12 19.31*
std::out_ptr() , std::inout_ptr() ( FTM ) * P1132R8 14 19 19.30*
constexpr type_info::operator==() ( FTM ) * P1328R1 12 17 19.33* *
19.34*
15.0.0*
Constructeurs par paire d'itérateurs pour std::stack et std::queue ( FTM ) * P1425R4 12 14 19.31* 14.0.3*
Contexte de non-déduction pour les allocateurs dans les guides de déduction de conteneurs P1518R2 12 * 13 * 19.31* * 13.1.6* *
ranges::starts_with() et ranges::ends_with() ( FTM ) * P1659R3 17 (partiel)*
18
19.31* 16.0.0*
Interdire la construction de std::basic_string et de std::basic_string_view à partir de nullptr P2166R1 12 13 19.30* 13.1.6*
std::invoke_r() ( FTM ) * P2136R3 12 17 19.31* 15.0.0*
Constructeur de plage constructor pour std::basic_string_view P1989R2 11 14 19.30* 14.0.3*
Arguments de modèle par défaut pour le std::pair constructeur de transmission constructor P1951R1 14 14 19.30* 14.0.3*
Supprimer le ramasse-miettes et la détection de fuites basée sur l'accessibilité ( support de bibliothèque ) P2186R2 12 14 19.30* 14.0.3*
zip : views::zip , views::zip_transform , views::adjacent , et views::adjacent_transform ( FTM ) * P2321R2 13 15 (partiel)* 19.33* (partiel)* * *
19.37*
14.0.3*
Surcharges d'effacement hétérogène pour les conteneurs associatifs  ( FTM ) * P2077R3 19.32*
std::byteswap() ( FTM ) * P1272R4 12 14 19.31* 14.0.3*
Impression volatile T * P1147R1 11.3 14 19.31* 14.0.3*
basic_string::resize_and_overwrite() ( FTM ) * P1072R10 12 14 19.31* 14.0.3*
Opérations monadiques pour std::optional ( FTM ) * P0798R8 12 14 19.32* 14.0.3*
std::move_only_function ( FTM ) * P0288R9 12 19.32*
Ajouter une spécification conditionnelle noexcept à std::exchange P2401R0 12 14 19.25* 14.0.3*
Exiger que std::span et std::basic_string_view soient TriviallyCopyable P2251R1 Oui Oui Oui Oui
Clarifier le statut des « en-têtes C » P2340R1 Oui Oui Oui Oui
<expected> ( FTM ) * P0323R12
P2549R1
12 16 19.33* 15.0.0*
constexpr pour <cmath> et <cstdlib> ( FTM ) * P0533R9 4.6 (partiel)*
std::unreachable() ( FTM ) * P0627R6 12 15 19.32* 14.0.3*
Dépréciation de std::aligned_storage et std::aligned_union P1413R3 13 16 19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary ( FTM ) * P2255R2 13 (partiel)*
14
21 (partiel)*
constexpr std::unique_ptr ( FTM ) * P2273R3 12 16 19.33* 15.0.0*
Construction de conteneurs et de chaînes à partir de ranges avec ranges::to() , constructeurs étiquetés, fonctions membres d'insertion et d'assignation  ( FTM ) * ( FTM ) * P1206R7 14 (partiel)*
15
17 19.34* 15.0.0*
Prise en charge des pipelines pour les adaptateurs de plage définis par l'utilisateur ( ranges::range_adaptor_closure , std::bind_back )  ( FTM ) * ( FTM ) * P2387R3 13 (partiel)*
14
19 19.34*
ranges::iota() , ranges::shift_left() , et ranges::shift_right() ( FTM ) * ( FTM ) * P2440R1 13 (partiel)* 19.34*
views::join_with ( FTM ) * P2441R2 13 19.34*
views::chunk et views::slide ( FTM ) * ( FTM ) * P2442R1 13 19.33*
views::chunk_by ( FTM ) * P2443R1 13 18 19.33* 16.0.0*
std::mdspan : une référence de tableau multidimensionnel non propriétaire  ( FTM ) * P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (partiel)*
18
19.39* 15.0.0*
<flat_map> ( FTM ) * P0429R9 15 20
<flat_set> ( FTM ) * P1222R4 15 21
ranges::find_last() , ranges::find_last_if() , et ranges::find_last_if_not() ( FTM ) * P1223R5 13 19 19.36*
Bibliothèque Autonome : Facile <utility> , <ranges> , et <iterator> P1642R11 13 * N/A
views::stride ( FTM ) * P1899R3 13 19.34*
Compatibilité entre std::tuple et les objets de type tuple  ( FTM ) * P2165R4 14 2.9 (partiel)* 19.36* (partiel) *
19.37*
partiel*
Rectification des itérateurs constants, des sentinelles et des plages. views:: as_const ( FTM ) * P2278R4 13 19.35* (partiel)*
19.36*
Formatage des Plages  ( FTM ) * P2286R8 15 (partiel)*
15.2
16 19.37* (partiel)*
19.39* (partiel)*
19.41* (partiel)*
19.42*
15.0.0*
Améliorer le formatage par défaut des conteneurs formatting ( FTM ) * P2585R1 15 16 (partiel)*
17
19.42* 15.0.0*
Bibliothèque de sortie formatée <print> ( FTM ) * P2093R14
P2539R4
14 17 (partiel)*
18
19.37* 15.0.0* *
16.0.0*
Formatage std::thread::id et std::stacktrace ( FTM ) * P2693R1 14 17 (partiel)* 19.38* 15.0.0*
constexpr pour les surcharges intégrales de std::to_chars() et std::from_chars() ( FTM ) * P2291R3 13 16 19.34* 15.0.0*
ranges::contains() et ranges::contains_subrange() ( FTM ) * P2302R4 13 18 (partiel)*
19
19.34* 16.0.0* *
Algorithmes de pliage Ranges ( FTM ) * P2322R6 13 19.35*
views::cartesian_product ( FTM ) * P2374R4
P2540R1
13 19.37*
Ajout de la prise en charge des types non copiables pour les concepts de comparaison ( equality_comparable , totally_ordered , three_way_comparable )  ( FTM ) * P2404R3 19.36*
Itérateurs de plages comme entrées aux algorithmes non-plages  ( FTM ) * P2408R5 19.34*
constexpr std::bitset ( FTM ) * P2417R2 13 16 19.34* 15.0.0*
basic_string::substr() && P2438R2 16 19.34* 15.0.0*
views::as_rvalue ( FTM ) * P2446R2 13 16 19.34* 15.0.0*
Modules de la bibliothèque standard  ( FTM ) * P2465R3 15* 17 (partiel)* 19.35*
(partiel)*
19.36*
std::forward_like() ( FTM ) * P2445R1 14 16 19.34* 15.0.0*
Prise en charge du mode exclusif pour std::fstream ( FTM ) * P2467R1 12 18 19.36* 16.0.0*
views::repeat ( FTM ) * P2474R2 13 17 19.36* 15.0.0*
Assouplissement des adaptateurs de plages pour autoriser les types mobiles uniquement  ( FTM ) * P2494R2 14 17 19.34* 15.0.0*
std::basic_string_view constructeur de plage constructor devrait être explicite P2499R0 12.2 16 19.34* 15.0.0*
std::generator : générateur synchrone de coroutines pour les plages  ( FTM ) * P2502R2
P2787R0
14 19.43*
Ajouter une spécification conditionnelle noexcept à std::apply P2517R1 10 18 19.34* 16.0.0*
Gestion explicite de la durée de vie ( std::start_lifetime_as )  ( FTM ) * P2590R2
P2679R2
Clarifier la gestion des encodages dans le formatage localisé des types chrono  ( FTM ) * P2419R2 15* 19.34* *
std::move_iterator ne devrait pas toujours être input_iterator ( FTM ) * P2520R0 12.3* 17* 19.34* * 15.0.0*
Guides de déduction mis à jour pour les opérateurs d'appel avec paramètre d'objet explicite LWG3617 14 19.34*
Guides de déduction mis à jour pour static operator ( ) P1169R4 13 16 19.39* 15.0.0*
Noms standard et support de bibliothèque pour les types flottants étendus P1467R9 13 19.37* *
Opérations monadiques pour std::expected ( FTM ) * P2505R5 13 17 19.36* 15.0.0*
views::enumerate ( FTM ) * P2164R9 13 19.37*
std::is_implicit_lifetime ( FTM ) * P2674R1 20
std::common_reference_t de std::reference_wrapper devrait être un type référence  ( FTM ) * ( FTM ) * P2655R3 19.37*
Interdiction de la spécialisation utilisateur de std::allocator_traits P2652R2 19 19.37*
Dépréciation de std::numeric_limits::has_denorm P2614R2 18 19.37* 16.0.0*
Rendre les constructeurs multi-paramètres des view s explicit P2711R1 17 (partiel)* 19.36* * 15.0.0*
DR20: Assouplissement des Ranges Juste un Peu  ( FTM ) * P2609R3 15 20 19.37*
DR20 : Itérateurs de Mise en Cache pour un Aplatissement Approprié P2770R0 14 18 19.37*
DR17: std::visit() pour les classes dérivées de std::variant ( FTM ) * P2162R2 11.3 13 19.20* *
19.30*
13.1.6*
DR20 : Plages empruntées conditionnellement P2017R1 11 16 19.30*
DR20 : Réparation des adaptateurs de plage d'entrée et std::counted_iterator P2259R1 12 19.30* (partiel)*
19.31*
DR20: views::join devrait joindre toutes les vues de plages P2328R1 11.2 15 19.30* 14.0.3*
DR20: view ne nécessite plus default_initializable ( FTM ) * P2325R3 11.3 16 19.30* 15.0.0*
DR20 : Les objets adaptateurs de plage lient les arguments par valeur P2281R1 11 14 19.29 (16.10)*
(partiel)*
19.31*
14.0.3*
DR20 : constexpr pour std::optional et std::variant ( FTM ) * ( FTM ) * P2231R1 11.3 (partiel)*
12
13 (partiel)*
19
19.31* 13.1.6* (partiel)
DR20 : views::lazy_split et refondu views::split P2210R2 12 16 19.31* 15.0.0*
DR20 : Correction ranges::istream_view P2432R1 12 16 19.31* 15.0.0*
DR20: view avec propriété  ( FTM ) * P2415R2 12 14 19.31* 14.0.3*
DR20: Correction de la gestion des paramètres régionaux dans les formateurs chrono  ( FTM ) * P2372R3
P2418R2
13 19.31*
DR20 : Nettoyage des types de classe entière P2393R1 19.32*
DR20: Vérifications des chaînes de format à la compilation; Réduction de la taille du code binaire de la famille std::format() ( FTM ) * P2216R3 13 14 (partiel)*
15
19.32* 14.0.3*
DR20 : Ajouter la prise en charge des types non const-formattables à std::format P2418R2 13 15 19.32* 14.0.3*
DR20 : std::basic_format_string P2508R1 13 15 19.35* 14.0.3*
DR20: Les poisons sont trop toxiques  ( FTM ) * P2602R2 14 19 19.36*
DR20 : std::format autorisations de caractère de remplissage P2572R1 14 17 19.37*
DR20: Amélioration std::format de l'estimation de largeur P2675R1 14 17 19.38*
DR20: std::barrier garanties d'achèvement de phase  ( FTM ) * P2588R3 19.28 (16.8)* *
19.36*


Fonctionnalité C++23


Document(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Fonctionnalités C++20

Fonctionnalités fondamentales du langage C++20

Fonctionnalité C++20

Document(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Autoriser Capture de lambda [ = , this ] P0409R2 8 6 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
__VA_OPT__ P0306R4
P1042R1
8 (partiel)*
10 (partiel)*
12
9 19.25* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Initialisateurs désignés ( FTM ) * P0329R4 4.7 (partiel)*
8
3.0 (partiel)*
10
19.21* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
liste de paramètres de template pour les lambdas génériques ( FTM ) * P0428R2 8 9 19.22* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
Initialiseurs de membres par défaut pour les champs de bits P0683R1 8 6 19.25* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Constructeurs de liste d'initialisation dans la déduction d'argument de classe template P0702R1 8 6 19.14* Oui 5.0 2021.1 20.7 12.0 11.0
const & - pointeurs vers membres qualifiés const P0704R1 8 6 19.0 (2015)* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
Concepts ( FTM ) * P0734R0 5*
10
10 19.23* (partiel)*
19.30*
12.0.0* (partiel) 6.1 2023.1* 20.11 12.0 11.0
Lambdas dans des contextes non évalués P0315R4 9 13 (partiel)*
14 (partiel)*
17
19.28 (16.8)* 13.1.6* (partiel) 6.2 2023.1 (partiel)
2024.0
20.7 12.0
Opérateur de comparaison à trois voies ( FTM ) * P0515R3 10 8 (partiel)
10
19.20* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11 : Simplification de la capture implicite des lambda P0588R1 8 19.24* 5.1 2021.1 20.7 12.0
instructions d'initialisation pour la boucle for basée sur des intervalles P0614R1 9 8 19.25* 11.0.0* 6.0 2021.7 20.11 12.0 11.0
Constructible par défaut et assignable sans état lambdas P0624R2 9 8 19.22* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Incompatibilité de type des fonctions membres spéciales par défaut P0641R2 9 (partiel)* 8 19.0 (2015)* (partiel)* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Vérification d'accès sur les spécialisations P0692R1 Oui 8 (partiel)
14
19.26* 14.0.0* 5.1 2021.1 20.7 12.0
ADL et modèles de fonction non visibles P0846R0 9 9 19.21* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
DR11 : Spécifier quand les définitions de fonctions constexpr sont nécessaires pour l'évaluation constante ( FTM ) * P0859R0 5.2 (partiel)*
9
8 19.27* (partiel)*
19.31* *
11.0.0* (partiel) 12.0 11.0
Attributs [[ likely ]] et [[ unlikely ]] P0479R5 9 12 19.26* 13.0.0* 5.1 2021.7 20.7 12.0
Rendre typename plus optionnel P0634R3 9 16 19.29 (16.10)* 16.0.0* 5.1 2023.1 20.7 12.0
Pack-expansions dans lambda init-captures ( FTM ) * P0780R2 9 9 19.22* 11.0.3* 6.1 2021.7 20.11 12.0 11.0
Attribut [[ no_unique_address ]] P0840R2 9 9 19.28 (16.9)* * 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Fonctions membres spéciales conditionnellement triviales  ( FTM ) * P0848R3 10 16 19.28 (16.8)* 6.1 2021.7 20.11 12.0
DR17 : Assouplissement des règles de recherche du point de personnalisation des liaisons structurées P0961R1 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
DR11 : Assouplissement des range-for règles de recherche du point de personnalisation de la boucle P0962R1 8 8 19.25* 11.0.0* 5.1 2021.1 20.7 12.0 11.0
DR17 : Autoriser les liaisons structurées pour les membres accessibles P0969R0 8 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Opérateur de suppression destructeur operator delete ( FTM ) * P0722R3 9 6 19.27* 10.0.0* 6.1 2023.1 20.11 12.0 11.0
Types de classe dans Paramètres de template constants P0732R2 9 12 (partiel) 19.26* (partiel)*
19.28 (16.9)*
13.0.0* (partiel) 6.2 2023.1 (partiel) 21.3 12.0
Déprécier la capture implicite capture de this via [=] P0806R2 9 7 19.22* 10.0.1* 5.1 20.7 12.0 11.0
explicit(bool) ( FTM ) * P0892R2 9 9 19.24* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Intégration des macros de test de fonctionnalités P0941R2 5 3.4 19.15* (partiel)
19.20*
Oui 5.0 2021.1 20.7 12.0 11.0
Interdire les agrégats avec des constructeurs déclarés par l'utilisateur P1008R1 9 8 19.20* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
constexpr fonction virtuelle ( FTM ) * P1064R0 9 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Améliorations de cohérence pour les comparaisons P1120R0 10 8 (partiel)
10
19.22* 12.0.0* 5.1 2023.1 20.7 12.0 11.0
char8_t ( FTM ) * P0482R6 9 7* 19.22* 10.0.0* 5.1 2021.1 20.7 12.0 11.0
std::is_constant_evaluated() ( FTM ) * P0595R2 9 9 19.25* 11.0.3* 5.1 19.1 21.1 12.0 11.0
constexpr try - catch blocs P1002R1 9 8 19.25* 10.0.1* 5.1 2023.1 20.7 12.0 11.0
Fonctions immédiates ( consteval )  ( FTM ) * P1073R3 10 (partiel)*
11
11 (partiel)
14 (partiel)*
17
19.28 (16.8)*
(partiel)*

19.29 (16.10)*
11.0.3* (partiel)
15.0.0*
5.1 2021.1 20.7 12.0
Espaces de noms imbriqués en ligne P1094R2 9 8 19.27* 10.0.1* 5.1 2021.1 20.7 12.0 11.0
Une autre approche pour les déclarations contraintes auto P1141R2 10 10 19.26* (partiel)
19.28 (16.9)*
12.0.5* 6.1 2023.1 20.11 12.0 11.0
Les entiers signés utilisent la représentation en complément à deux P1236R1 9 9 Oui 11.0.3* N/A 2023.1* oui* 12.0 11.0
dynamic_cast et polymorphique typeid dans les expressions constantes P1327R1 10 9 19.28 (16.9)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Changer le membre actif d'une union dans constexpr ( FTM ) * P1330R0 9 9 19.10* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Coroutines ( FTM ) * ( FTM ) * P0912R5
LWG3393
10 8 (partiel)
17 (partiel)*
19.0 (2015)* (partiel)
19.10* *
19.28 (16.8)*
10.0.1* (partiel) 5.1 2021.1 23.3* 12.0 (code hôte uniquement)
Initialisation entre parenthèses des agrégats ( FTM ) * P0960R3 10 16 19.28 (16.8)* 16.0.0* 5.1 2021.1 20.7 12.0
DR11 : Déduction de la taille de tableau dans les new -expressions P1009R2 11 9 19.27* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Modules ( FTM ) * P1103R3 11 (partiel) 8 (partiel) 19.0 (2015)* (partiel)
19.10* *
19.28 (16.8)*
10.0.1* (partiel) 2023.1 (partiel)
Exigences Unicode renforcées P1041R4
P1139R2
10 Oui 19.0 (2015)* *
19.26* *
Oui N/A 2023.1* Oui 12.0 11.0
<=> != == P1185R2 10 10 19.22* 12.0.0* 5.1 2021.1 20.7 12.0 11.0
DR11 : Fonctions explicitement définies par défaut avec des spécifications d'exception différentes P1286R2 10 9 19.28 (16.8)* 11.0.3* 5.1 2021.1 20.7 12.0 11.0
Capture des lambdas et spécificateurs de classe de stockage des liaisons structurées P1091R3
P1381R1
10 8 (partiel)
16
19.11* *
19.24* *
16.0.0* 5.1 2021.1 20.7 12.0
Permettre les conversions vers des tableaux de taille inconnue P0388R4 10 14 19.27* 14.0.0* 6.0 2021.5 20.11 12.0
constexpr opérations de conteneur  ( FTM ) * P0784R7 10 10 19.28 (16.9)* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
Dépréciation de certaines utilisations de volatile P1152R4 10 10 19.27* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
constinit ( FTM ) * P1143R2 10 10 19.29 (16.10)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Déprécier l'opérateur virgule dans les indices P1161R3 10 9 19.25* 11.0.3* 6.0 2021.7 20.11 12.0 11.0
[[ nodiscard ]] avec message P1301R4 10 9 19.25* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
Initialisation par défaut triviale dans les fonctions constexpr P1331R2 10 10 19.27* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Déclaration asm non évaluée dans les fonctions constexpr P1668R1 10 10 19.28 (16.9)* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
using enum ( FTM ) * P1099R5 11 13 19.24* 13.1.6* 6.3 2023.1 22.5 12.0
Synthèse de la comparaison à trois voies pour la catégorie de comparaison spécifiée P1186R3 11 10 19.24* 12.0.0* 6.0 2021.5 20.11 12.0 11.0
DR17 : [[ nodiscard ]] pour les constructeurs P1771R1 10 9 19.24* 11.0.3* 6.0 2021.5 20.11 12.0 11.0
déduction d'arguments de modèle de classe pour les modèles d'alias  ( FTM ) * P1814R0 10 19 19.27* 6.5 23.9 12.0
déduction d'arguments de modèle de classe pour les agrégats  ( FTM ) * P1816R0
P2082R1
10*
11*
17 19.27* 6.3 2023.1 (partiel)*
2024.1
23.3 12.0
DR11: Déplacement implicite pour plus d'objets locaux et de références rvalue P1825R0 11* 13 19.24* 13.1.6* 6.0 2021.5 20.11 12.0
Autoriser la comparaison par défaut par valeur P1946R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Supprimer std::weak_equality et std::strong_equality P1959R0 10 10 19.25* 12.0.0* 6.1 2021.7 20.11 12.0 11.0
Incohérences avec les paramètres de template constants  ( FTM ) * P1907R1 10 (partiel)
11
18 (partiel)* 19.26* 13.1.6* (partiel) 6.2 2023.1 (partiel) 21.3 12.0
DR98 : Les pseudo-destructeurs terminent les durées de vie des objets P0593R6 11 11 Oui 12.0.5* N/A 2023.1* Oui 12.0 11.0
DR11 : La conversion de T * vers bool devrait être considérée comme un rétrécissement P1957R2 10*
11*
11 19.27* 12.0.5* 6.1 12.0 11.0


Fonctionnalité C++20


Document(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

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

**Note:** Aucun texte n'a nécessité de traduction dans cet extrait HTML car : - Les balises HTML et attributs sont préservés - Le contenu dans ` ` est une balise C++ (` `) qui n'est pas traduite - Les références de document (P0754R2) et numéros de version ne sont pas traduits - Les titres des tooltips restent en anglais car ils contiennent des termes techniques spécifiques **Traductions effectuées :** - "Feature-testing macro" → "Macro de test de fonctionnalité" - Les termes C++ (`std::bit_cast()`, `FTM`, `P0476R2`) et les numéros de version ont été conservés en anglais - Toutes les balises HTML et attributs sont préservés
Fonctionnalité C++20

Document(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
std::endian ( FTM ) * P0463R1 8 7 19.22* 10.0.0*
Extension de std::make_shared() pour supporter les tableaux  ( FTM ) * P0674R1 12 15 19.27* 14.0.3*
Atome flottant ( FTM ) * P0020R6 10 18 19.22* 16.0.0*
Tampon synchronisé ( std::basic_osyncstream )  ( FTM ) * P0053R7 11 18 19.29 (16.10)*
constexpr pour <algorithm> et <utility> ( FTM ) * P0202R3 10 8 (partiel)
12
19.26* 10.0.1* (partiel)
13.0.0*
Davantage de constexpr pour <complex> ( FTM ) * P0415R1 9 7 (partiel)
16
19.27* 10.0.0* (partiel)
15.0.0*
Faire de std::memory_order une énumération scopée P0439R0 9 9 19.25* 11.0.3*
Chaîne préfixe et suffixe vérification : string (_view) ::starts_with / ends_with ( FTM ) * P0457R2 9 6 19.21* 10.0.0*
Support de la bibliothèque pour operator<=> <compare> ( FTM ) * P0768R1 10 7 (partiel)
12 (partiel)*
17
19.20* (partiel)
19.28 (16.9)*
13.0.0*
std::remove_cvref ( FTM ) * P0550R2 9 6 19.20* 10.0.0*
[[ nodiscard ]] dans la bibliothèque standard P0600R1 9 7 (partiel)
16
19.13* (partiel)
19.22*
10.0.0* (partiel)
15.0.0*
Utilisation de std::move dans les algorithmes numériques P0616R0 9 12 19.23* 13.0.0*
Utilitaire pour convertir un pointeur en pointeur brut  ( FTM ) * P0653R2 8 6 19.22* Oui
Atomique std::shared_ptr et std::weak_ptr ( FTM ) * P0718R2 12 19.27*
std::span ( FTM ) * P0122R7 10 7 19.26* 10.0.0*
Calendrier et Fuseau horaire ( FTM ) * P0355R7 11 (partiel)*
13 (partiel)*
14
7 (partiel)
19 ( partiel )*
19.29 (16.10)* 10.0.0* (partiel)
<version> P0754R2 9 7 19.22* 10.0.0*
Comparaison des conteneurs non ordonnés P0809R0 Oui Oui 16.0* Oui
ConstexprIterator exigences  ( FTM ) * ( FTM ) * P0858R0 9 12 19.11* 13.0.0*
std::basic_string::reserve() ne doit pas réduire la capacité P0966R1 11 8 19.25* 10.0.1*
Échange et comparaison atomique avec bits de remplissage P0528R3 13 19.28 (16.8)*
std::atomic_ref ( FTM ) * P0019R8 10 19 19.28 (16.8)*
contains ( ) fonction membre des conteneurs associatifs, par ex. std::map::contains() P0458R2 9 13 19.21* 13.1.6*
DR11 : Élimination garantie de la copie pour la construction par morceaux P0475R1 9 Oui 19.29 (16.10)* Oui
std::bit_cast() ( FTM ) * P0476R2 11 14 19.27* 14.0.3*
Opérations de puissance de 2 entière :

std::bit_ceil() , std::bit_floor() , std::bit_width() , std::has_single_bit() ( FTM ) *

P0556R3
P1956R1
9*
10*
9*
12*
19.25* *
19.27* *
19.28 (16.8)*
11.0.3* *
13.0.0* *
Amélioration de la valeur de retour des algorithmes de type erase  ( FTM ) * P0646R1 9 10 19.21* 12.0.0*
std::destroying_delete_t ( FTM ) * P0722R3 9 9 19.27* 11.0.3*
std::is_convertible ( FTM ) * P0758R1 9 9 19.23* 11.0.3*
Ajouter std::shift_left/right à <algorithm> ( FTM ) * P0769R2 10 12 19.21* 13.0.0*
Constexpr pour std::swap() et les fonctions liées à swap P0879R0 10 13 19.26* 13.1.6*
std::type_identity ( FTM ) * P0887R1 9 8 19.21* 10.0.1*
Bibliothèque Concepts ( FTM ) * P0898R3 10 13 19.23* 13.1.6*
constexpr opérateurs de comparaison pour std::array P1023R0 10 8 19.27* 10.0.1*
std::unwrap_ref_decay et std::unwrap_reference ( FTM ) * P0318R1 9 8 19.21* 10.0.1*
std::bind_front() ( FTM ) * P0356R5 9 13 19.25* 13.1.6*
std::reference_wrapper pour les types incomplets P0357R3 9 8 19.26* 10.0.1*
Correction de operator>>(basic_istream&, CharT*) P0487R1 11 8 19.23* 10.0.1*
Support de la bibliothèque pour char8_t ( FTM ) * P0482R6 9 8 (partiel)
16
19.22* 10.0.1* (partiel)
15.0.0*
Fonctions utilitaires pour implémenter la construction uses-allocator P0591R4 9 16 19.29 (16.10)* 15.0.0*
DR17 : std::variant et std::optional doivent propager la trivialité de copie/déplacement P0602R4 8.3 8 19.11* 10.0.1*
DR17 : Un constructeur de conversion sensé pour std::variant P0608R3 10 9 19.29 (16.10)* *
19.42* *
11.0.3*
std::function Le constructeur de déplacement de noexcept P0771R1 7.2 6 19.22* Oui
La Proposition Ranges Unifiés ( FTM ) * P0896R4 10 13 (partiel)
15*
19.29 (16.10)* 14.0.3*
Recherche hétérogène pour les conteneurs associatifs non ordonnés ( FTM ) * P0919R3
P1690R1
11 12 19.23* (P0919R3)
19.25* (P1690R1)
13.0.0*
<chrono> zero() , min() , et max() devraient être noexcept P0972R0 9 8 19.14* 10.0.1*
constexpr dans std::pointer_traits ( FTM ) * P1006R1 9 8 19.26* 10.0.1*
std::assume_aligned() ( FTM ) * P1007R3 9*
11
15 19.28 (16.9)* 14.0.3*
Création de pointeurs intelligents avec initialisation par défaut (par ex. make_unique_for_overwrite )  ( FTM ) * P1020R1
P1973R1
11*
12*
16 19.28 (16.9)* 15.0.0*
Divers constexpr bits  ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1032R1 10 13 19.28 (16.8)* 13.1.6*
Supprimer les opérateurs de comparaison de std::span P1085R2 10 8 19.26* 10.0.1*
Rendre la propagation des allocateurs avec état plus cohérente pour operator+(basic_string) P1165R1 10 15 19.26* 14.0.3*
Suppression cohérente des conteneurs, par ex. std::erase(std::vector) , ou std::erase_if(std::map) ( FTM ) * P1209R0
P1115R3
9*
10*
8*
11*
19.25* *
19.27* *
10.0.1* *
12.0.5* *
Unités d'en-tête de la bibliothèque standard P1502R1 11 19.29 (16.10)*
polymorphic_allocator<> en tant que type de vocabulaire  ( FTM ) * P0339R6 9 16 19.28 (16.9)* 15.0.0*
std::execution::unseq ( FTM ) * P1001R2 9 17 19.28 (16.8)*
std::lerp() et std::midpoint() ( FTM ) * P0811R3 9 9 19.23* (partiel)
19.28 (16.8)*
11.0.3*
Améliorations de l'utilisabilité pour std::span P1024R3 10 9*
14
19.26* 11.0.3*
DR17 : Rendre std::create_directory() intuitif P1164R1 8.3 12 19.20* 13.0.0*
std::ssize() et étendue non signée pour std::span ( FTM ) * P1227R2 10 9 19.25* 11.0.3*
Traits pour les tableaux ( non ) bornés ( FTM ) * P1357R1 9 9 19.25* 11.0.3*
std::to_array() ( FTM ) * P0325R4 10 10 19.25* 12.0.0*
Accès efficace au tampon de std::basic_stringbuf P0408R7 11 17 19.29 (16.10)* 15.0.0*
Compatibilité - de disposition et interconvertibilité - de pointeurs traits  ( FTM ) * ( FTM ) * P0466R5 12 19.29 (16.10)* *
Opérations binaires : std ::

rotl() , rotr() , countl_zero() , countl_one() , countr_zero() , countr_one() , popcount() ( FTM ) *

P0553R4 9 9 19.25* *
19.28 (16.8)*
11.0.3*
Constantes mathématiques ( FTM ) * P0631R8 10 11 19.25* 12.0.5*
Formatage de texte ( FTM ) * P0645R10 13 14 * *
17
19.29 (16.10)* 15.0.0*
std::stop_token et std::jthread ( FTM ) * P0660R10 10 17
(partiel)*

20*
19.28 (16.9)*
constexpr std::allocator et utilitaires associés  ( FTM ) * P0784R7 10 12 19.29 (16.10)* 13.0.0*
constexpr std::string ( FTM ) * P0426R1
P1032R1
P0980R1
12 15 19.29 (16.10)*
19.30* *
14.0.3*
constexpr std::vector ( FTM ) * P1004R2 12 15 19.29 (16.10)*
19.30* *
14.0.3*
Entrée adaptateurs de plages P1035R7 10 16 19.29 (16.10)* 15.0.0*
constexpr std::invoke() et utilitaires associés P1065R2 10 12 19.28 (16.8)* 13.0.0*
Attente et notification atomiques, std::counting_semaphore , std::latch et std::barrier ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * ( FTM ) * P1135R6 11 11 19.28 (16.9)* 13.1.6*
std::source_location ( FTM ) * P1208R6 11 15*
(partiel)
16
19.29 (16.10)* 15.0.0*
Ajout de <=> à la bibliothèque standard P1614R2 10 14*
(partiel)
17*
(partiel)
19
19.29 (16.10)* 13.1.6* (partiel)
constexpr constructeur par défaut de std::atomic et std::atomic_flag ( FTM ) * P0883R2 10 13 19.26* 13.1.6*
constexpr pour algorithmes numériques ( FTM ) * P1645R1 10 12 19.26* 13.0.0*
Comparaisons sécurisées d'entiers ( FTM ) * P0586R2 10 13 19.27* 13.1.6*


Fonctionnalité C++20


Document(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

Normes antérieures

Voir aussi

Test des fonctionnalités (C++20) Un ensemble de macros de préprocesseur pour tester les fonctionnalités correspondantes du langage C++ et de la bibliothèque
Documentation C pour la prise en charge par le compilateur