Namespaces
Variants
Views
Actions

C++23

From cppreference.com
< cpp

The next generation of the C++ standard

see: The current IS schedule for C++23

Contents

[edit] New language features

[edit] New library features

[edit] Defect reports

[edit] Compiler support

[edit] C++23 core language features

C++23 feature
 
Paper(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++
(ex Portland Group/PGI)
Nvidia nvcc
Literal suffix for (signed) size_t P0330R8 11 13
Make () more optional for lambdas P1102R2 11 13
if consteval P1938R3 12 14
Removing Garbage Collection Support P2186R2 12
DR: C++ Identifier Syntax using Unicode Standard Annex 31 P1949R7 12 14
DR: Allow Duplicate Attributes P2156R1 11 13
Narrowing contextual conversions in static_assert and constexpr if P1401R5 9 13 (partial)*
14
Trimming whitespaces before line splicing P2223R2 Yes Yes Yes
Make declaration order layout mandated P1847R4 Yes Yes Yes Yes
Removing mixed wide string literal concatenation P2201R1 Yes Yes Yes Yes Yes
Deducing this P0847R7
auto(x) and auto{x} P0849R8 12
Change scope of lambda trailing-return-type P2036R3
#elifdef and #elifndef P2334R1 12 13
Non-literal variables (and labels and gotos) in constexpr functions P2242R3 12
Consistent character literal encoding P2316R2 Yes Yes
Character sets and encodings P2314R4 Yes
Extend init-statement to allow alias-declaration P2360R0 12 14
Multidimensional subscript operator P2128R6 12
C++23 feature
 
Paper(s)
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++
Nvidia nvcc

[edit] C++23 library features

C++23 feature
 
Paper(s)
 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang
Sun/Oracle C++
Standard Library
Embarcadero C++ Builder
Standard Library
Cray C++
Standard Library
Stacktrace library P0881R7
<stdatomic.h> P0943R6 19.31*
std::is_scoped_enum P1048R1 11 12 19.30*
basic_string::contains(), basic_string_view::contains() P1679R3 11 12 19.30*
std::to_underlying P1682R3 11 13 19.30*
Relaxing requirements for time_point<>::clock P2212R2 N/A N/A
DR: std::visit() for classes derived from std::variant P2162R2 12 13 19.20**
19.30*
DR: Conditionally borrowed ranges P2017R1 11 19.30*
DR: Repairing input range adaptors and std::counted_iterator P2259R1 12 19.30*(partial)*
19.31*
Providing size feedback in the Allocator interface P0401R6 19.30*
<spanstream> : string-stream with std::span-based buffer P0448R4 12 19.31*
std::out_ptr(), std::inout_ptr() P1132R8 19.30*
constexpr type_info::operator==() P1328R1
Iterator pair constructors for std::stack and std::queue P1425R4 12 19.31*
Non-deduction context for allocators in container deduction guides P1518R2 12 13 19.31*
ranges::starts_with() and ranges::ends_with() P1659R3 19.31*
Prohibiting std::basic_string and std::basic_string_view construction from nullptr P2166R1 12 13 19.30*
std::invoke_r() P2136R3 12 19.31*
Range constructor for std::basic_string_view P1989R2 11 14 19.30*
Default template arguments for pair's forwarding constructor P1951R1 12 14 19.30*
Remove Garbage Collection and Reachability-Based Leak Detection (library support) P2186R2 12 14 19.30*
DR: join_view should join all views of ranges P2328R1 11.2 19.30*
DR: view does not require default_initializable P2325R3 12 19.30*
DR: Range adaptor objects bind arguments by value P2281R1 11 19.29 (16.10)*
(partial)*
19.31*
DR: constexpr for std::optional and std::variant P2231R1 12 13 (partial)* 19.31*
DR: std::format() improvements P2216R3 14 (partial)*
DR: lazy_split_view and redesigned split_view P2210R2 12 19.31*
Alias std::pmr::stacktrace P2301R1
zip P2321R2
Heterogeneous erasure overloads for associative containers P2077R3
std::byteswap() P1272R4 12 14 19.31*
Printing volatile T* P1147R1 12 14 19.31*
basic_string::resize_and_overwrite() P1072R10 12 19.31*
Monadic operations for std::optional P0798R8 12
std::move_only_function P0288R9 12
Add a conditional noexcept specification to std::exchange P2401R0 12 14 19.25*
Require span & basic_string_view to be TriviallyCopyable P2251R1 Yes Yes Yes Yes
Clarifying the status of the “C headers” P2340R1
DR: Fix ranges::istream_view P2432R1 12 19.31*
DR: Add support for non-const-formattable types to std::format P2418R2
DR: What is a view P2415R2 19.31*
DR: fixing locale handling in chrono formatters P2372R3 19.31*
DR: Cleaning up integer-class types P2393R1
C++23 feature
 
Paper(s)
 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang
Sun/Oracle C++
Standard Library
Embarcadero C++ Builder
Standard Library
Cray C++
Standard Library