Compiler support for C++26
*
- 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++26
|
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 standards | 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 paquets ( 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 temporaire | P2748R5 | 14 | 19 | ||||||||
| Attributs pour 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
|
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 de 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* | |||
| Davantage 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 pour 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* | ||
| Ajout du protocole tuple à 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 devrait 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 à des lvalues au lieu de références universelles | 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 | ||||
| Concaténation de chaînes et de vues de chaînes ( 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 intégrales | 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* * | ||
| Ne plus déprécier 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 de 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
|
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*
|