blob: e3a73d0b53da3ebd2c0897dfb3f853d24ec9fe7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
<h1 id="firstHeading" class="firstHeading">C23</h1> <p>The next generation of the C standard.</p>
<p>See: <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3096.pdf">The current WD of C23</a>.</p>
<h2 id="Obsolete"> Obsolete</h2> <h3 id="Removed"> Removed</h3> <ul>
<li> Old-style function <a href="language/function_declaration" title="c/language/function declaration">declarations</a> and <a href="language/function_definition" title="c/language/function definition">definitions</a> </li>
<li> Representations for <a href="language/arithmetic_types" title="c/language/arithmetic types">signed integers</a> other than two's complement </li>
<li> Permission that <code>u</code>/<code>U</code>-prefixed <a href="language/character_constant" title="c/language/character constant">character constants</a> and <a href="language/string_literal" title="c/language/string literal">string literals</a> may be not UTF-16/32 </li>
<li> Mixed wide <a href="language/string_literal" title="c/language/string literal">string literal</a> concatenation </li>
<li> Support for calling <a href="memory/realloc" title="c/memory/realloc"><code>realloc()</code></a> with zero size (the behavior becomes undefined) </li>
<li> <a href="types" title="c/types"><code>__alignof_is_defined</code></a> and <a href="types" title="c/types"><code>__alignas_is_defined</code></a> </li>
<li> <a href="error/static_assert" title="c/error/static assert"><code>static_assert</code></a> is not provided as a macro defined in <a href="error" title="c/error"><code><assert.h></code></a> (becomes a keyword) </li>
<li> <a href="thread/thread_local" title="c/thread/thread local"><code>thread_local</code></a> is not provided as a macro defined in <a href="thread" title="c/thread"><code><threads.h></code></a> (becomes a keyword) </li>
</ul> <h3 id="Deprecated"> Deprecated</h3> <ul>
<li> <a href="language/_noreturn" title="c/language/ Noreturn"><code><stdnoreturn.h></code></a> </li>
<li> Old feature-test macros <ul>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559__</code></a> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559_COMPLEX__</code></a> </li>
</ul> </li>
<li> <a href="language/_noreturn" title="c/language/ Noreturn"><code>_Noreturn</code></a> function specifier </li>
<li> <a href="language/attributes/noreturn" title="c/language/attributes/noreturn"><code>_Noreturn</code></a> attribute token </li>
<li> <code><a href="chrono/asctime" title="c/chrono/asctime">asctime()</a></code> </li>
<li> <code><a href="chrono/ctime" title="c/chrono/ctime">ctime()</a></code> </li>
<li> <a href="types/limits" title="c/types/limits"><code>DECIMAL_DIG</code></a> (use the appropriate type-specific macro (<a href="types/limits#Limits_of_floating-point_types" title="c/types/limits"><code>FLT_DECIMAL_DIG</code></a>, etc) instead) </li>
<li> Definition of following numeric limit macros in <a href="numeric/math" title="c/numeric/math"><code><math.h></code></a> (they should be used via <a href="types/limits#Limits_of_floating_point_types" title="c/types/limits"><code><float.h></code></a>) <ul>
<li> <a href="numeric/math" title="c/numeric/math"><code>INFINITY</code></a> </li>
<li> <a href="numeric/math" title="c/numeric/math"><code>DEC_INFINITY</code></a> </li>
<li> <a href="numeric/math" title="c/numeric/math"><code>NAN</code></a> </li>
<li> <a href="numeric/math" title="c/numeric/math"><code>DEC_NAN</code></a> </li>
</ul> </li>
<li> <a href="types" title="c/types"><code>__bool_true_false_are_defined</code></a> </li>
</ul> <h2 id="New_language_features"> New language features</h2> <ul>
<li> <a href="language/arithmetic_types" title="c/language/arithmetic types">Decimal floating-point types</a> (<a href="keyword/_decimal32" title="c/keyword/ Decimal32"><code>_Decimal32</code></a>, <a href="keyword/_decimal64" title="c/keyword/ Decimal64"><code>_Decimal64</code></a>, and <a href="keyword/_decimal128" title="c/keyword/ Decimal128"><code>_Decimal128</code></a>) </li>
<li> <a href="language/arithmetic_types" title="c/language/arithmetic types">Bit-precise integers</a> (<a href="https://en.cppreference.com/mwiki/index.php?title=c/keyword/_BitInt&action=edit&redlink=1" class="new" title="c/keyword/ BitInt (page does not exist)"><code>_BitInt</code></a>) </li>
<li> <a href="language/integer_constant" title="c/language/integer constant">Binary integer constants</a> </li>
<li> <a href="language/character_constant" title="c/language/character constant"><code>u8</code> character constants</a> </li>
<li> Type change of <a href="language/string_literal" title="c/language/string literal"><code>u8</code> string literals</a> </li>
<li> Digit separator <code>'</code> </li>
<li> Empty <a href="language/initialization" title="c/language/initialization">initializer</a> <code>={}</code> </li>
<li> <a href="language/attributes" title="c/language/attributes">Attributes</a> <ul>
<li> <code>[[<a href="language/attributes/deprecated" title="c/language/attributes/deprecated">deprecated</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/fallthrough" title="c/language/attributes/fallthrough">fallthrough</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/maybe_unused" title="c/language/attributes/maybe unused">maybe_unused</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/nodiscard" title="c/language/attributes/nodiscard">nodiscard</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/noreturn" title="c/language/attributes/noreturn">noreturn</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/reproducible" title="c/language/attributes/reproducible" class="mw-redirect">reproducible</a>]]</code> </li>
<li> <code>[[<a href="language/attributes/unsequenced" title="c/language/attributes/unsequenced">unsequenced</a>]]</code> </li>
</ul> </li>
<li> Unnamed parameters in <a href="language/function_definition" title="c/language/function definition">function definitions</a> </li>
<li> Identical cvr-qualifications for <a href="language/array" title="c/language/array">array types</a> and their element types </li>
<li> Single-argument <a href="language/_static_assert" title="c/language/ Static assert"><code>_Static_assert</code></a> </li>
<li> <a href="keyword/static_assert" title="c/keyword/static assert"><code>static_assert</code></a> becomes a keyword (may be a predefined macro for compatibility reasons) </li>
<li> <a href="keyword/thread_local" title="c/keyword/thread local"><code>thread_local</code></a> becomes a keyword (may be a predefined macro for compatibility reasons) </li>
<li> <a href="language/goto" title="c/language/goto">Labels</a> followed by declarations and <code>}</code> </li>
<li> <a href="keyword/nullptr" title="c/keyword/nullptr"><code>nullptr</code></a> constant and the associated <a href="types/nullptr_t" title="c/types/nullptr t"><code>nullptr_t</code></a> type </li>
<li> <a href="keyword/true" title="c/keyword/true"><code>true</code></a> and <a href="keyword/false" title="c/keyword/false"><code>false</code></a> become keywords (may be predefined macros for compatibility reasons) </li>
<li> New preprocessor directives <ul>
<li> <a href="preprocessor/conditional" title="c/preprocessor/conditional"><code> #elifdef</code></a> </li>
<li> <a href="preprocessor/conditional" title="c/preprocessor/conditional"><code> #elifndef</code></a> </li>
<li> <a href="preprocessor/error" title="c/preprocessor/error"><code> #warning</code></a> </li>
<li> <a href="preprocessor/embed" title="c/preprocessor/embed"><code> #embed</code></a> </li>
</ul> </li>
<li> Pragmas for rounding direction <ul>
<li> <code>STDC</code> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>FENV_ROUND</code></a> </li>
<li> <code>STDC</code> <a href="preprocessor/impl" title="c/preprocessor/impl"><code>FENV_DEC_ROUND</code></a> </li>
</ul> </li>
</ul> <h3 id="Feature_test_macros_for_optional_features"> Feature test macros for optional features</h3> <ul>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_60559_BFP__</code></a> <ul><li> Indicates IEEE-754 binary floating-point arithmetic and required math functions are supported. </li></ul> This macro supersedes <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559__</code></a>. </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_60559_DFP__</code></a> <ul><li> Indicates IEEE-754 decimal floating-point arithmetic and required math functions are supported. </li></ul> </li>
<li> <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_60559_COMPLEX__</code></a> <ul><li> Indicates IEEE-754 complex arithmetic and required math functions are supported. </li></ul> This macro supersedes <a href="preprocessor/replace" title="c/preprocessor/replace"><code>__STDC_IEC_559_COMPLEX__</code></a>. </li>
</ul> <h2 id="New_library_features"> New library features</h2> <h3 id="New_headers"> New headers</h3> <ul>
<li> <code><stdbit.h></code> </li>
<li> <code><stdckdint.h></code> </li>
</ul> <h3 id="Library_features"> Library features</h3> <ul>
<li> Extended binary floating-point math functions </li>
<li> Decimal floating-point math functions <ul>
<li> -<code>d<i>N</i></code> variants for existing and new floating-point math functions </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/quantize&action=edit&redlink=1" class="new" title="c/numeric/math/quantize (page does not exist)"><code>quantizedN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/samequantum&action=edit&redlink=1" class="new" title="c/numeric/math/samequantum (page does not exist)"><code>samequantumdN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/quantum&action=edit&redlink=1" class="new" title="c/numeric/math/quantum (page does not exist)"><code>quantumdN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/llquantexp&action=edit&redlink=1" class="new" title="c/numeric/math/llquantexp (page does not exist)"><code>llquantexpdN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/encodedec&action=edit&redlink=1" class="new" title="c/numeric/math/encodedec (page does not exist)"><code>encodedecdN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/decodedec&action=edit&redlink=1" class="new" title="c/numeric/math/decodedec (page does not exist)"><code>decodedecdN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/encodebin&action=edit&redlink=1" class="new" title="c/numeric/math/encodebin (page does not exist)"><code>encodebindN()</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/decodebin&action=edit&redlink=1" class="new" title="c/numeric/math/decodebin (page does not exist)"><code>decodebindN()</code></a> </li>
</ul> </li>
<li> <a href="string/byte/strfromf" title="c/string/byte/strfromf">Floating-point formatting functions</a> </li>
<li> Library support for UTF-8 <ul>
<li> <code>char8_t</code> type alias </li>
<li> <a href="string/multibyte/mbrtoc8" title="c/string/multibyte/mbrtoc8"><code>mbrtoc8()</code></a> </li>
<li> <a href="string/multibyte/c8rtomb" title="c/string/multibyte/c8rtomb"><code>c8rtomb()</code></a> </li>
<li> <a href="thread" title="c/thread"><code>atomic_char8_t</code></a> type alias </li>
<li> <a href="atomic/atomic_lock_free_consts" title="c/atomic/ATOMIC LOCK FREE consts"><code>ATOMIC_CHAR8_T_LOCK_FREE</code></a> test macro </li>
</ul> </li>
<li> <a href="string/byte/memset" title="c/string/byte/memset"><code>memset_explicit()</code></a> </li>
<li> POSIX functions <ul>
<li> <a href="string/byte/memccpy" title="c/string/byte/memccpy"><code>memccpy()</code></a> </li>
<li> <a href="string/byte/strdup" title="c/string/byte/strdup"><code>strdup()</code></a> </li>
<li> <a href="string/byte/strndup" title="c/string/byte/strndup"><code>strndup()</code></a> </li>
<li> <a href="chrono/gmtime" title="c/chrono/gmtime"><code>gmtime_r()</code></a> </li>
<li> <a href="chrono/localtime" title="c/chrono/localtime"><code>localtime_r()</code></a> </li>
<li> Extensions for <a href="chrono/strftime" title="c/chrono/strftime"><code>strftime()</code></a> and <a href="chrono/wcsftime" title="c/chrono/wcsftime"><code>wcsftime()</code></a> </li>
</ul> </li>
<li> Extensions for <a href="io/fscanf" title="c/io/fscanf"><code>fscanf()</code></a> and <a href="io/fprintf" title="c/io/fprintf"><code>fprintf()</code></a> function families <ul>
<li> <code>w<i>N</i></code> and <code>wf<i>N</i></code> length modifiers for <a href="types/integer" title="c/types/integer"><code>[u]intN_t</code></a> and <a href="types/integer" title="c/types/integer"><code>[u]int_fastN_t</code></a> respectively </li>
<li> <code>H</code>, <code>D</code>, and <code>DD</code> length modifiers for <code>_Decimal32</code>, <code>_Decimal64</code>, and <code>_Decimal128</code> respectively </li>
<li> <code>b</code> conversion specifier for unsigned integer types </li>
</ul> </li>
<li> <a href="chrono/timespec_getres" title="c/chrono/timespec getres"><code>timespec_getres()</code></a> </li>
<li> Macro constants for width of integer types </li>
<li> Additional numeric limit macros for floating-point types </li>
<li> Library version-test macros <ul>
<li> <a href="numeric/fenv" title="c/numeric/fenv"><code>__STDC_VERSION_FENV_H__</code></a> </li>
<li> <a href="numeric/math" title="c/numeric/math"><code>__STDC_VERSION_MATH_H__</code></a> </li>
<li> <a href="types/integer" title="c/types/integer"><code>__STDC_VERSION_STDINT_H__</code></a> </li>
<li> <a href="string/byte" title="c/string/byte"><code>__STDC_VERSION_STDLIB_H__</code></a> </li>
<li> <a href="numeric/tgmath" title="c/numeric/tgmath"><code>__STDC_VERSION_TGMATH_H__</code></a> </li>
<li> <a href="chrono" title="c/chrono"><code>__STDC_VERSION_TIME_H__</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=STDC_VERSION_STDCKDINT_H&action=edit&redlink=1" class="new" title="STDC VERSION STDCKDINT H (page does not exist)"><code>__STDC_VERSION_STDCKDINT_H__</code></a> </li>
<li> <a href="https://en.cppreference.com/mwiki/index.php?title=STDC_VERSION_STDBIT_H&action=edit&redlink=1" class="new" title="STDC VERSION STDBIT H (page does not exist)"><code>__STDC_VERSION_STDBIT_H__</code></a> </li>
</ul> </li>
</ul> <h2 id="Defect_reports"> Defect reports</h2> <div style="margin-left:0px"> <table class="mw-collapsible mw-collapsed"> <tr> <th>Defect Reports fixed in C23 (? defects) </th>
</tr> <tr> <td> <ul>
<li> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2379.htm">DR 440</a> </li>
<li> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2326.htm">DR 432</a> </li>
<li> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2326.htm">DR 467</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_476">DR 476</a> </li>
<li> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2324.htm">DR 482</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_488">DR 488</a> </li>
<li> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2713.htm">DR 489</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_494">DR 494</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_496">DR 496</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_497">DR 497</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_499">DR 499</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_500">DR 500</a> </li>
<li> <a rel="nofollow" class="external text" href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_501">DR 501</a> </li>
</ul> </td>
</tr>
</table>
</div> <h2 id="Compiler_support"> Compiler support</h2> <h3 id="C23_core_language_features"> C23 core language features</h3> <table class="wikitable tbody-scroll mw-collapsible t-compiler-support-top"> <tr style="height:15em"> <th>C23 feature<br><br> </th> <th>Paper(s)<br><br> </th> <th> <div>GCC</div> </th> <th> <div>Clang</div> </th> <th> <div>MSVC</div> </th> <th> <div>Apple Clang</div> </th> <th> <div>EDG eccp</div> </th> <th> <div>Intel C++</div> </th> <th> <div>IBM XL C++</div> </th> <th> <div>IBM Open XL C++ for AIX</div> </th> <th> <div>IBM Open XL C++ for z/OS</div> </th> <th> <div>Sun/Oracle C++</div> </th> <th> <div>Embarcadero C++ Builder</div> </th> <th> <div>Cray</div> </th> <th> <div><span title="ex Portland Group/PGI">Nvidia HPC C++ (ex PGI)*</span></div> </th> <th> <div>Nvidia nvcc</div> </th> <th> </th>
</tr> <tr> <td> <a href="language/_static_assert" title="c/language/ Static assert"><code>_Static_assert</code></a> with no message </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2265.pdf">N2265</a> </td> <td class="table-yes">9 </td> <td class="table-yes">9 </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/nodiscard" title="c/language/attributes/nodiscard">nodiscard</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2267.pdf">N2267</a> </td> <td class="table-yes">10 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/maybe_unused" title="c/language/attributes/maybe unused">maybe_unused</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2270.pdf">N2270</a> </td> <td class="table-yes">10 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/deprecated" title="c/language/attributes/deprecated">deprecated</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2334.pdf">N2334</a> </td> <td class="table-yes">10 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/attributes" title="c/language/attributes">Attributes</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2335.pdf">N2335</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2554.pdf">N2554</a> </td> <td class="table-yes">10 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> IEEE 754 decimal floating-point types </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2341.pdf">N2341</a> </td> <td class="table-maybe">4.2 <span title="Only TR 24732 mentioned; some requirements in core language missing">(partial)*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-maybe">13.0 <span title="Only IEEE 754-2008 mentioned; the status of conformance is unknown">(partial)*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/fallthrough" title="c/language/attributes/fallthrough">fallthrough</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2408.pdf">N2408</a> </td> <td class="table-yes">10 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/character_constant" title="c/language/character constant"><code>u8</code> character constants</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2418.pdf">N2418</a> </td> <td class="table-yes">10 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Removal of <a href="language/function_definition" title="c/language/function definition">function definitions</a> without prototype </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2432.pdf">N2432</a> </td> <td class="table-yes">10 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/nodiscard" title="c/language/attributes/nodiscard">nodiscard</a>]]</code> with message </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2448.pdf">N2448</a> </td> <td class="table-yes">11 </td> <td class="table-yes">10 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Unnamed parameters in function definitions </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2480.pdf">N2480</a> </td> <td class="table-yes">11 </td> <td class="table-yes">11 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.4 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/statements#Labels" title="c/language/statements">Labels</a> before declarations and end of blocks </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2508.pdf">N2508</a> </td> <td class="table-yes">11 </td> <td class="table-yes">16 </td> <td class="table-maybe">Partial<span title="extension, missing support for labels before end of blocks">*</span> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">17.0<span title="extension, would trigger warnings;
missing support for labels before declarations in old versions">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/integer_constant" title="c/language/integer constant">Binary integer constants</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2549.pdf">N2549</a> </td> <td class="table-yes">4.3<span title="extension">*</span><br>11 </td> <td class="table-yes">2.9<span title="extension">*</span><br>9 </td> <td class="table-yes">
<span title="VS 2015">19.0 (2015)*</span><span title="extension">*</span> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">11.0<span title="extension">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/attributes#Attribute_testing" title="c/language/attributes"><code>__has_c_attribute</code></a> in preprocessor conditionals </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2553.pdf">N2553</a> </td> <td class="table-yes">11 </td> <td class="table-yes">9 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">2021.1.2 (clang based) </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Allow duplicate attributes </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2557.pdf">N2557</a> </td> <td class="table-yes">11 </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">2021.4 (clang-based </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> IEEE 754 interchange and extended types </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2601.pdf">N2601</a> </td> <td class="table-maybe">7 <span title="Only TS 18661-3 mentioned; the status of conformance is unknown">(partial)*</span> </td> <td class="table-maybe">6 <span title="Only _Float16 is supported">(partial)*</span> </td> <td class="table-no"> </td> <td class="table-maybe">
<span title="Only _Float16 is supported">Partial*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Digit separators </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2626.pdf">N2626</a> </td> <td class="table-yes">12 </td> <td class="table-yes">13 </td> <td class="table-yes">
<span title="VS 2015">19.0 (2015)*</span><span title="extension">*</span> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">18.0<span title="extension">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/conditional" title="c/preprocessor/conditional"><code>#elifdef</code> and <code>#elifndef</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2645.pdf">N2645</a> </td> <td class="table-yes">12 </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-yes"> <p><span title="Xcode 13.3 (13E113)">13.1.6*</span></p>
</td> <td class="table-yes">6.5 </td> <td class="table-yes">2021.4 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Type change of <a href="language/string_literal" title="c/language/string literal"><code>u8</code> string literals</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2653.htm">N2653</a> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/maybe_unused" title="c/language/attributes/maybe unused">maybe_unused</a>]]</code> for labels </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2662.pdf">N2662</a> </td> <td class="table-yes">11 </td> <td class="table-yes">16 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/error" title="c/preprocessor/error"><code> #warning</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2686.pdf">N2686</a> </td> <td class="table-yes">Yes </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">Yes </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Bit-precise integer types (<code>_BitInt</code>) </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2763.pdf">N2763</a> </td> <td class="table-no"> </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/noreturn" title="c/language/attributes/noreturn">noreturn</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2764.pdf">N2764</a> </td> <td class="table-yes">13 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Suffixes for bit-precise integer constants </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2775.pdf">N2775</a> </td> <td class="table-no"> </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/include" title="c/preprocessor/include"><code>__has_include</code></a> in preprocessor conditionals </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2799.pdf">N2799</a> </td> <td class="table-yes">5 </td> <td class="table-yes">Yes </td> <td class="table-yes">
<span title="VS 2017 15.3">19.11*</span> </td> <td class="table-yes">Yes </td> <td class="table-yes">6.5 </td> <td class="table-yes">18.0 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Identifier Syntax using Unicode Standard Annex 31 </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2836.pdf">N2836</a> </td> <td class="table-yes">13 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Removal of <a href="language/function_declaration" title="c/language/function declaration">function declarations</a> without prototype </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2841.htm">N2841</a> </td> <td class="table-yes">13 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/initialization#Empty_initialization" title="c/language/initialization">Empty initializers</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2900.htm">N2900</a> </td> <td class="table-maybe">Partial<span title="extension; missing support for scalars and VLAs">*</span> </td> <td class="table-maybe">Partial<span title="extension; missing support for scalars and VLAs">*</span> </td> <td class="table-no"> </td> <td class="table-maybe">Partial<span title="extension; missing support for scalars and VLAs">*</span> </td> <td class="table-maybe">Partial<span title="extension; missing support for scalars and VLAs">*</span> </td> <td class="table-maybe">Partial<span title="extension; missing support for scalars and VLAs">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/typeof" title="c/language/typeof"><code>typeof</code></a> and <a href="language/typeof" title="c/language/typeof"><code>typeof_unqual</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2927.htm">N2927</a><br><a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2930.pdf">N2930</a> </td> <td class="table-yes">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span><br>13 </td> <td class="table-yes">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span><br>16 </td> <td class="table-no"> </td> <td class="table-maybe">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span> </td> <td class="table-maybe">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span> </td> <td class="table-maybe">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-maybe">Partial<span title="extension; only typeof (and __typeof__ in strict modes)">*</span> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> New spelling of keywords </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2934.pdf">N2934</a> </td> <td class="table-maybe">13 </td> <td class="table-maybe">16 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Predefined <a href="language/bool_constant" title="c/language/bool constant"><code>true</code> and <code>false</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2935.pdf">N2935</a> </td> <td class="table-yes">13 </td> <td class="table-yes">15 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">2022.2 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <code>[[<a href="language/attributes/unsequenced" title="c/language/attributes/unsequenced">unsequenced</a>]]</code> and <code>[[<a href="language/attributes/reproducible" title="c/language/attributes/reproducible" class="mw-redirect">reproducible</a>]]</code> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2956.htm">N2956</a> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Relax requirements for <a href="language/variadic" title="c/language/variadic">variadic parameter list</a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n2975.pdf">N2975</a> </td> <td class="table-yes">13 </td> <td class="table-yes">16 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-yes">2023.1 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Type inference in object definitions </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm">N3007</a> </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/embed" title="c/preprocessor/embed"><code> #embed</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3017.htm">N3017</a> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/constexpr" title="c/language/constexpr"><code>constexpr</code></a> objects </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3018.htm">N3018</a> </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Improved Normal Enumerations </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3029.htm">N3029</a> </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Enhancements to Enumerations </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3030.htm">N3030</a> </td> <td class="table-yes">13 </td> <td class="table-maybe">Maybe </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="preprocessor/replace#Function-like_macros" title="c/preprocessor/replace"><code>__VA_OPT__</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3033.htm">N3033</a> </td> <td class="table-maybe">8 </td> <td class="table-maybe">12 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-yes">6.5 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> Storage-class specifiers for compound literals </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3038.htm">N3038</a> </td> <td class="table-yes">13 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr> <td> <a href="language/nullptr" title="c/language/nullptr"><code>nullptr</code></a> </td> <td> <a rel="nofollow" class="external text" href="https://open-std.org/JTC1/SC22/WG14/www/docs/n3042.htm">N3042</a> </td> <td class="table-yes">13 </td> <td class="table-maybe">16 </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td> <td class="table-no"> </td>
</tr> <tr style="height:15em"> <th> <br><br>C23 feature </th> <th> <br><br>Paper(s) </th> <th> <div>GCC</div> </th> <th> <div>Clang</div> </th> <th> <div>MSVC</div> </th> <th> <div>Apple Clang</div> </th> <th> <div>EDG eccp</div> </th> <th> <div>Intel C++</div> </th> <th> <div>IBM XL C++</div> </th> <th> <div>IBM Open XL C++ for AIX</div> </th> <th> <div>IBM Open XL C++ for z/OS</div> </th> <th> <div>Sun/Oracle C++</div> </th> <th> <div>Embarcadero C++ Builder</div> </th> <th> <div>Cray</div> </th> <th> <div><span title="ex Portland Group/PGI">Nvidia HPC C++ (ex PGI)*</span></div> </th> <th> <div>Nvidia nvcc</div> </th>
</tr>
</table> <h3 id="C23_library_features"> C23 library features</h3> <div class="_attribution">
<p class="_attribution-p">
© cppreference.com<br>Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.<br>
<a href="https://en.cppreference.com/w/c/23" class="_attribution-link">https://en.cppreference.com/w/c/23</a>
</p>
</div>
|