Namespaces
Variants
Views
Actions

Compiler support for C23

From cppreference.com

[edit] C23 core language features


C23 feature

 
Paper(s)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XL C++
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
_Static_assert with no message N2265 9 9 Yes Yes 6.5 2021.1.2 (clang based)
[[nodiscard]] N2267 10 9 Yes 6.4 2021.1.2 (clang based)
[[maybe_unused]] N2270 10 9 Yes 6.4 2021.1.2 (clang based)
[[deprecated]] N2334 10 9 Yes 6.4 2021.1.2 (clang based)
Attributes N2335
N2554
10 9 Yes 6.4 2021.1.2 (clang based)
IEEE 754 decimal floating-point types N2341 4.2 (partial)* 13.0 (partial)*
[[fallthrough]] N2408 10 9 Yes 6.4 2021.1.2 (clang based)
u8 character constants N2418 10 15 6.5 2022.2
Removal of function definitions without prototype N2432 10 15 2022.2
[[nodiscard]] with message N2448 11 10 Yes 6.4 2021.1.2 (clang based)
Unnamed parameters in function definitions N2480 11 11 Yes 6.4 2021.1.2 (clang based)
Labels before declarations and end of blocks N2508 11 16 Partial* 6.5 17.0*
Binary integer constants N2549 4.3*
11
2.9*
9
19.0 (2015)** Yes 6.5 11.0*
__has_c_attribute in preprocessor conditionals N2553 11 9 Yes 6.5 2021.1.2 (clang based)
Allow duplicate attributes N2557 11 13 Yes 6.5 2021.4 (clang-based
IEEE 754 interchange and extended types N2601 7 (partial)* 6 (partial)* Partial*
Digit separators N2626 12 13 19.0 (2015)** Yes 6.5 18.0*
#elifdef and #elifndef N2645 12 13

13.1.6*

6.5 2021.4
Type change of u8 string literals N2653
[[maybe_unused]] for labels N2662 11 16 6.5 2022.2
#warning N2686 Yes Yes Yes 6.5 Yes
Bit-precise integer types (_BitInt) N2763 14 15 6.5 2022.2
[[noreturn]] N2764 13 15 6.5 2022.2
Suffixes for bit-precise integer constants N2775 14 15 2022.2
__has_include in preprocessor conditionals N2799 5 Yes 19.11* Yes 6.5 18.0
Identifier Syntax using Unicode Standard Annex 31 N2836 13 15 6.5 2022.2
Removal of function declarations without prototype N2841 13 15 2022.2


Empty initializers N2900 Partial* Partial* Partial* Partial* Partial*


typeof and typeof_unqual N2927
N2930
Partial*
13
Partial*
16
Partial* Partial* Partial* Partial*
New spelling of keywords N2934 13 16 6.5
Predefined true and false N2935 13 15 2022.2
[[unsequenced]] and [[reproducible]] N2956
Relax requirements for variadic parameter list N2975 13 16 6.5 2023.1
Type inference in object definitions N3007 13
#embed N3017
constexpr objects N3018 13
Improved Normal Enumerations N3029 13
Enhancements to Enumerations N3030 13 Maybe
__VA_OPT__ N3033 8 12 6.5
Storage-class specifiers for compound literals N3038 13
nullptr N3042 13 16
 

C23 feature
 

Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XL C++
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc

[edit] C23 library features