* - hover over a cell marked with the star* to see additional pop-up notes.
DRnn - the numbernn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.
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 thebasic character set | P2558R2 | 15 | Yes | 16.0.0* | |||||||
constexpr cast fromvoid* (FTM)* | P2738R1 | 14 | 17 | ||||||||
DR20: On the ignorability of standard attributes | P2552R3 | 15 | Yes | ||||||||
DR11: Static storage for braced initializers | P2752R3 | 14 | |||||||||
User-generatedstatic_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 atemporary | P2748R5 | 14 | 19 | ||||||||
Attributes forstructured bindings (FTM)* | P0609R3 | 15 | 19 | ||||||||
Erroneous behavior foruninitialized reads,[[indeterminate]] attribute | P2795R5 | ||||||||||
= delete("reason"); (FTM)* | P2573R2 | 15 | 19 | ||||||||
Variadicfriends (FTM)* | P2893R3 | 15 | 20 | ||||||||
DR98: Clarifying rules for brace elision inaggregate 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 ofconstraints involvingfold expressions (FTM)* | P2963R3 | 19 | |||||||||
Deleting a pointer to an incomplete type should be ill-formed | P3144R2 | 15 | 19 | 6.7 | |||||||
Structured bindings can introduce apack (FTM)* | P1061R10 | 21 | |||||||||
constexprstructured bindings and references toconstexpr variables | P2686R5 | 6.7 | |||||||||
constexprexceptions:[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 |
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 ofstd::to_string andstd::to_wstring usestd::format (FTM)* | P2587R3 | 14 | ||||
Type checking format args (FTM)* | P2757R3 | 15 | ||||
Formatting pointers (FTM)* | P2510R3 | 14* | 17* | 19.40** | ||
Hashing support forstd::chrono value classes (FTM)* | P2592R3 | |||||
<rcu>:Read-Copy Update (FTM)* | P2545R4 | |||||
<hazard_pointer>:Hazard pointers (FTM)* | P2530R3 | |||||
ADL-proofstd::projected | P2538R1 | 14* | 18* | 19.38** | 16.0.0* | |
constexpr stable sorting (FTM)* | P2562R1 | 15 | 21 | |||
Memberstd::basic_format_arg::visit() (FTM)* | P2637R3 | 15 | 19 | |||
Memberstd::variant::visit() (FTM)* | P2637R3 | 15 | 18 | |||
std::is_within_lifetime (FTM)* | P2641R4 | |||||
Extending associative containers with the remaining heterogeneous overloads (FTM)* | P2363R5 | |||||
Enabling the use ofstd::weak_ptr as keys in unordered associative containers (FTM)* | P1901R2 | |||||
Native handles in file streams (FTM)* | P1759R6 | 14 | 18 | 16.0.0* | ||
Interfacing string streams withstd::string_view (FTM)* | P2495R3 | 19 | ||||
Interfacingstd::bitset withstd::string_view (FTM)* | P2697R1 | 18 | 16.0.0* | |||
Moreconstexpr for<cmath> and<complex> (FTM)* (FTM)* | P1383R2 | 4.6 (partial)* | ||||
Adding the new 2022 SI prefixes on ratios:std::quecto,std::ronto,std::ronna, andstd::quetta (FTM)* | P2734R0 | 14 | 17* | |||
std::function_ref: type-erased callable reference (FTM)* | P0792R14 | |||||
std::copyable_function (FTM)* | P2548R6 | 16 | ||||
std::bind_front,std::bind_back, andstd::not_fn to NTTP callables (FTM)* (FTM)* (FTM)* | P2714R1 | |||||
std::submdspan() (FTM)* | P2630R4 P3355R1 | |||||
Freestanding language: Optional::operator new | P2013R5 | N/A | ||||
Freestandingstd::char_traits,std::errc and facilities in:<charconv>,<cstdlib>,<cstring>,<cwchar> (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P2338R4 | N/A | ||||
More freestanding facilities (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P2198R7 | N/A | ||||
Saturation arithmetic (FTM)* | P0543R3 | 14 | 18 | 16.0.0* | ||
<debugging>:Debugging support (FTM)* | P2546R5 P2810R4 | |||||
<linalg>: A free function linear algebra interface based on the BLAS (FTM)* | P1673R13 P3050R2 P3222R0 | |||||
Makingassert() macro user friendly | P2264R7 | |||||
Runtime format strings (FTM)* | P2918R2 | 14 | 18 | 16.0.0* | ||
std::span over an initializer list (FTM)* | P2447R6 | 15 | 18 | 16.0.0* | ||
std::span::at() (FTM)* | P2821R5 | 14 | 18 | 16.0.0* | ||
Added tuple protocol tostd::complex (FTM)* | P2819R2 | 15 | 19 | |||
A new specification forstd::generate_canonical | P0952R2 | 19.42* | ||||
Removing deprecated typedefstd::allocator::is_always_equal | P2868R3 | 15 | 18 | 16.0.0* | ||
Removing function overload ofstd::basic_string::reserve() that takes no argument | P2870R3 | 18 | 16.0.0* | |||
Removing deprecated Unicode conversion facets (<codecvt>) | P2871R3 | 18 | 16.0.0* | |||
Freestanding: removingstd::strtok (FTM)* | P2937R0 | 14 | 19.40* | |||
Freestanding library: partial classes (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P2407R5 | 14 | 19.42* | |||
Freestanding library:std::inout,std::expected,std::span (FTM)* (FTM)* (FTM)* (FTM)* | P2833R2 | 14 | 19.42* | |||
DR23:std::basic_const_iterator should follow its underlying type’s convertibility (FTM)* | P2836R1 P2950R0 | 14 | 19.40* | |||
DR20:std::make_format_args now accepts only lvalue references instead of forwarding references | P2905R2 | 14 | 18 | 19.40* | 16.0.0* | |
DR20: Fix formatting of code units as integers (FTM)* | P2909R4 | 13.3 | 18 | 19.40* | 16.0.0* | |
views::concat (FTM)* | P2542R8 | 15 | ||||
Concatenation ofstrings andstring views (FTM)* | P2591R5 | 15 | 19 | |||
Enabling list-initialization foralgorithms (FTM)* | P2248R8 P3217R0 | 15 | ||||
std::ranges::generate_random (FTM)* | P1068R11 | |||||
Comparisons forstd::reference_wrapper, and constraints for comparisons ofstd::pair,std::tuple,std::optional, andstd::variant (FTM)* (FTM)* | P2944R3 | 14 | 19 (partial)* | |||
Padded mdspan layouts (FTM)* | P2642R6 | |||||
New CTAD forstd::span andstd::mdspan with integral constants | P3029R1 | 19 | ||||
Atomic maximum and minimum (FTM)* | P0493R5 | |||||
std::formatter<std::filesystem::path> (FTM)* | P2845R8 | |||||
Printing Blank Lines withstd::println() (FTM)* | P3142R0 | 14* | 19* | 19.41** | ||
Undeprecatestd::polymorphic_allocator::destroy | P2875R4 | 15 | 19.41* | |||
Removing deprecated strstreams | P2867R2 | 19 | ||||
Removing deprecatedstd::shared_ptr Atomic Access APIs | P2869R4 | |||||
Removingstd::wstring_convert | P2872R3 | 19 | ||||
DR23: Permit an efficient implementation ofstd::print (FTM)* | P3107R5 P3235R3 | 19.43* | ||||
Execution control library (FTM)* | P2300R10 P3396R0 | |||||
std::inplace_vector: dynamically-resizable vector with fixed capacity (FTM)* | P0843R14 | |||||
std::philox_engine: counter-based random number engine (FTM)* | P2075R6 | |||||
std::optional range support (FTM)* | P3168R2 | |||||
std::is_virtual_base_of: type trait for detecting virtual base classes (FTM)* | P2985R0 | 15 | 20 | |||
std::dims forstd::mdspan (FTM)* | P2389R2 | 19 | ||||
DR11: Formal specification of the type ofstd::ignore | P2968R2 | 15 | 19 | 19.42* | ||
DR20: Removing the common reference requirement from the indirectly invocable concepts (FTM)* | P2997R1 | 15 | 19 | 19.42* | ||
Deprecatingstd::is_trivial andstd::is_trivial_v | P3247R2 | 15 | 21 | |||
DR20: Algorithm function objects | P3136R1 | Yes | 14 | 19.39* | 14.0.3* | |
std::ranges::cache_latest_view (FTM)* | P3138R5 | 15 | ||||
Constrainingstd::expectedequality operators (FTM)* | P3379R0 | 15 | ||||
std::aligned_accessor: anstd::mdspan accessor expressing pointer over-alignment (FTM)* | P2897R7 | 21 | ||||
std::is_sufficiently_aligned: checks a pointer’s alignment precondition (FTM)* | P2897R7 | 21 | ||||
std::atomic_ref::address() (FTM)* | P2835R7 | |||||
DR11/20: cv-qualified types instd::atomic andstd::atomic_ref | P3323R1 | 19.44* | ||||
constexprstd::atomic andstd::atomic_ref (FTM)* | P3309R3 | |||||
constexpr forspecialized memory algorithms (FTM)* | P3508R0 P3369R0 | 15 | ||||
<stdbit.h> and<stdckdint.h> | P3370R1 | 15 | ||||
<simd>:data-parallel types (FTM)* (FTM)* | P1928R15 P3430R3 P3441R2 P3287R3 P2663R7 P2933R4 | |||||
A utility for creatingexecution environments | P3325R5 | |||||
constexpr for exception types, e.g.std::bad_alloc,std::bad_cast etc. (FTM)* | P3068R6 P3378R2 | |||||
Trivial relocatability traits and operations (FTM)* | P2786R13 | |||||
Defang and deprecatestd::memory_order::consume | P3475R1 | |||||
Putstd::monostate in<utility> | P0472R3 | 15 | 21 | 19.50* | ||
std::indirect (FTM)* | P3019R14 | |||||
std::polymorphic (FTM)* | P3019R14 | |||||
Moreconstexpr for containers and container adaptors: 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, andstd::unordered_multiset | P3372R3 | |||||
constexprstd::inplace_vector for non-trivial types (FTM)* | P3074R7 | |||||
std::ranges::to_input_view (FTM)* | P3137R3 | 15 | ||||
std::ranges::approximately_sized_range andstd::ranges::reserve_hint (FTM)* | P2846R6 | |||||
<hive>: A bucket-based container that re-uses memory locations from erased elements (FTM)* | P0447R28 | |||||
<contracts>: Contract-violation handling support (FTM)* | P2900R14 | |||||
Standard library hardening (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P3471R4 | 15(partial)* | 19.44*(partial)* | |||
Freestanding library:<algorithm>,<numeric>,<random>, (<execution>,<memory>) (FTM)* (FTM)* (FTM)* (FTM)* (FTM)* | P2976R1 | |||||
DR20: Converting contiguous iterators to pointers | P3349R0 | 15 | ||||
C++26 feature | Paper(s) | GCC libstdc++ | Clang libc++ | MSVC STL | Apple Clang* |