Compiler support for C23
From cppreference.com
 
 
 < c | compiler support 
 
 
 [edit] C23 core language features
 This section is incomplete
Reason: status for Apple Clang and other compilers supporting C2x
Reason: status for Apple Clang and other compilers supporting C2x
| C23 feature | 
Paper(s) | 
GCC  | 
Clang  | 
MSVC  | 
Apple Clang  | 
EDG eccp  | 
Intel C++  | 
Nvidia HPC C++ (ex PGI)*  | 
Nvidia nvcc  | 
Cray  | 
|---|---|---|---|---|---|---|---|---|---|---|
| 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)* 12  | 
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)* 14  | 
6 (partial)* | Partial* | ||||||
| Digit separators | N2626 | 12 | 13 | 19.0 (2015)** | Yes | 6.5 | 18.0* | |||
#elifdef and #elifndef
 | 
N2645 | 12 | 13 | 19.40* | 13.1.6* | 6.5 | 2021.4 | |||
Type change of u8 string literals
 | 
N2653 | 13 | ||||||||
[[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 (partial)* | 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* 13  | 
Partial* | Partial* | Partial* | Partial* | ||||
| typeof and typeof_unqual | N2927  N2930  | 
Partial* 13  | 
Partial* 16  | 
19.39* | 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 | 15 | ||||||||
| Relax requirements for variadic parameter list | N2975 | 13 | 16 | 6.5 | 2023.1 | |||||
| Type inference in object definitions | N3007 | 13 | 18 | |||||||
| #embed | N3017 | 15 | 19 | |||||||
| constexpr objects | N3018 | 13 | 19 | |||||||
| Improved Normal Enumerations | N3029 | 13 | 20* | |||||||
| Enumerations with fixed underlying types | N3030 | 13 | 20* | |||||||
__VA_OPT__
 | 
N3033 | 8 13  | 
12 | 19.39* | 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++  | 
Nvidia HPC C++ (ex PGI)*  | 
Nvidia nvcc  | 
Cray  | 
[edit] C23 library features
 This section is incomplete
Reason: a different list for C standard libraries
Reason: a different list for C standard libraries