The next generation of the C++ standard.
The current IS schedule for C++26:
(2024-05-14).
New language features
New library features
New modules
C compatibility headers:
Obsolete features
Removed features
Deprecated features
Defect reports
Compiler support
Main Article:
C++26 core language features
C++26 featurePaper(s)GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
DR98: Removing undefined behavior from lexing
Yes 3.3 16.0.0*DR98: Making non-encodable string literals ill-formed
14 14 16.0.0*
14 17 (partial)*
18 16.0.0*Adding @, $, and ` to the
15 Yes 16.0.0*Constexpr cast from void* (
)*
14 17 DR20: On the ignorability of standard attributes
15 Yes DR11: Static storage for braced initializers
14 User-generated
messages (
)*
14 17
Placeholder variables with no name
(
)*
14 18
(
)*
15 19 6.9 Removing deprecated arithmetic conversion on enumerations
14 18 DR11/20: Template parameter initialization
9 18 Disallow binding a returned reference to a
14 19 Attributes for
(
)*
15 19 Erroneous behavior for
, [[
]] attribute
16 6.8 (partial) =delete("reason"); (
)*
15 19
(
)*
15 20 DR98: Clarifying rules for brace elision in
Yes 17 DR20: Disallow module declarations to be macros
15 DR11: Trivial infinite loops are not undefined behavior
14 19 Constexpr
(
)*
15 20
declaration as a condition (
)*
15 6 (partial)*
21 Ordering of
involving
(
)*
19
a pointer to an incomplete type should be ill-formed
15 19 6.7
can introduce a
(
)*
16 21 6.9 Constexpr
and references to constexpr variables
16*22 (partial)*6.7 Constexpr
(
)*
16 Oxford variadic comma
15 20 Removing deprecated array comparisons
15 20
(
)*
15 19*6.8 Concept and variable-template template-parameters (
)*
22 (partial)*Trivial unions (
)*
Observable checkpoints
16
(
)*
16 Reflection (
)*
16*Expansion statements (
)*
16 Constexpr virtual inheritance (
)*
16 Diagnosing Preprocessor Errors
16 Allowing attaching main to the global module
16 DR20: Allowing
before module declarations
DR17: Class template argument deduction for type template template parameters
6.9 Const-ification of splice expressions in contract assertions
C++26 feature
Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
C++26 library features
C++26 featurePaper(s)GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Testing for success or failure of
functions (
)*
14 18 16.0.0*std::text_encoding: text encodings identification (
)*
14 Arithmetic overloads of
and
use
(
)*
14 Type checking format args (
)*
15 Formatting pointers (
)*
14*17*19.40**
support for
value classes (
)*
16
:
(
)*
:
(
)*
ADL-proof
14*18*19.38**16.0.0*Constexpr stable sorting (
)*
15 21 Member
std::basic_format_arg::visit()
(
)*
15 19 Member
(
)*
15 18 std::is_within_lifetime (
)*
22 (partial)*Extending associative containers with the remaining heterogeneous overloads (
)*
16 Enabling the use of
as keys in unordered associative containers (
)*
16 Native handles in file streams (
)*
14 18 16.0.0*Interfacing string streams with
(
)*
16 19 Interfacing
with
(
)*
16 18 16.0.0*More constexpr for
and
(
)* (
)*
4.6 (partial)*Adding the new 2022 SI prefixes on ratios: std::quecto, std::ronto, std::ronna, and std::quetta (
)*
14 17*std::function_ref: type-erased callable reference (
)*
16 24 std::copyable_function (
)*
16
,
, and
to NTTP callables
(
)* (
)* (
)*
16 std::submdspan() (
)*
16 Freestanding Language: Optional
19.38*Freestanding
,
and facilities in:
,
,
,
(
)* (
)* (
)* (
)* (
)* (
)*
19.38*More freestanding facilities
(
)* (
)* (
)* (
)* (
)* (
)* (
)* (
)*
19.38*
(
)*
14
16*18 16.0.0*
:
(
)*
16*
: A free function linear algebra interface based on the BLAS (
)*
Making
macro user friendly
Yes*Dynamic format strings (
)*
14*
16*18 16.0.0*std::span::at() (
)*
14 18 16.0.0*Added tuple protocol to
(
)*
15 19 A new specification for
16 19.42*Removing deprecated typedef std::allocator::is_always_equal
15 18 16.0.0*Removing function overload of
that takes no argument
18 16.0.0*Removing deprecated Unicode conversion facets (
)
18 16.0.0*Freestanding: removing
(
)*
14 19.40*Freestanding Library: Partial Classes (
)* (
)* (
)* (
)* (
)*
14 19.42*Freestanding Library: std::inout, std::expected, std::span
(
)* (
)* (
)* (
)*
14 19.42*DR23: std::basic_const_iterator should follow its underlying type’s convertibility (
)*
14 19.40*DR20:
now accepts only lvalue references instead of forwarding references
14 18 19.40*16.0.0*DR20: Fix formatting of code units as integers (
)*
13.3 18 19.40*16.0.0*views::concat (
)*
15 Concatenation of
and
(
)*
15 19 Enabling list-initialization for
(
)*
15 std::ranges::generate_random (
)*
for
, and constraints for comparisons of
,
,
, and
(
)* (
)*
14 22
19 (partial)*Padded mdspan layouts (
)*
16 New CTAD for std::span and std::mdspan with integral constants
16 19 Atomic maximum and minimum (
)*
16 std::formatter<std::filesystem::path> (
)*
16 Printing Blank Lines with std::println() (
)*
14*19*19.41**Undeprecate std::polymorphic_allocator::destroy
14.3*15 19.41*Removing deprecated strstreams
19 Removing deprecated
Atomic Access APIs
Removing
19 DR23: Permit an efficient implementation of std::print (
)*
16 19.43*Constexpr
(
)*
15 20
(
)*
Additional
fixes
std::inplace_vector: dynamically-resizable vector with fixed capacity (
)*
16 std::philox_engine: counter-based random number engine (
)*
16
range support (
)*
16 22 (partial)*std::is_virtual_base_of: type trait for detecting virtual base classes (
)*
15 20 std::dims for std::mdspan (
)*
16 19 DR11: Formal specification of the type of
15 19 19.42*DR20: Removing the common reference requirement from the indirectly invocable concepts (
)*
15 19 19.42*Deprecating
and
15 21 DR20: Algorithm function objects
Yes Yes 19.39*Yes
std::ranges::cache_latest_view
(
)*
15 Constraining std::expected
(
)*
15 22 std::aligned_accessor: an std::mdspan accessor expressing pointer over-alignment (
)*
16 std::is_sufficiently_aligned: checks a pointer’s alignment precondition (
)*
16 std::atomic_ref::address() (
)*
16 (partial)*22 (partial)*DR11/20: cv-qualified types in
and std::atomic_ref
16 19.44*Constexpr
and std::atomic_ref (
)*
Constexpr
(
)*
15
and
(
)* (
)*
15*
16
:
(
)*
16 (partial)*SIMD math operations
A utility for creating
Constexpr exception types, e.g.
,
etc. (
)*
16 std::simd::chunk
16 SIMD bit operations (
)*
Interleaved
values support in std::simd (
)*
Defang and deprecate
Put
in
15 21 19.50*std::indirect (
)*
16 std::polymorphic (
)*
16 More constexpr containers and adaptors
(
)* (
)* (
)* (
)* (
)* (
)* (
)* (
)* (
)* (
)* (
)*
16 (partial)*21 (partial)*
22 (partial)*Constexpr std::inplace_vector for non-trivial types (
)*
(
)*
15*
16*
std::ranges::approximately_sized_range
and
(
)*
: A bucket-based container that re-uses memory locations from erased elements (
)*
Library support for observable checkpoints (
)*
16
: Contract-violation handling support (
)*
16 Standard library hardening
15 (partial)*19.44* (partial)*19.50* (partial)*Freestanding library:
,
,
,
and
(
)* (
)* (
)* (
)* (
)*
DR20: Converting contiguous iterators to pointers
15 19.51*
: Reflection library support (
)*
16 (partial)*Constexpr exceptions as error handling in reflection (
)*
16 std::define_static_object, std::define_static_array, std::define_static_string (
)*
16 std::simd::basic_vec and std::simd::basic_mask are range types
16 std::optional<T&> (
)* (
)*
16 22 std::string::subview() and std::string_view::subview() (
)*
16 22 Constexpr
and friends (
)*
Coroutine task types (
)*
Async scopes: creating scopes for non-sequential concurrency (
)*
Parallel scheduler (
)*
High-quality sender diagnostics with constexpr exceptions
execution::write_env and execution::unstoppable sender adaptors
std::views::indices (
)*
16 Parallel range algorithms (
)*
Atomic floating-point min/max (
)*
Atomic reduction operations (
)*
SIMD permutation operations (
)*
std::mdspan::at()
16 std::exception_ptr_cast() (
)*
16 (partial)*Standardized constexpr type ordering (
)*
16 std::constant_wrapper (
)*
16 23
changes: std::apply_result, std::is_applicable and std::is_nothrow_applicable (
)*
Making type-erased allocator use in
and
consistent
17 19.51*std::filesystem::path::display_string() and std::filesystem::path::native_encoded_string() (
)*
Making
less surprising
16 19.50*DR11: Resolved inconsistencies in begin/end for
and
(
)* (
)*
19.51*std::flat_meow fixes (
)* (
)*
22 19.51*Making
usable in structured bindings and expansion statements (
)*
16 22 Constexpr text formatting (
)*
std::start_lifetime (
)*
std::is_structural: type trait for detecting
(
)*
16 std::constant_wrapper used as a std::function_ref constructor argument
16 24 Supporting signedchar and unsignedchar in random number generation
Implementation-defined replaceability detection of the contract- violation handler using feature macro (
)*
16 DR20: Making user-defined constructors of view iterators/sentinels private
Yes DR20: Filter view extensions for safer use (
)*
16 C++26 feature
Paper(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
* - 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.
External links