Compiler support for C23
From cppreference.com
<
c
|
compiler support
C23 core language features
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++
|
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)*
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++
|
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
|
C23 library features
This section is incomplete
Reason: a different list for C standard libraries |