Namespaces
Variants

Compiler support for C++23

From cppreference.net

* - 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 fondamentales du langage C++23

Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le texte `if consteval` et les termes C++ spécifiques ont été conservés en anglais comme demandé - Toutes les balises HTML et attributs sont préservés - Le contenu des balises ` `, `
`, `` n'est pas présent dans ce fragment
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 la concaténation de lignes P2223R2 Oui Oui Oui 6.7 2022.2 Oui
Rendre obligatoire la disposition de l'ordre des déclarations 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
Autoriser static constexpr variables dans les fonctions constexpr ( FTM ) * P2647R1 13 16 16.0.0* 2023.2
Extension de la durée de vie des temporaires dans l'initialisateur 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 attributes 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

Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le reste du contenu (balises HTML, `std::invoke_r()`, `FTM`, `P2136R3`, et les numéros de version) a été conservé tel quel conformément aux instructions. Seul le texte "Feature-testing macro:" a été traduit en "Macro de test de fonctionnalité :" car c'est le seul contenu textuel non technique qui nécessitait une traduction. Tous les autres éléments (balises HTML, termes C++, codes, numéros de version, etc.) ont été conservés dans leur forme originale conformément aux instructions. 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, termes C++ comme `constexpr` et `std::unique_ptr`, codes de version, etc.) ont été conservés dans leur forme originale. Seules les parties suivantes ont été traduites : - "Feature-testing macro" → "Macro de test de fonctionnalité" - Le reste du contenu (balises HTML, `views::join_with`, `FTM`, `P2441R2`, 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, P0429R9, et les numéros de version) a été préservé 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 ont été préservés **Note:** Aucun texte n'a été traduit dans cet extrait car : - Les balises HTML et leurs attributs doivent être préservés - Le texte dans les balises ` ` et ` ` ne doit pas être traduit - Les termes spécifiques au C++ (`basic_string::substr()`, `P2438R2`) ne doivent pas être traduits - Les numéros de version et les valeurs numériques ne sont pas traduits Si vous avez d'autres parties de texte à traduire (en dehors des restrictions mentionnées), je serais heureux de vous aider. **Traduction :** **Notes de traduction :** - "Ranges" est conservé tel quel (terme technique C++) - "FTM" est conservé (acronyme technique) - "Feature-testing macro" traduit par "Macro de test de fonctionnalité" - Les numéros de versions et codes (P2609R3, 202302L) sont conservés - La structure HTML et tous les attributs sont préservés **Note:** Dans ce fragment HTML, le seul texte à traduire est "DR20:" qui signifie "Defect Report 20" (Rapport de défaut 20). Cependant, "DR" est un terme technique C++ standard qui ne doit pas être traduit. Le reste du contenu est soit des balises HTML, du code C++ (`std::basic_format_string`), ou des références techniques qui doivent rester en anglais selon les consignes.
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
Fourniture de 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 paires 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 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 template par défaut pour le std::pair constructeur de forwarding P1951R1 14 14 19.30* 14.0.3*
Supprimer le ramasse-miettes et la détection de fuites basée sur la reachability ( 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 insert et assign  ( 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 objet explicite LWG3617 14 19.34*
Guides de déduction mis à jour pour static operator ( ) P1169R4 13 16 19.39* 15.0.0*
Noms standards 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*
Interdire 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: Relaxing Ranges Just A Smidge  ( FTM ) * P2609R3 15 20 19.37*
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 du 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 redessiné 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 locales 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 Poison Pills 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*