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
Removing Garbage Collection Support P2186R2
C++ Identifier Syntax using Unicode Standard Annex 31 P1949R7
Allow Duplicate Attributes P2156R1 11
Narrowing contextual conversions in static_assert and constexpr if P1401R5 9
Trimming whitespaces before line splicing P2223R2 Yes
Make declaration order layout mandated P1847R4
Removing mixed wide string literal concatenation P2201R1 Yes Yes Yes Yes Yes
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
std::is_scoped_enum P1048R1 11 12 19.30*
basic_string::contains(), basic_string_view::contains() P1679R3 11 12
std::to_underlying P1682R3 11 13
std::visit for classes derived from std::variant P2162R2 13 19.20**
Relaxing requirements for time_point<>::clock P2212R2 N/A N/A
DR: Conditionally borrowed ranges P2017R1 19.30*
DR: Repairing input range adaptors and std::counted_iterator P2259R1
Providing size feedback in the Allocator interface P0401R6
<spanstream> : string-stream with std::span-based buffer P0448R4
std::out_ptr(), std::inout_ptr() P1132R7
constexpr type_info::operator==() P1328R1
Iterator pair constructors for std::stack and std::queue P1425R4
Non-deduction context for allocators in container deduction guides P1518R2
ranges::starts_with() and ranges::ends_with() P1659R3
Prohibiting std::basic_string and std::basic_string_view construction from nullptr P2166R1
std::invoke_r() P2136R3
Range constructor for std::basic_string_view P1989R2 11
Default template arguments for pair's forwarding constructor P1951R1
Remove Garbage Collection and Reachability-Based Leak Detection (library support) P2186R2
DR: join_view should join all views of ranges P2328R1
DR: view does not require default_initializable P2325R3
DR: Range adaptor objects bind arguments by value P2281R1 19.29 (16.10)*
DR: constexpr for std::optional and std::variant P2231R1
DR: std::format() improvements P2216R3
DR: lazy_split_view and redesigned split_view P2210R2
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