| This section is incomplete 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 offunction 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 ofu8 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 offunction declarations without prototype | N2841 | 13 | 15 | 2022.2 | |||||||
| Empty initializers | N2900 | Partial* 13 | Partial* | Partial* | Partial* | Partial* | |||||
| typeof andtypeof_unqual | N2927 N2930 | Partial* 13 | Partial* 16 | 19.39* | Partial* | Partial* | Partial* | Partial* | |||
| New spelling of keywords | N2934 | 13 | 16 | 6.5 | |||||||
| Predefinedtrue andfalse | N2935 | 13 | 15 | 2022.2 | |||||||
[[unsequenced]] and[[reproducible]] | N2956 | 15 | |||||||||
| Relax requirements forvariadic 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 |
| This section is incomplete Reason: a different list for C standard libraries |