Namespaces
Variants
Actions

Compiler support for C++23

From cppreference.com

* - 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++23 core language features

C++23 feature

 
Paper(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Literal suffix for (signed) size_t  (FTM)* P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
Make () more optional for lambdas P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval  (FTM)* P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
Removing Garbage Collection Support P2186R2 12 N/A 19.30* N/A N/A
Narrowing contextual conversions in static_assert and constexpr if P1401R5 9 13 (partial)*
14
14.0.0* 2022.2 20.7
Trimming whitespaces before line splicing P2223R2 Yes Yes Yes 6.7 2022.2 Yes
Make declaration order layout mandated P1847R4 Yes Yes Yes Yes 2022.2 Yes
Removing mixed wide string literal concatenation P2201R1 Yes Yes Yes Yes Yes Yes Yes
Explicit object member functions (deducing this)  (FTM)* P0847R7 14 18
19*
19.32*
(partial)*
19.43*
6.3 22.5
auto(x) and auto{x}  (FTM)* P0849R8 12 15 14.0.3* 6.4 2022.2 23.3
#elifdef and #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
Non-literal variables (and labels and gotos) in constexpr functions  (FTM)* P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
Consistent character literal encoding P2316R2 Yes Yes 19.30* Yes Yes 2022.2 Yes
Character sets and encodings P2314R4 10 Yes Yes Yes 2022.2 Yes
Extend init-statement (of for loop) to allow alias-declaration P2360R0 12 14 14.0.0* 2022.2
Multidimensional subscript operator  (FTM)* P2128R6 12 15 19.42* 14.0.3* 2022.2
Attributes on lambdas P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 Yes* Yes 15.0.0* 6.5 2023.2 Yes
Remove non-encodable wide character literals and multicharacter wide character literals P2362R3 13 14 15.0.0* 6.7 2023.2
Labels at the end of compound statements P2324R2 13 16 16.0.0* 6.5 2023.2 23.9
Delimited escape sequences P2290R3 13 15 15.0.0* 6.7 2023.2
Named universal character escapes  (FTM)* P2071R2 13 15 15.0.0* 6.7 2023.2
Relaxing some constexpr restrictions  (FTM)* P2448R2 13 17 (partial)
19
2024.0 (partial)
Simpler implicit move  (FTM)* P2266R3 13 13 6.7 2022.2
static operator()  (FTM)* P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
Requirements for optional extended floating-point types P1467R9 13 N/A 6.4
Class template argument deduction from inherited constructors P2582R1 14
Attribute [[assume]] P1774R8 13 19
Support for UTF-8 as a portable source file encoding P2295R6 13* 15* 19.0 (Update 2)** 15.0.0* 2023.2
static operator[]  (FTM)* P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
Permitting static constexpr variables in constexpr functions  (FTM)* P2647R1 13 16 16.0.0* 2023.2
Extending the lifetime of temporaries in range-based for loop initializer  (FTM)* P2644R1
P2718R0
CWG2659
15 19
Declarations and where to find them P1787R6
DR11: Change scope of lambda trailing-return-type P2036R3
P2579R0
17 2023.2
DR20: Meaningful exports P2615R1 15 17 (partial)
DR20: consteval needs to propagate up  (FTM)* P2564R3 14 17 16.0.0* 6.7 2024.0
DR98: C++ Identifier Syntax using Unicode Standard Annex 31 P1949R7 12 14 14.0.0* 6.4 2022.2
DR11: Allow duplicate attributes P2156R1 11 13 13.1.6* 6.5 23.9
DR20: Adjusting the value of feature-test macro __cpp_concepts P2493R0 12 19.32* 6.4 23.3
DR98: Relax requirements on wchar_t to match existing practices P2460R2 Yes Yes Yes 15.0.0* N/A 2023.2
DR11: Using unknown pointers and references in constant expressions P2280R4 14 20*
DR20: The Equality Operator You Are Looking For P2468R2 13 16 16.0.0* 2023.2
DR20: char8_t Compatibility and Portability Fix  (FTM)* P2513R4 13 16 19.34* 16.0.0* 2023.2
DR98/11: Clarify reporting of diagnostic directives and allow static_assert of non-value-dependent expressions in a template context CWG2518 13 17 16.0*
(partial)*
19.40*
 

C++23 feature
 

Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

[edit] C++23 library features

C++23 feature

 
Paper(s)

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
Stacktrace library  (FTM)* P0881R7
P2301R1
12 (partial)*
14*
19.34*
<stdatomic.h>  (FTM)* P0943R6 12 15 19.31* 14.0.3*
std::is_scoped_enum  (FTM)* P1048R1 11 12 19.30* 13.0.0*