diff options
| author | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
| commit | 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch) | |
| tree | f1190704f78f04a2b0b4c977d20fe96a828377f1 /devdocs/c/23.html | |
new repository
Diffstat (limited to 'devdocs/c/23.html')
| -rw-r--r-- | devdocs/c/23.html | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/devdocs/c/23.html b/devdocs/c/23.html new file mode 100644 index 00000000..e3a73d0b --- /dev/null +++ b/devdocs/c/23.html @@ -0,0 +1,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> |
