Compiler support for C++26
From cppreference.com
< cpp | compiler support
* - hover over a cell marked with the star * to see additional pop-up notes.
DRnn - the number nn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.
[edit] C++26 core language features
C++26 feature |
Paper(s) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
|
---|---|---|---|---|---|---|---|---|---|---|---|
DR98: Removing undefined behavior from lexing | P2621R3 | Yes | 3.3 | 16.0.0* | |||||||
DR98: Making non-encodable string literals ill-formed | P1854R4 | 14 | 14 | 16.0.0* | |||||||
Unevaluated strings | P2361R6 | 14 | 17 (partial)* 18 |
16.0.0* | |||||||
Adding @ , $ , and ` to the basic character set
|
P2558R2 | 15 | Yes | 16.0.0* | |||||||
constexpr cast from void* (FTM)* | P2738R1 | 14 | 17 | ||||||||
DR20: On the ignorability of standard attributes | P2552R3 | 15 | Yes | ||||||||
DR11: Static storage for braced initializers | P2752R3 | 14 | |||||||||
User-generated static_assert messages (FTM)* | P2741R3 | 14 | 17 | ||||||||
Placeholder variables with no name (FTM)* | P2169R4 | 14 | 18 | ||||||||
Pack indexing (FTM)* | P2662R3 | 15 | 19 | ||||||||
Removing deprecated arithmetic conversion on enumerations | P2864R2 | 14 | 18 | ||||||||
DR11/20: Template parameter initialization | P2308R1 | 9 | 18 | ||||||||
Disallow binding a returned reference to a temporary | P2748R5 | 14 | 19 | ||||||||
Attributes for structured bindings (FTM)* | P0609R3 | 15 | 19 | ||||||||
Erroneous behavior for uninitialized reads, [[indeterminate]] attribute
|
P2795R5 | ||||||||||
= delete("reason"); (FTM)* | P2573R2 | 15 | 19 | ||||||||
Variadic friends (FTM)* | P2893R3 | 15 | 20 | ||||||||
DR98: Clarifying rules for brace elision in aggregate initialization | P3106R1 | Yes | 17 | ||||||||
DR20: Disallow module declarations to be macros | P3034R1 | 15 | |||||||||
DR11: Trivial infinite loops are not undefined behavior | P2809R3 | 14 | 19 | ||||||||
constexpr placement new (FTM)* (FTM)* | P2747R2 | 15 | 20 | ||||||||
Structured binding declaration as a condition (FTM)* | P0963R3 | 15 | 6 (partial)* 21 |
||||||||
Ordering of constraints involving fold expressions (FTM)* | P2963R3 | 19 | |||||||||
Deleting a pointer to an incomplete type should be ill-formed | P3144R2 | 15 | 19 | 6.7 | |||||||
Structured bindings can introduce a pack (FTM)* | P1061R10 | 21 | |||||||||
constexpr structured bindings and references to constexpr variables | P2686R5 | 6.7 | |||||||||
constexpr exceptions: [1], [2] (FTM)* | P3068R6 | ||||||||||
Oxford variadic comma | P3176R1 | 15 | 20 | ||||||||
Removing deprecated array comparisons | P2865R6 | 15 | 20 | ||||||||
#embed (FTM)*
|
P1967R14 | 15 | 19* | ||||||||
Concept and variable-template template-parameters (FTM)* | P2841R7 | ||||||||||
Trivial relocatability (FTM)* | P2786R13 | 21* | |||||||||
Trivial unions (FTM)* | P3074R7 | ||||||||||
Observable checkpoints | P1494R5 | ||||||||||
Contracts (FTM)* | P2900R14 | ||||||||||
C++26 feature |
Paper(s) |
GCC |
Clang |
MSVC |
Apple Clang |
EDG eccp |
Intel C++ |
Nvidia HPC C++ (ex PGI)* |
Nvidia nvcc |
Cray |
[edit] C++26 library features
C++26 feature |
Paper(s) |
GCC libstdc++ |
Clang libc++ |
MSVC STL |
Apple Clang* |
|
---|---|---|---|---|---|---|
Testing for success or failure of <charconv> functions (FTM)* | P2497R0 | 14 | 18 | 16.0.0* | ||
std::text_encoding: text encodings identification (FTM)* | P1885R12 P2862R1 |
14 | ||||
Arithmetic overloads of std::to_string and std::to_wstring use std::format (FTM)* | P2587R3 | 14 | ||||
Type checking format args (FTM)* | P2757R3 | 15 | ||||
Formatting pointers (FTM)* | P2510R3 | 14* | 17* | 19.40** | ||