From cppreference.com
This page is maintained as best-effort and may lag behind most recent compiler releases. If you see something is out-of-date, please help us by updating it! C23 features
Note that this list may change, as the draft C23/2x standard evolves.
C23 core language features
C23 featurePaper(s)GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
with no message
9 9 Yes Yes 6.5 2021.1.2 (clang based) [[
]]
10 9 Yes 6.4 2021.1.2 (clang based) [[
]]
10 9 Yes 6.4 2021.1.2 (clang based) [[
]]
10 9 Yes 6.4 2021.1.2 (clang based)
10 9 Yes 6.4 2021.1.2 (clang based) IEEE 754 decimal floating-point types
4.2 (partial)*
12 13.0 (partial)*[[
]]
10 9 Yes 6.4 2021.1.2 (clang based)
10 15 6.5 2022.2 Removal of
without prototype
10 15 6.9 2022.2 [[
]] with message
11 10 Yes 6.4 2021.1.2 (clang based) Unnamed parameters in function definitions
11 11 Yes 6.4 2021.1.2 (clang based)
before declarations and end of blocks
11 16 Partial*6.5 17.0*
4.3*
11 2.9*
9 19.0 (2015)**Yes 6.5 11.0*
in preprocessor conditionals
11 9 Yes 6.5 2021.1.2 (clang based) Allow duplicate attributes
11 13 Yes 6.5 2021.4 (clang-based IEEE 754 interchange and extended types
7 (partial)*
14 6 (partial)*Partial*Digit separators
12 13 19.0 (2015)**Yes 6.5 18.0*
12 13 19.40*13.1.6*6.5 2021.4 Type change of
13 [[
]] for labels
11 16 6.5 2022.2
Yes Yes Yes 6.5 Yes Bit-precise integer types (_BitInt)
14 (partial)*15 6.5 2022.2 [[
]]
13 15 6.5 2022.2 Suffixes for bit-precise integer constants
14 15 2022.2
in preprocessor conditionals
5 Yes 19.11*Yes 6.5 18.0 Identifier Syntax using Unicode Standard Annex 31
13 15 6.5 2022.2 Removal of
without prototype
13 15 6.9 2022.2
Partial*
13 Partial*Partial*Partial*Partial*
and
Partial*
13 Partial*
16 19.39*Partial*Partial*Partial*Partial*New spelling of keywords
13 16 6.5 Predefined
13 15 6.8 2022.2 [[
]] and [[
]]
15 Relax requirements for
13 16 6.5 2023.1 Type inference in object definitions
13 18
15 19 6.8
objects
13 19 Improved Normal Enumerations
13 20*Enumerations with fixed underlying types
13 20*6.8
8
13 12 19.39*6.5 Storage-class specifiers for compound literals
13
13 16 6.7 C23 feature
Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
C23 library features
C99 features
C99 core language features
C99 featurePaper(s)GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Universal-character-names in
3.1 Yes Yes Increased
0.9 N/A//
2.7 Yes Yes
pointers
2.95 Yes partial*Enhanced
Yes partial Maybe Flexible array members 3.0 Yes Yes
(VLA) types
0.9 Yes Variably-modified (VM) types
N/AYes Designated initializers
3.0 Yes Yes Non-constant initializers 1.21 N/AIdempotent cvr-qualifiers
3.0 N/ATrailing comma in
0.9 Yes Yes Hexadecimal
2.8 Yes Yes
3.1 Yes Yes Floating-point environment partial partial Requiring truncation for divisions of signed integer types
0.9 N/AImplicit return0; in the
Yes Yes Yes Declarations and statements in mixed order
3.0 Yes Yes init-statement in
loops Yes Yes Yes
functions
4.3 Yes Yes Predefined variable
2.95 Yes Yes Cvr-qualifiers and static in [] within function declarations 3.1 Yes
2.95 Yes Yes
preprocessor operator
3.0 Yes partial*Standard pragmas for floating-point evaluation
No No C99 feature
Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
See also