Files
hustoj/web/cppreference-zh/chmhelp/cpp-feature_test.html
2025-08-01 12:57:54 +08:00

2141 lines
170 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#21151;&#33021;&#29305;&#24615;&#27979;&#35797; (C++20)</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_feature_test skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#21151;&#33021;&#29305;&#24615;&#27979;&#35797; <span class="t-mark-rev t-since-cxx20">(C++20)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#26631;&#20934;&#20013;&#20026; C++11 &#21644;&#20854;&#21518;&#25152;&#24341;&#20837;&#30340; C++ &#35821;&#35328;&#21644;&#31243;&#24207;&#24211;&#30340;&#21151;&#33021;&#29305;&#24615;&#23450;&#20041;&#20102;&#19968;&#32452;<a href="cpp-preprocessor-replace.html">&#39044;&#22788;&#29702;&#22120;&#23439;</a>&#12290;&#26631;&#20934;&#26377;&#24847;&#20351;&#20043;&#25104;&#20026;&#26816;&#27979;&#36825;&#20123;&#21151;&#33021;&#29305;&#24615;&#26159;&#21542;&#23384;&#22312;&#30340;&#19968;&#31181;&#31616;&#21333;&#19988;&#21487;&#31227;&#26893;&#30340;&#26041;&#24335;&#12290;</p>
<h3><span class="mw-headline" id=".E5.B1.9E.E6.80.A7">&#23646;&#24615;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td class="t-sdsc-nopad"><code><b>__has_cpp_attribute(</b></code> <span class="t-spar">&#23646;&#24615;&#35760;&#21495;</span> <code><b>)</b></code></td>
<td class="t-sdsc-nopad"></td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#26816;&#26597;&#65288;&#23439;&#23637;&#24320;&#21518;&#65289; <span class="t-spar">&#23646;&#24615;&#35760;&#21495;</span> &#25152;&#25351;&#21517;&#30340;<a href="cpp-language-attributes.html">&#23646;&#24615;</a>&#30340;&#23384;&#22312;&#12290;</p>
<p>&#23545;&#20110;&#26631;&#20934;&#23646;&#24615;&#65292;&#23427;&#23558;&#23637;&#24320;&#25104;&#35813;&#23646;&#24615;&#34987;&#28155;&#21152;&#21040;&#24037;&#20316;&#33609;&#26696;&#20013;&#26102;&#30340;&#24180;&#20221;&#21644;&#26376;&#20221;&#65288;&#35265;&#19979;&#34920;&#65289;&#65292;&#29305;&#23450;&#20110;&#21378;&#21830;&#30340;&#23646;&#24615;&#21017;&#20197;&#26576;&#20010;&#38750;&#38646;&#20540;&#30830;&#23450;&#12290;</p>
<p>&#33021;&#22312; <a href="cpp-preprocessor-conditional.html"><tt>#if</tt></a> &#19982; <a href="cpp-preprocessor-conditional.html"><tt>#elif</tt></a> &#30340;&#34920;&#36798;&#24335;&#20013;&#23637;&#24320; <code>__has_cpp_attribute</code> &#12290; <a href="cpp-preprocessor-conditional.html"><tt>#ifdef</tt></a> &#12289; <a href="cpp-preprocessor-conditional.html"><tt>#ifndef</tt></a> &#21644; <a href="cpp-preprocessor-conditional.html"><tt>defined</tt></a> &#25226;&#23427;&#24403;&#20570;&#24050;&#23450;&#20041;&#30340;&#23439;&#65292;&#20294;&#19981;&#33021;&#22312;&#21035;&#22788;&#20351;&#29992;&#23427;&#12290;</p>
<table class="wikitable sortable">
<tr>
<th><span class="t-spar">&#23646;&#24615;&#35760;&#21495;</span></th>
<th>&#23646;&#24615;</th>
<th>&#20540;</th>
<th><abbr title="&#24341;&#20837;&#35813;&#29305;&#24615;&#30340;&#26631;&#20934;">&#26631;&#20934;</abbr></th>
</tr>
<tr>
<td><code>carries_dependency</code></td>
<td><code>[[<a href="cpp-language-attributes-carries_dependency.html">carries_dependency</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200809L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><code>deprecated</code></td>
<td><code>[[<a href="cpp-language-attributes-deprecated.html">deprecated</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201309L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><code>fallthrough</code></td>
<td><code>[[<a href="cpp-language-attributes-fallthrough.html">fallthrough</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><code>likely</code></td>
<td><code>[[<a href="cpp-language-attributes-likely.html">likely</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><code>maybe_unused</code></td>
<td><code>[[<a href="cpp-language-attributes-maybe_unused.html">maybe_unused</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><code>no_unique_address</code></td>
<td><code>[[<a href="cpp-language-attributes-no_unique_address.html">no_unique_address</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td rowspan="2"><code>nodiscard</code></td>
<td rowspan="2"><code>[[<a href="cpp-language-attributes-nodiscard.html">nodiscard</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><code>noreturn</code></td>
<td><code>[[<a href="cpp-language-attributes-noreturn.html">noreturn</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200809L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><code>unlikely</code></td>
<td><code>[[<a href="cpp-language-attributes-likely.html">unlikely</a>]]</code></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.AF.AD.E8.A8.80.E5.8A.9F.E8.83.BD.E7.89.B9.E6.80.A7">&#35821;&#35328;&#21151;&#33021;&#29305;&#24615;</span></h3>
<p>&#19979;&#21015;&#23439;&#39044;&#23450;&#20041;&#20110;&#27599;&#20010;&#32763;&#35793;&#21333;&#20803;&#12290;&#27599;&#20010;&#23439;&#37117;&#23637;&#24320;&#25104;&#23545;&#24212;&#20110;&#30456;&#24212;&#21151;&#33021;&#29305;&#24615;&#34987;&#21253;&#21547;&#21040;&#24037;&#20316;&#33609;&#26696;&#26102;&#30340;&#24180;&#20221;&#19982;&#26376;&#20221;&#30340;&#25972;&#25968;&#23383;&#38754;&#37327;&#12290;</p>
<p>&#24403;&#21151;&#33021;&#29305;&#24615;&#21457;&#29983;&#20102;&#26174;&#33879;&#21464;&#26356;&#26102;&#65292;&#23439;&#20250;&#30456;&#24212;&#22320;&#26356;&#26032;&#12290;</p>
<div class="t-template-editlink" style=""></div>
<table class="wikitable sortable">
<tr>
<th>&#23439;&#21517;</th>
<th>&#21151;&#33021;&#29305;&#24615;</th>
<th>&#20540;</th>
<th><abbr title="&#24341;&#20837;&#35813;&#29305;&#24615;&#30340;&#26631;&#20934;">&#26631;&#20934;</abbr></th>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_aggregate_bases</span></span></td>
<td>&#25317;&#26377;&#22522;&#31867;&#30340;<a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#31867;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_aggregate_nsdmi</span></span></td>
<td>&#25317;&#26377;<a href="cpp-language-data_members.html#.E6.88.90.E5.91.98.E5.88.9D.E5.A7.8B.E5.8C.96">&#40664;&#35748;&#25104;&#21592;&#21021;&#22987;&#21270;&#22120;</a>&#30340;<a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#31867;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_aggregate_paren_init</span></span></td>
<td>&#24418;&#24335;&#20026;<a href="cpp-language-direct_initialization.html">&#30452;&#25509;&#21021;&#22987;&#21270;</a>&#30340;<a href="cpp-language-aggregate_initialization.html">&#32858;&#21512;&#21021;&#22987;&#21270;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_alias_templates</span></span></td>
<td><a href="cpp-language-type_alias.html">&#21035;&#21517;&#27169;&#29256;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200704L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_aligned_new</span></span></td>
<td><a href="cpp-memory-new-align_val_t.html">&#36807;&#23545;&#40784;&#25968;&#25454;&#30340;&#21160;&#24577;&#20869;&#23384;&#20998;&#37197;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_attributes</span></span></td>
<td><a href="cpp-language-attributes.html">&#23646;&#24615;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200809L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_binary_literals</span></span></td>
<td><a href="cpp-language-integer_literal.html">&#20108;&#36827;&#21046;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_capture_star_this</span></span></td>
<td><a href="cpp-language-lambda.html#Lambda_.E6.8D.95.E8.8E.B7">&#20197; <code>[=,*this]</code> &#36827;&#34892; <code>*this</code> &#30340;&#25353;&#20540; lambda &#25429;&#33719;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_char8_t</span></span></td>
<td><a href="cpp-keyword-char8_t.html"><tt>char8_t</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_concepts</span></span></td>
<td><a href="cpp-language-constraints.html">&#27010;&#24565;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_conditional_explicit</span></span></td>
<td><a href="cpp-language-explicit.html"><tt>explicit(bool)</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_consteval</span></span></td>
<td><a href="cpp-language-consteval.html">&#31435;&#21363;&#20989;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td rowspan="5"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_constexpr</span></span></td>
<td><a href="cpp-language-constexpr.html"><tt>constexpr</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200704L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><a href="cpp-language-constexpr.html#relaxed-constexpr">&#25918;&#26494; constexpr &#20989;&#25968;&#19978;&#30340;&#38480;&#21046;</a>&#21644;&#21450;&#38750; <code>const</code> &#30340; constexpr &#38750;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><a href="cpp-language-lambda.html">Constexpr lambda</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td>constexpr &#20989;&#25968;&#20013;&#30340;&#24179;&#20961;<a href="cpp-language-default_initialization.html">&#40664;&#35748;&#21021;&#22987;&#21270;</a>&#19982;<a href="cpp-language-asm.html">&#27719;&#32534;&#22768;&#26126;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td>constexpr &#20989;&#25968;&#20013;&#30340;&#38750;<a href="cpp-named_req-LiteralType.html">&#23383;&#38754;</a>&#21464;&#37327;&#12289;&#26631;&#31614;&#21450; <a href="cpp-language-goto.html"><tt>goto</tt></a> &#35821;&#21477;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_constexpr_dynamic_alloc</span></span></td>
<td>constexpr &#20989;&#25968;&#20013;&#30340;&#21160;&#24577;&#23384;&#20648;&#26399;&#25805;&#20316;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_constexpr_in_decltype</span></span></td>
<td>&#22312;&#20026;<a href="cpp-language-constant_expression.html#.E5.B8.B8.E9.87.8F.E6.B1.82.E5.80.BC.E6.89.80.E9.9C.80.E8.A6.81.E7.9A.84.E5.87.BD.E6.95.B0.E4.B8.8E.E5.8F.98.E9.87.8F">&#24120;&#37327;&#27714;&#20540;&#25152;&#38656;&#35201;</a>&#26102;&#29983;&#25104;&#20989;&#25968;&#21644;&#21464;&#37327;&#30340;&#23450;&#20041;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_constinit</span></span></td>
<td><a href="cpp-language-constinit.html"><tt>constinit</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_coroutines</span></span></td>
<td>&#21327;&#31243;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_decltype</span></span></td>
<td><a href="cpp-language-decltype.html"><tt>decltype</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200707L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_decltype_auto</span></span></td>
<td><a href="cpp-language-auto.html">&#24120;&#35268;&#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;&#25512;&#23548;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_deduction_guides</span></span></td>
<td><a href="cpp-language-class_template_argument_deduction.html">&#31867;&#27169;&#26495;&#30340;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-language-class_template_argument_deduction.html">&#32858;&#21512;&#20307;&#19982;&#21035;&#21517;&#30340; <abbr title="&#31867;&#27169;&#26495;&#23454;&#21442;&#25512;&#23548;">CTAD</abbr></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_delegating_constructors</span></span></td>
<td><a href="cpp-language-initializer_list.html#.E5.A7.94.E6.89.98.E6.9E.84.E9.80.A0.E5.87.BD.E6.95.B0" class="mw-redirect">&#22996;&#25176;&#26500;&#36896;&#20989;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200604L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_designated_initializers</span></span></td>
<td><a href="cpp-language-aggregate_initialization.html#.E6.8C.87.E6.B4.BE.E5.88.9D.E5.A7.8B.E5.8C.96.E5.99.A8">&#25351;&#27966;&#21021;&#22987;&#21270;&#22120;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201707L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_enumerator_attributes</span></span></td>
<td><a href="cpp-language-enum.html">&#26522;&#20030;&#39033;</a>&#30340;&#23646;&#24615;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_explicit_this_parameter</span></span></td>
<td>&#26174;&#24335;&#23545;&#35937;&#24418;&#21442;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_fold_expressions</span></span></td>
<td><a href="cpp-language-fold.html">&#25240;&#21472;&#34920;&#36798;&#24335;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_generic_lambdas</span></span></td>
<td><a href="cpp-language-lambda.html">&#27867;&#22411; lambda &#34920;&#36798;&#24335;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><a href="cpp-language-lambda.html">&#27867;&#22411; lambda</a> &#30340;&#26174;&#24335;&#27169;&#26495;&#24418;&#21442;&#21015;&#34920;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201707L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_guaranteed_copy_elision</span></span></td>
<td>&#36890;&#36807;&#31616;&#21270;<a href="cpp-language-value_category.html">&#20540;&#31867;&#21035;</a>&#20445;&#35777;&#22797;&#21046;&#28040;&#38500;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_hex_float</span></span></td>
<td><a href="cpp-language-floating_literal.html">&#21313;&#20845;&#36827;&#21046;&#28014;&#28857;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_if_consteval</span></span></td>
<td><a href="cpp-language-if.html"><code>consteval if</code></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_if_constexpr</span></span></td>
<td><a href="cpp-language-if.html"><code>constexpr if</code></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_impl_coroutine</span></span></td>
<td><a href="cpp-language-coroutines.html">&#21327;&#31243;</a>&#65288;&#32534;&#35793;&#22120;&#25903;&#25345;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_impl_destroying_delete</span></span></td>
<td><a href="cpp-memory-new-operator_delete.html">&#38144;&#27585;&#30340; <code>operator delete</code></a> &#65288;&#32534;&#35793;&#22120;&#25903;&#25345;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_impl_three_way_comparison</span></span></td>
<td><a href="cpp-language-operator_comparison.html#.E4.B8.89.E8.B7.AF.E6.AF.94.E8.BE.83">&#19977;&#36335;&#27604;&#36739;</a>&#65288;&#32534;&#35793;&#22120;&#25903;&#25345;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_inheriting_constructors</span></span></td>
<td><a href="cpp-language-using_declaration.html#.E7.BB.A7.E6.89.BF.E6.9E.84.E9.80.A0.E5.87.BD.E6.95.B0">&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200802L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td>&#37325;&#36848;&#32487;&#25215;&#26500;&#36896;&#20989;&#25968;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201511L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_init_captures</span></span></td>
<td><a href="cpp-language-lambda.html">Lambda &#21021;&#22987;&#21270;&#25429;&#33719;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><a href="cpp-language-lambda.html">Lambda</a> &#21021;&#22987;&#21270;&#25429;&#33719;&#20013;&#30340;&#21253;&#23637;&#24320;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_initializer_lists</span></span></td>
<td><a href="cpp-language-list_initialization.html">&#21015;&#34920;&#21021;&#22987;&#21270;</a>&#19982; <span class="t-lc"><a href="cpp-utility-initializer_list.html">std::initializer_list</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200806L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_inline_variables</span></span></td>
<td><a href="cpp-language-inline.html">inline &#21464;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lambdas</span></span></td>
<td><a href="cpp-language-lambda.html">Lambda &#34920;&#36798;&#24335;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_modules</span></span></td>
<td><a href="cpp-language-modules.html">&#27169;&#22359;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_multidimensional_subscript</span></span></td>
<td>&#22810;&#32500;<a href="cpp-language-operator_member_access.html">&#19979;&#26631;&#36816;&#31639;&#31526;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_namespace_attributes</span></span></td>
<td><a href="cpp-language-namespace.html">&#21629;&#21517;&#31354;&#38388;</a>&#30340;&#23646;&#24615;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_noexcept_function_type</span></span></td>
<td>&#20196;<a href="cpp-language-noexcept_spec.html">&#24322;&#24120;&#35268;&#23450;</a>&#20026;&#31867;&#22411;&#31995;&#32479;&#30340;&#19968;&#37096;&#20998;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_nontype_template_args</span></span></td>
<td>&#20801;&#35768;&#20840;&#37096;<a href="cpp-language-template_parameters.html#.E9.9D.9E.E7.B1.BB.E5.9E.8B.E6.A8.A1.E6.9D.BF.E5.AE.9E.E5.8F.82">&#38750;&#31867;&#22411;&#27169;&#26495;&#23454;&#21442;</a>&#30340;&#24120;&#37327;&#27714;&#20540;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-language-template_parameters.html#.E9.9D.9E.E7.B1.BB.E5.9E.8B.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#38750;&#31867;&#22411;&#27169;&#26495;&#24418;&#21442;</a>&#20013;&#30340;&#31867;&#31867;&#22411;&#19982;&#28014;&#28857;&#31867;&#22411;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201911L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_nontype_template_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">parameter_auto</span></span></td>
<td>&#20197; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">auto</span></span></span> &#22768;&#26126;<a href="cpp-language-template_parameters.html#.E9.9D.9E.E7.B1.BB.E5.9E.8B.E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#38750;&#31867;&#22411;&#27169;&#26495;&#24418;&#21442;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_nsdmi</span></span></td>
<td><a href="cpp-language-data_members.html#.E6.88.90.E5.91.98.E5.88.9D.E5.A7.8B.E5.8C.96">&#38750;&#38745;&#24577;&#25968;&#25454;&#25104;&#21592;&#21021;&#22987;&#21270;&#22120;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200809L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_range_based_for</span></span></td>
<td><a href="cpp-language-range-for.html">&#22522;&#20110;&#33539;&#22260;&#30340; for &#24490;&#29615;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td>&#25317;&#26377;&#30456;&#24322;&#30340; <code>begin</code>/<code>end</code> &#31867;&#22411;&#30340;&#22522;&#20110;&#33539;&#22260;&#30340; <code>for</code> &#24490;&#29615;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_raw_strings</span></span></td>
<td><a href="cpp-language-string_literal.html">&#21407;&#22987;&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200710L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_ref_qualifiers</span></span></td>
<td><a href="cpp-language-member_functions.html">&#24341;&#29992;&#38480;&#23450;&#31526;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200710L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_return_type_deduction</span></span></td>
<td><a href="cpp-language-auto.html">&#24120;&#35268;&#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;&#25512;&#23548;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_rvalue_references</span></span></td>
<td><a href="cpp-language-reference.html">&#21491;&#20540;&#24341;&#29992;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200610L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_size_t_suffix</span></span></td>
<td><a href="cpp-language-integer_literal.html"><code>size_t</code> &#19982;&#20854;&#26377;&#31526;&#21495;&#29256;&#26412;&#30340;&#23383;&#38754;&#37327;&#21518;&#32512;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202011L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_sized_deallocation</span></span></td>
<td><a href="cpp-memory-new-operator_delete.html">&#20855;&#22823;&#23567;&#35299;&#20998;&#37197;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201309L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_static_assert</span></span></td>
<td><a href="cpp-language-static_assert.html"><tt>static_assert</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200410L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><a href="cpp-language-static_assert.html">&#21333;&#21442;&#25968;&#30340; <code>static_assert</code></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_structured_bindings</span></span></td>
<td><a href="cpp-language-structured_binding.html">&#32467;&#26500;&#21270;&#32465;&#23450;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_template_template_args</span></span></td>
<td><a href="cpp-language-template_parameters.html#.E6.A8.A1.E6.9D.BF.E6.A8.A1.E6.9D.BF.E5.AE.9E.E5.8F.82">&#27169;&#26495;&#27169;&#26495;&#23454;&#21442;</a>&#30340;&#21305;&#37197;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201611L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_threadsafe_static_init</span></span></td>
<td><a href="cpp-language-storage_duration.html#.E9.9D.99.E6.80.81.E5.B1.80.E9.83.A8.E5.8F.98.E9.87.8F">&#24102;&#24182;&#21457;&#30340;&#21160;&#24577;&#21021;&#22987;&#21270;&#21644;&#38144;&#27585;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200806L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_unicode_characters</span></span></td>
<td><a href="cpp-language-types.html">&#26032;&#23383;&#31526;&#31867;&#22411;</a>&#65288; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char16_t</span></span></span> &#19982; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char32_t</span></span></span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200704L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_unicode_literals</span></span></td>
<td><a href="cpp-language-string_literal.html">Unicode &#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200710L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_user_defined_literals</span></span></td>
<td><a href="cpp-language-user_literal.html">&#29992;&#25143;&#23450;&#20041;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200809L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_using_enum</span></span></td>
<td>using enum</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_variable_templates</span></span></td>
<td><a href="cpp-language-variable_template.html">&#21464;&#37327;&#27169;&#26495;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_variadic_templates</span></span></td>
<td><a href="cpp-language-parameter_pack.html">&#21464;&#21442;&#27169;&#26495;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">200704L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_variadic_using</span></span></td>
<td><a href="cpp-language-using_declaration.html">using &#22768;&#26126;</a>&#20013;&#30340;&#21253;&#23637;&#24320;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201611L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E5.BA.93.E5.8A.9F.E8.83.BD.E7.89.B9.E6.80.A7">&#26631;&#20934;&#24211;&#21151;&#33021;&#29305;&#24615;</span></h3>
<p>&#22914;&#26524;&#21253;&#21547;&#20102;&#22836;&#25991;&#20214; <a href="cpp-header-version.html"><tt>&lt;version&gt;</tt></a> &#25110;&#19979;&#34920;&#20013;&#30340;&#20219;&#24847;&#23545;&#24212;&#22836;&#25991;&#20214;&#65292;&#21017;&#19979;&#21015;&#21508;&#20010;&#23439;&#26377;&#23450;&#20041;&#12290;&#27599;&#20010;&#23439;&#37117;&#23637;&#24320;&#25104;&#20854;&#23545;&#24212;&#30340;&#21151;&#33021;&#29305;&#24615;&#34987;&#21253;&#21547;&#20110;&#24037;&#20316;&#33609;&#26696;&#26102;&#30340;&#24180;&#20221;&#19982;&#26376;&#20221;&#30340;&#30456;&#24212;&#25972;&#25968;&#23383;&#38754;&#37327;&#12290;</p>
<p>&#24403;&#21151;&#33021;&#29305;&#24615;&#21457;&#29983;&#20102;&#26174;&#33879;&#21464;&#26356;&#26102;&#65292;&#23439;&#20250;&#30456;&#24212;&#22320;&#26356;&#26032;&#12290;</p>
<div class="t-template-editlink" style=""></div>
<table class="wikitable sortable">
<tr>
<th>&#23439;&#21517;</th>
<th>&#21151;&#33021;&#29305;&#24615;</th>
<th>&#20540;</th>
<th>&#22836;&#25991;&#20214;</th>
<th><span title="&#24341;&#20837;&#35813;&#29305;&#24615;&#30340;&#26631;&#20934;">&#26631;&#20934;</span></th>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_adaptor_iterator_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">pair_constructor</span></span></td>
<td><span class="t-lc"><a href="cpp-container-stack.html">std::stack</a></span> &#19982; <span class="t-lc"><a href="cpp-container-queue.html">std::queue</a></span> &#30340;&#36845;&#20195;&#22120;&#23545;&#26500;&#36896;&#20989;&#25968;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-stack.html"><tt>&lt;stack&gt;</tt></a> <a href="cpp-header-queue.html"><tt>&lt;queue&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_addressof_constexpr</span></span></td>
<td>constexpr <span class="t-lc"><a href="cpp-memory-addressof.html">std::addressof</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_allocate_at_least</span></span></td>
<td><span class="t-lc">std::allocate_at_least</span> &#31561;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_allocator_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">traits_is_always_equal</span></span></td>
<td><a href="cpp-memory-allocator_traits.html"><tt>std::allocator_traits::is_always_equal</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a> <a href="cpp-header-scoped_allocator.html"><tt>&lt;scoped_allocator&gt;</tt></a> <a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-deque.html"><tt>&lt;deque&gt;</tt></a> <a href="cpp-header-forward_list.html"><tt>&lt;forward_list&gt;</tt></a> <a href="cpp-header-list.html"><tt>&lt;list&gt;</tt></a> <a href="cpp-header-vector.html"><tt>&lt;vector&gt;</tt></a> <a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a> <a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_any</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-any.html">std::any</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-any.html"><tt>&lt;any&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_apply</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-apply.html">std::apply</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_array_constexpr</span></span></td>
<td><span class="t-lc"><a href="cpp-iterator-reverse_iterator.html">std::reverse_iterator</a></span> &#12289; <span class="t-lc"><a href="cpp-iterator-move_iterator.html">std::move_iterator</a></span> &#12289; <span class="t-lc"><a href="cpp-container-array.html">std::array</a></span> &#21450;<a href="cpp-iterator.html#.E8.8C.83.E5.9B.B4.E8.AE.BF.E9.97.AE">&#33539;&#22260;&#35775;&#38382;</a>&#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a> <a href="cpp-header-array.html"><tt>&lt;array&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-named_req-ConstexprIterator.html"><span style="font-style:italic">&#24120;&#37327;&#34920;&#36798;&#24335;&#36845;&#20195;&#22120;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(ConstexprIterator)</span></a> &#65307; <span class="t-lc"><a href="cpp-container-array.html">std::array</a></span> &#30340; constexpr &#27604;&#36739;&#65307;&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-container-array-fill.html">std::array::fill</a></span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a> <a href="cpp-header-array.html"><tt>&lt;array&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_as_const</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-as_const.html">std::as_const</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_associative_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">heterogeneous_erasure</span></span></td>
<td><a href="cpp-container.html#.E5.85.B3.E8.81.94.E5.AE.B9.E5.99.A8">&#20851;&#32852;&#23481;&#22120;</a>&#19982;<a href="cpp-container.html#.E6.97.A0.E5.BA.8F.E5.85.B3.E8.81.94.E5.AE.B9.E5.99.A8">&#26080;&#24207;&#20851;&#32852;&#23481;&#22120;</a>&#20013;&#30340;&#24322;&#36136;&#25830;&#38500;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a> <a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_assume_aligned</span></span></td>
<td><span class="t-lc">std::assume_aligned</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_flag_test</span></span></td>
<td><span class="t-lc">std::atomic_flag::test</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_float</span></span></td>
<td><a href="cpp-atomic-atomic.html">&#28014;&#28857;&#21407;&#23376;&#31867;&#22411;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">is_always_lock_free</span></span></td>
<td><a href="cpp-atomic-atomic-is_always_lock_free.html"><tt>constexpr atomic&lt;T&gt;::is_always_lock_free</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">lock_free_type_aliases</span></span></td>
<td>&#21407;&#23376;&#20813;&#38145;&#25972;&#25968;&#31867;&#22411;&#65288; <span class="t-lc">std::atomic_signed_lock_free</span> &#12289; <span class="t-lc">std::atomic_unsigned_lock_free</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_ref</span></span></td>
<td><a href="cpp-atomic-atomic_ref.html"><tt>std::atomic_ref</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_shared_ptr</span></span></td>
<td><a href="cpp-memory-shared_ptr-atomic2.html"><tt>std::atomic&lt;std::shared_ptr&gt;</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">value_initialization</span></span></td>
<td>&#20462;&#27491;&#21407;&#23376;&#21021;&#22987;&#21270;&#65288;&#40664;&#35748;&#20540;&#21021;&#22987;&#21270; <span class="t-lc"><a href="cpp-atomic-atomic.html">std::atomic</a></span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201911L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a> <a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_atomic_wait</span></span></td>
<td>&#39640;&#25928;&#30340; <span class="t-lc"><a href="cpp-atomic-atomic.html">std::atomic</a></span> &#31561;&#24453;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_barrier</span></span></td>
<td><a href="cpp-thread-barrier.html"><tt>std::barrier</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-barrier.html"><tt>&lt;barrier&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_bind_front</span></span></td>
<td><a href="cpp-utility-functional-bind_front.html"><tt>std::bind_front</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_bit_cast</span></span></td>
<td><a href="cpp-numeric-bit_cast.html"><tt>std::bit_cast</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-bit.html"><tt>&lt;bit&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_bitops</span></span></td>
<td><a href="cpp-numeric.html#.E4.BD.8D.E6.93.8D.E7.BA.B5_.28C.2B.2B20_.E8.B5.B7.29">&#20301;&#25805;&#20316;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-bit.html"><tt>&lt;bit&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_bool_constant</span></span></td>
<td><span class="t-lc"><a href="cpp-types-integral_constant.html">std::bool_constant</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_bounded_array_traits</span></span></td>
<td><a href="cpp-types-is_bounded_array.html"><tt>std::is_bounded_array</tt></a> &#12289; <a href="cpp-types-is_unbounded_array.html"><tt>std::is_unbounded_array</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_boyer_moore_searcher</span></span></td>
<td><a href="cpp-utility-functional-boyer_moore_searcher.html">std::boyer_moore_searcher|&#25628;&#32034;&#22120;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_byte</span></span></td>
<td><a href="cpp-types-byte.html"><tt>std::byte</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-cstddef.html"><tt>&lt;cstddef&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_byteswap</span></span></td>
<td><a href="cpp-numeric-byteswap.html"><tt>std::byteswap</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-bit.html"><tt>&lt;bit&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_char8_t</span></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">char8_t</span></span> &#30340;&#24211;&#25903;&#25345;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-atomic.html"><tt>&lt;atomic&gt;</tt></a> <a href="cpp-header-filesystem.html"><tt>&lt;filesystem&gt;</tt></a> <a href="cpp-header-istream.html"><tt>&lt;istream&gt;</tt></a> <a href="cpp-header-limits.html"><tt>&lt;limits&gt;</tt></a> <a href="cpp-header-locale.html"><tt>&lt;locale&gt;</tt></a> <a href="cpp-header-ostream.html"><tt>&lt;ostream&gt;</tt></a> <a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td rowspan="3"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_chrono</span></span></td>
<td><span class="t-lc"><a href="cpp-chrono-duration.html">std::chrono::duration</a></span> &#19982; <span class="t-lc"><a href="cpp-chrono-time_point.html">std::chrono::time_point</a></span> &#30340;&#33293;&#20837;&#20989;&#25968;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><a href="cpp-header-chrono.html"><tt>&lt;chrono&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-lc"><a href="cpp-chrono-duration.html">std::chrono::duration</a></span> &#19982; <span class="t-lc"><a href="cpp-chrono-time_point.html">std::chrono::time_point</a></span> &#30340;&#25152;&#26377;&#25104;&#21592;&#20989;&#25968;&#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201611L</span></span></span></td>
<td><a href="cpp-header-chrono.html"><tt>&lt;chrono&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-chrono.html#.E6.97.A5.E5.8E.86">&#26085;&#21382;</a>&#19982;<a href="cpp-chrono.html#.E6.97.B6.E5.8C.BA">&#26102;&#21306;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-chrono.html"><tt>&lt;chrono&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_chrono_udls</span></span></td>
<td><a href="cpp-chrono-duration.html#.E5.AD.97.E9.9D.A2.E9.87.8F">&#26102;&#38388;&#31867;&#22411;&#30340;&#29992;&#25143;&#23450;&#20041;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-chrono.html"><tt>&lt;chrono&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_clamp</span></span></td>
<td><span class="t-lc"><a href="cpp-algorithm-clamp.html">std::clamp</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_complex_udls</span></span></td>
<td><a href="cpp-numeric-complex-operator_22_22i.html"><code>std::complex</code> &#30340;&#29992;&#25143;&#23450;&#20041;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201309L</span></span></span></td>
<td><a href="cpp-header-complex.html"><tt>&lt;complex&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_concepts</span></span></td>
<td><a href="cpp-concepts.html">&#26631;&#20934;&#24211;&#27010;&#24565;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202002L</span></span></span></td>
<td><a href="cpp-header-concepts.html"><tt>&lt;concepts&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_algorithms</span></span></td>
<td><a href="cpp-algorithm.html">&#31639;&#27861;</a>&#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_complex</span></span></td>
<td><span class="t-lc"><a href="cpp-numeric-complex.html">std::complex</a></span> &#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-complex.html"><tt>&lt;complex&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">dynamic_alloc</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-allocator.html">std::allocator</a></span> &#19982;&#30456;&#20851;&#24037;&#20855;&#30340;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_functional</span></span></td>
<td>&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-utility-functional-default_searcher.html">std::default_searcher</a></span> &#65289;&#65307; constexpr INVOKE</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_iterator</span></span></td>
<td>&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-iterator-insert_iterator.html">std::insert_iterator</a></span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_memory</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-pointer_traits.html">std::pointer_traits</a></span> &#20013;&#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_numeric</span></span></td>
<td><a href="cpp-algorithm.html#.E6.95.B0.E5.80.BC.E8.BF.90.E7.AE.97">&lt;numeric&gt; &#31639;&#27861;</a>&#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201911L</span></span></span></td>
<td><a href="cpp-header-numeric.html"><tt>&lt;numeric&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_string</span></span></td>
<td><span class="t-lc"><a href="cpp-string-basic_string.html">std::string</a></span> &#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">string_view</span></span></td>
<td>&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-string-basic_string_view-copy.html">std::string_view::copy</a></span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_tuple</span></span></td>
<td>&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-utility-tuple-operator=.html">std::tuple::operator=</a></span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_typeinfo</span></span></td>
<td><span class="t-lc"><a href="cpp-types-type_info-operator_cmp.html">std::type_info::operator==</a></span> &#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-typeinfo.html"><tt>&lt;typeinfo&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_utility</span></span></td>
<td>&#26434;&#39033; constexpr &#65288; <span class="t-lc"><a href="cpp-utility-pair-operator=.html">std::pair::operator=</a></span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_constexpr_vector</span></span></td>
<td><span class="t-lc"><a href="cpp-container-vector.html">std::vector</a></span> &#30340; constexpr</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-vector.html"><tt>&lt;vector&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_coroutine</span></span></td>
<td><a href="cpp-language-coroutines.html">&#21327;&#31243;</a>&#65288;&#24211;&#25903;&#25345;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-coroutine.html"><tt>&lt;coroutine&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_destroying_delete</span></span></td>
<td><a href="cpp-memory-new-operator_delete.html">&#38144;&#27585;&#30340; <code>operator delete</code></a> &#65288;&#24211;&#25903;&#25345;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-new.html"><tt>&lt;new&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_enable_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">shared_from_this</span></span></td>
<td><a href="cpp-memory-enable_shared_from_this.html">&#20877;&#27425;&#21551;&#29992; shared_from_this</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_endian</span></span></td>
<td><span class="t-lc">std::endian</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-bit.html"><tt>&lt;bit&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_erase_if</span></span></td>
<td>&#32479;&#19968;&#23481;&#22120;&#25830;&#38500;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202002L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-deque.html"><tt>&lt;deque&gt;</tt></a> <a href="cpp-header-forward_list.html"><tt>&lt;forward_list&gt;</tt></a> <a href="cpp-header-list.html"><tt>&lt;list&gt;</tt></a> <a href="cpp-header-vector.html"><tt>&lt;vector&gt;</tt></a> <a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a> <a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_exchange_function</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-exchange.html">std::exchange</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_execution</span></span></td>
<td><a href="cpp-algorithm.html#.E6.89.A7.E8.A1.8C.E7.AD.96.E7.95.A5">&#25191;&#34892;&#31574;&#30053;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-execution.html"><tt>&lt;execution&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-algorithm-execution_policy_tag_t.html"><tt>std::execution::unsequenced_policy</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-execution.html"><tt>&lt;execution&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_filesystem</span></span></td>
<td><a href="cpp-filesystem.html">&#25991;&#20214;&#31995;&#32479;&#24211;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><a href="cpp-header-filesystem.html"><tt>&lt;filesystem&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="3"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_format</span></span></td>
<td><a href="cpp-utility-format.html">&#25991;&#26412;&#26684;&#24335;&#21270;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-format.html"><tt>&lt;format&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td>&#32534;&#35793;&#26102;&#26684;&#24335;&#23383;&#31526;&#20018;&#26816;&#26597;&#65307;&#20943;&#23569; <span class="t-lc">std::vformat_to</span> &#30340;&#21442;&#25968;&#21270;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-format.html"><tt>&lt;format&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td>&#20462;&#22797; <code>chrono</code> &#26684;&#24335;&#21270;&#22120;&#20013;&#30340;&#26412;&#22320;&#29615;&#22659;&#22788;&#29702;&#65307;&#26684;&#24335;&#21270;&#21442;&#25968;&#20013;&#20351;&#29992;&#36716;&#21457;&#24341;&#29992;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-format.html"><tt>&lt;format&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_gcd_lcm</span></span></td>
<td><span class="t-lc"><a href="cpp-numeric-gcd.html">std::gcd</a></span>&#12289; <span class="t-lc"><a href="cpp-numeric-lcm.html">std::lcm</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-numeric.html"><tt>&lt;numeric&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_generic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">associative_lookup</span></span></td>
<td>&#20851;&#32852;&#23481;&#22120;&#20013;&#30340;&#24322;&#36136;&#27604;&#36739;&#26597;&#25214;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_generic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">unordered_lookup</span></span></td>
<td>&#26080;&#24207;&#20851;&#32852;&#23481;&#22120;&#20013;&#30340;&#24322;&#36136;&#27604;&#36739;&#26597;&#25214;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_hardware_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">interference_size</span></span></td>
<td><a href="cpp-thread-hardware_destructive_interference_size.html">constexpr std::hardware_{constructive, destructive}_interference_size</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><a href="cpp-header-new.html"><tt>&lt;new&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_has_unique_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">object_representations</span></span></td>
<td><span class="t-lc"><a href="cpp-types-has_unique_object_representations.html">std::has_unique_object_representations</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_hypot</span></span></td>
<td><span class="t-lc"><a href="cpp-numeric-math-hypot.html">std::hypot</a></span> &#30340; 3 &#21442;&#25968;&#37325;&#36733;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-cmath.html"><tt>&lt;cmath&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_incomplete_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">container_elements</span></span></td>
<td>&#26631;&#20934;&#23481;&#22120;&#30340;&#26368;&#23567;&#19981;&#23436;&#25972;&#31867;&#22411;&#25903;&#25345;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505L</span></span></span></td>
<td><a href="cpp-header-forward_list.html"><tt>&lt;forward_list&gt;</tt></a> <a href="cpp-header-list.html"><tt>&lt;list&gt;</tt></a> <a href="cpp-header-vector.html"><tt>&lt;vector&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_int_pow2</span></span></td>
<td><a href="cpp-numeric.html#.E4.BD.8D.E6.93.8D.E7.BA.B5_.28C.2B.2B20_.E8.B5.B7.29">&#25972;&#25968;&#30340; 2 &#30340;&#24130;&#36816;&#31639;</a>&#65288; <span class="t-lc">std::has_single_bit</span> &#12289; <span class="t-lc">std::bit_ceil</span> &#12289; <span class="t-lc">std::bit_floor</span> &#12289; <span class="t-lc">std::bit_length</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202002L</span></span></span></td>
<td><a href="cpp-header-bit.html"><tt>&lt;bit&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_integer_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">comparison_functions</span></span></td>
<td><a href="cpp-utility.html#.E6.95.B4.E6.95.B0.E6.AF.94.E8.BE.83.E5.87.BD.E6.95.B0">&#25972;&#25968;&#27604;&#36739;&#20989;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202002L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_integer_sequence</span></span></td>
<td><a href="cpp-utility-integer_sequence.html">&#32534;&#35793;&#26102;&#25972;&#25968;&#24207;&#21015;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_integral_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">constant_callable</span></span></td>
<td><span class="t-lc"><a href="cpp-types-integral_constant.html">std::integral_constant::operator()</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_interpolate</span></span></td>
<td><a href="cpp-numeric-lerp.html"><tt>std::lerp</tt></a> &#19982; <a href="cpp-numeric-midpoint.html"><tt>std::midpoint</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-cmath.html"><tt>&lt;cmath&gt;</tt></a> <a href="cpp-header-numeric.html"><tt>&lt;numeric&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_invoke</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-functional-invoke.html">std::invoke()</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_invoke_r</span></span></td>
<td><a href="cpp-utility-functional-invoke.html"><tt>std::invoke_r</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_aggregate</span></span></td>
<td><a href="cpp-types-is_aggregate.html"><tt>std::is_aggregate</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_constant_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">evaluated</span></span></td>
<td><a href="cpp-types-is_constant_evaluated.html"><tt>std::is_constant_evaluated</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_final</span></span></td>
<td><span class="t-lc"><a href="cpp-types-is_final.html">std::is_final</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201402L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_invocable</span></span></td>
<td><span class="t-lc">std::is_invocable</span> &#12289; <span class="t-lc">std::invoke_result</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_layout_compatible</span></span></td>
<td><a href="cpp-types-is_layout_compatible.html"><tt>std::is_layout_compatible</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_nothrow_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">convertible</span></span></td>
<td><a href="cpp-types-is_convertible.html"><tt>std::is_nothrow_convertible</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_null_pointer</span></span></td>
<td><span class="t-lc"><a href="cpp-types-is_null_pointer.html">std::is_null_pointer</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201309L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_pointer_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">interconvertible</span></span></td>
<td>&#25351;&#38024;&#21487;&#20114;&#36716;&#25442;&#29305;&#24449;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_scoped_enum</span></span></td>
<td><a href="cpp-types-is_scoped_enum.html"><tt>std::is_scoped_enum</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202011L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_is_swappable</span></span></td>
<td><a href="cpp-types-is_swappable.html">[nothrow-]swappable &#29305;&#24449;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_jthread</span></span></td>
<td><a href="cpp-thread-stop_token.html">&#20572;&#27490;&#35760;&#21495;</a>&#19982;<a href="cpp-thread-jthread.html">&#32467;&#21512;&#32447;&#31243;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201911L</span></span></span></td>
<td><a href="cpp-header-stop_token.html"><tt>&lt;stop_token&gt;</tt></a> <a href="cpp-header-thread.html"><tt>&lt;thread&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_latch</span></span></td>
<td><a href="cpp-thread-latch.html"><tt>std::latch</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-latch.html"><tt>&lt;latch&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_launder</span></span></td>
<td>&#26680;&#24515;&#38382;&#39064; 1776 &#65306;&#26367;&#25442;&#21547;&#24341;&#29992;&#25104;&#21592;&#30340;&#31867;&#23545;&#35937;&#65288; <span class="t-lc"><a href="cpp-utility-launder.html">std::launder</a></span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-new.html"><tt>&lt;new&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_list_remove_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">return_type</span></span></td>
<td>&#26356;&#25913; <span class="t-lc"><a href="cpp-container-forward_list.html">std::forward_list</a></span> &#19982; <span class="t-lc"><a href="cpp-container-list.html">std::list</a></span> <span class="t-lc"><a href="cpp-container-list-remove.html">remove()</a></span> &#12289; <span class="t-lc"><a href="cpp-container-list-remove.html">remove_if()</a></span> &#21450; <span class="t-lc"><a href="cpp-container-list-unique.html">unique()</a></span> &#25104;&#21592;&#30340;&#36820;&#22238;&#31867;&#22411;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-forward_list.html"><tt>&lt;forward_list&gt;</tt></a> <a href="cpp-header-list.html"><tt>&lt;list&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_logical_traits</span></span></td>
<td><a href="cpp-types.html#.E7.89.B9.E5.BE.81.E4.B8.8A.E7.9A.84.E8.BF.90.E7.AE.97">&#36923;&#36753;&#36816;&#31639;&#31526;&#31867;&#22411;&#29305;&#24449;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_make_from_tuple</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-make_from_tuple.html">std::make_from_tuple()</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_make_reverse_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">iterator</span></span></td>
<td><a href="cpp-iterator-make_reverse_iterator.html"><tt>std::make_reverse_iterator</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201402L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_make_unique</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-unique_ptr-make_unique.html">std::make_unique</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_map_try_emplace</span></span></td>
<td><span class="t-lc"><a href="cpp-container-map-try_emplace.html">std::map::try_emplace</a></span>, <span class="t-lc"><a href="cpp-container-map-insert_or_assign.html">std::map::insert_or_assign</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_math_constants</span></span></td>
<td><a href="cpp-header-numbers.html">&#25968;&#23398;&#24120;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-numbers.html"><tt>&lt;numbers&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_math_special_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">functions</span></span></td>
<td><a href="cpp-numeric-special_functions.html">C++17 &#30340;&#25968;&#23398;&#29305;&#27530;&#20989;&#25968;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-cmath.html"><tt>&lt;cmath&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_memory_resource</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-memory_resource.html">std::pmr::memory_resource</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-memory_resource.html"><tt>&lt;memory_resource&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_monadic_optional</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-optional.html">std::optional</a></span> &#20013;&#30340;&#21333;&#23376;&#25805;&#20316;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-optional.html"><tt>&lt;optional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_move_only_function</span></span></td>
<td><span class="t-lc">std::move_only_function</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_node_extract</span></span></td>
<td>&#25340;&#25509; map &#19982; set &#65288; <span class="t-lc"><a href="cpp-container-map-extract.html">std::map::extract</a></span> &#12289; <span class="t-lc"><a href="cpp-container-map-merge.html">std::map::merge</a></span> &#12289; <a href="cpp-container-map-insert.html"><tt>std::map::insert(node_type)</tt></a> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a> <a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_nonmember_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">container_access</span></span></td>
<td><span class="t-lc"><a href="cpp-iterator-size.html">std::size()</a></span> &#12289; <span class="t-lc"><a href="cpp-iterator-data.html">std::data()</a></span> &#21450; <span class="t-lc"><a href="cpp-iterator-empty.html">std::empty()</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a> <a href="cpp-header-array.html"><tt>&lt;array&gt;</tt></a> <a href="cpp-header-deque.html"><tt>&lt;deque&gt;</tt></a> <a href="cpp-header-forward_list.html"><tt>&lt;forward_list&gt;</tt></a> <a href="cpp-header-list.html"><tt>&lt;list&gt;</tt></a> <a href="cpp-header-map.html"><tt>&lt;map&gt;</tt></a> <a href="cpp-header-regex.html"><tt>&lt;regex&gt;</tt></a> <a href="cpp-header-set.html"><tt>&lt;set&gt;</tt></a> <a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a> <a href="cpp-header-unordered_set.html"><tt>&lt;unordered_set&gt;</tt></a> <a href="cpp-header-vector.html"><tt>&lt;vector&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_not_fn</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-functional-not_fn.html">std::not_fn()</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_null_iterators</span></span></td>
<td>&#31354;<a href="cpp-named_req-ForwardIterator.html"><span style="font-style:italic">&#32769;&#24335;&#21521;&#21069;&#36845;&#20195;&#22120;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(LegacyForwardIterator)</span></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_optional</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-optional.html">std::optional</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-optional.html"><tt>&lt;optional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td>&#23436;&#20840; <code>constexpr</code> <span class="t-lc"><a href="cpp-utility-optional.html">std::optional</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-optional.html"><tt>&lt;optional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_out_ptr</span></span></td>
<td><span class="t-lc">std::out_ptr</span>&#12289; <span class="t-lc">std::inout_ptr</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_parallel_algorithm</span></span></td>
<td><a href="cpp-algorithm.html#.E6.89.A7.E8.A1.8C.E7.AD.96.E7.95.A5">&#24182;&#34892;&#31639;&#27861;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a> <a href="cpp-header-numeric.html"><tt>&lt;numeric&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_polymorphic_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">allocator</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-polymorphic_allocator.html">std::pmr::polymorphic_allocator&lt;&gt;</a></span> &#20316;&#20026;&#35789;&#27719;&#31867;&#22411;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-memory_resource.html"><tt>&lt;memory_resource&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_quoted_string_io</span></span></td>
<td><span class="t-lc"><a href="cpp-io-manip-quoted.html">std::quoted</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-iomanip.html"><tt>&lt;iomanip&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="3"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_ranges</span></span></td>
<td><a href="cpp-ranges.html">&#33539;&#22260;&#24211;</a>&#19982;<a href="cpp-algorithm-ranges.html">&#21463;&#32422;&#26463;&#31639;&#27861;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201911L</span></span></span></td>
<td rowspan="3"><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a> <a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a> <a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a> <a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a> <a href="cpp-header-ranges.html"><tt>&lt;ranges&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td>&#19981;<a href="cpp-concepts-default_initializable.html">&#21487;&#40664;&#35748;&#21021;&#22987;&#21270;</a>&#30340;<a href="cpp-ranges-view.html">&#35270;&#22270;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td>&#24102;<a href="cpp-ranges-owning_view.html">&#25152;&#26377;&#26435;</a>&#30340;<a href="cpp-ranges-view.html">&#35270;&#22270;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_ranges_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">starts_ends_with</span></span></td>
<td><span class="t-lc">std::ranges::starts_with</span>&#12289; <span class="t-lc">std::ranges::ends_with</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_ranges_zip</span></span></td>
<td><span class="t-lc">std::ranges::zip_view</span>&#12289; <span class="t-lc">std::ranges::zip_transform_view</span>&#12289; <span class="t-lc">std::ranges::adjacent_view</span>&#12289; <span class="t-lc">std::ranges::adjacent_transform_view</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-ranges.html"><tt>&lt;ranges&gt;</tt></a> <a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a> <a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_raw_memory_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">algorithms</span></span></td>
<td><a href="cpp-memory.html#.E6.9C.AA.E5.88.9D.E5.A7.8B.E5.8C.96.E5.AD.98.E5.82.A8">&#25193;&#23637;&#20869;&#23384;&#31649;&#29702;&#24037;&#20855;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_remove_cvref</span></span></td>
<td><a href="cpp-types-remove_cvref.html"><tt>std::remove_cvref</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_result_of_sfinae</span></span></td>
<td><span class="t-lc"><a href="cpp-types-result_of.html">std::result_of</a></span> &#19982; SFINAE</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201210L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a> <a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_robust_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">nonmodifying_seq_ops</span></span></td>
<td>&#20351;&#19981;&#20462;&#25913;&#24207;&#21015;&#30340;&#25805;&#20316;&#26356;&#31283;&#20581;&#65288; <span class="t-lc"><a href="cpp-algorithm-mismatch.html">std::mismatch</a></span> &#12289; <span class="t-lc"><a href="cpp-algorithm-equal.html">std::equal</a></span> &#21450; <span class="t-lc"><a href="cpp-algorithm-is_permutation.html">std::is_permutation</a></span> &#30340;&#21452;&#33539;&#22260;&#37325;&#36733;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_sample</span></span></td>
<td><span class="t-lc"><a href="cpp-algorithm-sample.html">std::sample</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201603L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_scoped_lock</span></span></td>
<td><a href="cpp-thread-scoped_lock.html"><tt>std::scoped_lock</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201703L</span></span></span></td>
<td><a href="cpp-header-mutex.html"><tt>&lt;mutex&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_semaphore</span></span></td>
<td><a href="cpp-thread-counting_semaphore.html"><code>std::counting_semaphore</code> &#12289; <code>std::binary_semaphore</code></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-semaphore.html"><tt>&lt;semaphore&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_shared_mutex</span></span></td>
<td><span class="t-lc"><a href="cpp-thread-shared_mutex.html">std::shared_mutex</a></span> &#65288;&#26080;&#26102;&#38480;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201505L</span></span></span></td>
<td><a href="cpp-header-shared_mutex.html"><tt>&lt;shared_mutex&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_shared_ptr_arrays</span></span></td>
<td><span class="t-lc"><a href="cpp-memory-shared_ptr.html">std::shared_ptr&lt;T[]&gt;</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201611L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-lc"><a href="cpp-memory-shared_ptr-make_shared.html">std::make_shared</a></span> &#30340;&#25968;&#32452;&#25903;&#25345;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201707L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_shared_ptr_weak_type</span></span></td>
<td><a href="cpp-memory-shared_ptr.html"><tt>shared_ptr::weak_type</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_shared_timed_mutex</span></span></td>
<td><span class="t-lc"><a href="cpp-thread-shared_timed_mutex.html">std::shared_timed_mutex</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201402L</span></span></span></td>
<td><a href="cpp-header-shared_mutex.html"><tt>&lt;shared_mutex&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_shift</span></span></td>
<td><a href="cpp-algorithm-shift.html"><tt>std::shift_left</tt></a> &#19982; <a href="cpp-algorithm-shift.html"><tt>std::shift_right</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-algorithm.html"><tt>&lt;algorithm&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_smart_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">ptr_for_overwrite</span></span></td>
<td>&#29992;&#40664;&#35748;&#21021;&#22987;&#21270;&#21019;&#24314;&#26234;&#33021;&#25351;&#38024;&#65288; <span class="t-lc">std::allocate_shared_for_overwrite</span> &#12289; <span class="t-lc">std::make_shared_for_overwrite</span> &#12289; <span class="t-lc">std::make_unique_for_overwrite</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_source_location</span></span></td>
<td>&#28304;&#30721;&#20449;&#24687;&#25429;&#33719;&#65288; <span class="t-lc">std::source_location</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-source_location.html"><tt>&lt;source_location&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_span</span></span></td>
<td><a href="cpp-container-span.html"><tt>std::span</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202002L</span></span></span></td>
<td><a href="cpp-header-span.html"><tt>&lt;span&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_spanstream</span></span></td>
<td><a href="cpp-io-basic_spanbuf.html"><tt>std::spanbuf</tt></a>&#12289; <a href="cpp-io-basic_spanstream.html"><tt>std::spanstream</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-spanstream.html"><tt>&lt;spanstream&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_ssize</span></span></td>
<td><a href="cpp-iterator-size.html"><tt>std::ssize</tt></a> &#19982;&#26080;&#31526;&#21495;&#30340; <a href="cpp-container-span-size.html"><tt>std::span::size</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201902L</span></span></span></td>
<td><a href="cpp-header-iterator.html"><tt>&lt;iterator&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_stacktrace</span></span></td>
<td><a href="cpp-utility.html#.E6.A0.88.E8.B8.AA">&#26632;&#36394;&#24211;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202011L</span></span></span></td>
<td><a href="cpp-header-stacktrace.html"><tt>&lt;stacktrace&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_starts_ends_with</span></span></td>
<td>&#23383;&#31526;&#20018;&#21069;&#32512;&#19982;&#21518;&#32512;&#26816;&#26597;&#65288; <span class="t-lc"><a href="cpp-string-basic_string.html">std::string</a></span> &#19982; <span class="t-lc"><a href="cpp-string-basic_string_view.html">std::string_view</a></span> &#30340; <span class="t-lc">starts_with()</span> &#19982; <span class="t-lc">ends_with()</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_stdatomic_h</span></span></td>
<td>C &#21407;&#23376;&#25805;&#20316;&#30340;&#20860;&#23481;&#22836;&#25991;&#20214;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202011L</span></span></span></td>
<td><a href="cpp-header-stdatomic.h.html"><tt>&lt;stdatomic.h&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_string_contains</span></span></td>
<td><a href="cpp-string-basic_string-contains.html"><tt>std::basic_string</tt></a> &#19982; <a href="cpp-string-basic_string_view-contains.html"><tt>std::basic_string_view</tt></a> &#30340; <code>contains</code> &#20989;&#25968;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202011L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_string_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">resize_and_overwrite</span></span></td>
<td><span class="t-lc">std::basic_string::resize_and_overwrite</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202110L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_string_udls</span></span></td>
<td><a href="cpp-string-basic_string-operator_22_22s.html">&#23383;&#31526;&#20018;&#31867;&#22411;&#30340;&#29992;&#25143;&#23450;&#20041;&#23383;&#38754;&#37327;</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_string_view</span></span></td>
<td><span class="t-lc"><a href="cpp-string-basic_string_view.html">std::string_view</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><a href="cpp-named_req-ConstexprIterator.html"><span style="font-style:italic">&#24120;&#37327;&#34920;&#36798;&#24335;&#36845;&#20195;&#22120;</span> <span style="font-family: Georgia, &#39;DejaVu Serif&#39;, serif; font-style:italic">(ConstexprIterator)</span></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><a href="cpp-header-string.html"><tt>&lt;string&gt;</tt></a> <a href="cpp-header-string_view.html"><tt>&lt;string_view&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_syncbuf</span></span></td>
<td>&#21516;&#27493;&#32531;&#20914;&#30340;&#36755;&#20986;&#27969;&#65288; <span class="t-lc">std::syncbuf</span> &#12289; <span class="t-lc">std::osyncstream</span> &#65289;&#19982;&#25805;&#32437;&#31526;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201803L</span></span></span></td>
<td><a href="cpp-header-syncstream.html"><tt>&lt;syncstream&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_three_way_comparison</span></span></td>
<td><a href="cpp-language-operator_comparison.html#.E4.B8.89.E8.B7.AF.E6.AF.94.E8.BE.83">&#19977;&#36335;&#27604;&#36739;</a>&#65288;&#24211;&#25903;&#25345;&#65289;&#65307;&#28155;&#21152;&#19977;&#36335;&#27604;&#36739;&#21040;&#26631;&#20934;&#24211;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-compare.html"><tt>&lt;compare&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_to_address</span></span></td>
<td>&#36716;&#25442;&#25351;&#38024;&#20026;&#35064;&#25351;&#38024;&#65288; <span class="t-lc">std::to_address</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201711L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_to_array</span></span></td>
<td><a href="cpp-container-array-to_array.html"><tt>std::to_array</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201907L</span></span></span></td>
<td><a href="cpp-header-array.html"><tt>&lt;array&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_to_chars</span></span></td>
<td>&#21021;&#31561;&#23383;&#31526;&#20018;&#36716;&#25442;&#65288; <span class="t-lc">std::to_chars</span> &#12289; <span class="t-lc">std::from_chars</span> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201611L</span></span></span></td>
<td><a href="cpp-header-charconv.html"><tt>&lt;charconv&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_to_underlying</span></span></td>
<td><a href="cpp-utility-to_underlying.html"><tt>std::to_underlying</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202102L</span></span></span></td>
<td><a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_transformation_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">trait_aliases</span></span></td>
<td>&#21464;&#25442;&#29305;&#24449;&#30340;&#21035;&#21517;&#27169;&#26495;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td rowspan="2"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_transparent_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">operators</span></span></td>
<td>&#36890;&#36879;&#36816;&#31639;&#31526;&#20989;&#25968;&#23545;&#35937;&#65288; <span class="t-lc">std::less&lt;&gt;</span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201210L</span></span></span></td>
<td><a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td>&#36890;&#36879;&#30340; <span class="t-lc"><a href="cpp-memory-owner_less.html">std::owner_less</a></span> &#65288; <a href="cpp-memory-owner_less_void.html"><tt>std::owner_less&lt;void&gt;</tt></a> &#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><a href="cpp-header-memory.html"><tt>&lt;memory&gt;</tt></a> <a href="cpp-header-functional.html"><tt>&lt;functional&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_tuple_element_t</span></span></td>
<td><a href="cpp-utility-tuple-tuple_element.html"><tt>std::tuple_element_t</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201402L</span></span></span></td>
<td><a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_tuples_by_type</span></span></td>
<td><a href="cpp-utility-tuple-get.html">&#25353;&#31867;&#22411;&#23547;&#22336; tuple</a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201304L</span></span></span></td>
<td><a href="cpp-header-tuple.html"><tt>&lt;tuple&gt;</tt></a> <a href="cpp-header-utility.html"><tt>&lt;utility&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx14">(C++14)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_type_identity</span></span></td>
<td><span class="t-lc">std::type_identity</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201806L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_type_trait_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">variable_templates</span></span></td>
<td>&#31867;&#22411;&#29305;&#24449;&#21464;&#37327;&#27169;&#26495;&#65288; <span class="t-lc"><a href="cpp-types-is_void.html">std::is_void_v</a></span> &#31561;&#65289;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201510L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_uncaught_exceptions</span></span></td>
<td><a href="cpp-error-uncaught_exception.html"><tt>std::uncaught_exceptions</tt></a></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-exception.html"><tt>&lt;exception&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_unordered_</span></span><span class="t-c"><span class="mw-geshi cpp source-cpp">map_try_emplace</span></span></td>
<td><span class="t-lc"><a href="cpp-container-unordered_map-try_emplace.html">std::unordered_map::try_emplace</a></span> &#12289; <span class="t-lc"><a href="cpp-container-unordered_map-insert_or_assign.html">std::unordered_map::insert_or_assign</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-unordered_map.html"><tt>&lt;unordered_map&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_unwrap_ref</span></span></td>
<td><span class="t-lc">std::unwrap_ref_decay</span> &#19982; <span class="t-lc">std::unwrap_reference</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201811L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx20">(C++20)</span></td>
</tr>
<tr>
<td rowspan="3"><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_variant</span></span></td>
<td><span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> &#65306; C++17 &#30340;&#31867;&#22411;&#23433;&#20840;&#32852;&#21512;&#20307;</td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201606L</span></span></span></td>
<td><a href="cpp-header-variant.html"><tt>&lt;variant&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
<tr>
<td><span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span> &#30340;&#27966;&#29983;&#31867;&#30340; <span class="t-lc"><a href="cpp-utility-variant-visit.html">std::visit</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202102L</span></span></span></td>
<td><a href="cpp-header-variant.html"><tt>&lt;variant&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td>&#23436;&#20840; <code>constexpr</code> <span class="t-lc"><a href="cpp-utility-variant.html">std::variant</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">202106L</span></span></span></td>
<td><a href="cpp-header-variant.html"><tt>&lt;variant&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx23">(C++23)</span></td>
</tr>
<tr>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">__cpp_lib_void_t</span></span></td>
<td><span class="t-lc"><a href="cpp-types-void_t.html">std::void_t</a></span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">201411L</span></span></span></td>
<td><a href="cpp-header-type_traits.html"><tt>&lt;type_traits&gt;</tt></a></td>
<td><span class="t-mark-rev t-since-cxx17">(C++17)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<h4><span class="mw-headline" id=".E6.AD.A3.E5.B8.B8.E4.BD.BF.E7.94.A8">&#27491;&#24120;&#20351;&#29992;</span></h4>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#ifdef __has_include // &#26816;&#26597; __has_include &#26159;&#21542;&#23384;&#22312;</span>
<span class="co2"># if __has_include(&lt;optional&gt;) // &#26816;&#26597;&#26631;&#20934;&#24211;</span>
<span class="co2"># include &lt;optional&gt;</span>
<span class="co2"># elif __has_include(&lt;experimental/optional&gt;) // &#26816;&#26597;&#23454;&#39564;&#29256;&#26412;</span>
<span class="co2"># include &lt;experimental/optional&gt;</span>
<span class="co2"># elif __has_include(&lt;boost/optional.hpp&gt;) // &#23581;&#35797;&#22806;&#37096;&#24211;</span>
<span class="co2"># include &lt;boost/optional.hpp&gt;</span>
<span class="co2"># else // &#23436;&#20840;&#25214;&#19981;&#21040;</span>
<span class="co2"># error &quot;Missing &lt;optional&gt;&quot;</span>
<span class="co2"># endif</span>
<span class="co2">#endif</span>
<span class="co2">#ifdef __has_cpp_attribute // &#26816;&#26597; __has_cpp_attribute &#26159;&#21542;&#23384;&#22312;</span>
<span class="co2"># if __has_cpp_attribute(deprecated) // &#26816;&#26597;&#19968;&#20010;&#23646;&#24615;</span>
<span class="co2"># define DEPRECATED(msg) [[deprecated(msg)]]</span>
<span class="co2"># endif</span>
<span class="co2">#endif</span>
<span class="co2">#ifndef DEPRECATED</span>
<span class="co2"># define DEPRECATED(msg)</span>
<span class="co2">#endif</span>
DEPRECATED<span class="br0">(</span><span class="st0">&quot;foo() has been deprecated&quot;</span><span class="br0">)</span> <span class="kw4">void</span> foo<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co2">#if __cpp_constexpr &gt;= 201304 // &#26816;&#26597;&#21151;&#33021;&#29305;&#24615;&#30340;&#25351;&#23450;&#29256;&#26412;</span>
<span class="co2"># define CONSTEXPR constexpr</span>
<span class="co2">#else</span>
<span class="co2"># define CONSTEXPR inline</span>
<span class="co2">#endif</span>
CONSTEXPR <span class="kw4">int</span> bar<span class="br0">(</span><span class="kw4">unsigned</span> i<span class="br0">)</span>
<span class="br0">{</span>
<span class="co2">#ifdef __cpp_binary_literals // &#26816;&#26597;&#21151;&#33021;&#29305;&#24615;&#26159;&#21542;&#23384;&#22312;</span>
<span class="kw4">unsigned</span> mask1 <span class="sy1">=</span> <span class="nu6">0b11000000</span><span class="sy4">;</span>
<span class="kw4">unsigned</span> mask2 <span class="sy1">=</span> <span class="nu6">0b00000111</span><span class="sy4">;</span>
<span class="co2">#else</span>
<span class="kw4">unsigned</span> mask1 <span class="sy1">=</span> <span class="nu12">0xA0</span><span class="sy4">;</span>
<span class="kw4">unsigned</span> mask2 <span class="sy1">=</span> <span class="nu12">0x07</span><span class="sy4">;</span>
<span class="co2">#endif</span>
<span class="kw1">if</span> <span class="br0">(</span> i <span class="sy3">&amp;</span> mask1 <span class="br0">)</span>
<span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span> i <span class="sy3">&amp;</span> mask2 <span class="br0">)</span>
<span class="kw1">return</span> <span class="nu0">2</span><span class="sy4">;</span>
<span class="kw1">return</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<h4><span class="mw-headline" id=".E7.BC.96.E8.AF.91.E5.99.A8.E5.8A.9F.E8.83.BD.E7.89.B9.E6.80.A7.E6.94.BE.E5.87.BA">&#32534;&#35793;&#22120;&#21151;&#33021;&#29305;&#24615;&#25918;&#20986;</span></h4>
<div class="t-template-editlink" style=""></div>
<div class="t-example">
<p>&#20197;&#19979;&#31034;&#20363;&#25918;&#20986; C++ &#32534;&#35793;&#22120;&#21151;&#33021;&#29305;&#24615;&#19982;&#23646;&#24615;&#12290;</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#if __cplusplus &lt; 201100</span>
<span class="co2"># error &quot;C++11 or better is required&quot;</span>
<span class="co2">#endif</span>
<span class="co2">#include &lt;algorithm&gt;</span>
<span class="co2">#include &lt;cstring&gt;</span>
<span class="co2">#include &lt;iomanip&gt;</span>
<span class="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;string&gt;</span>
<span class="co2">#ifdef __has_include</span>
<span class="co2"># if __has_include(&lt;version&gt;)</span>
<span class="co2"># include &lt;version&gt;</span>
<span class="co2"># endif</span>
<span class="co2">#endif</span>
<span class="co2">#define COMPILER_FEATURE_VALUE(value) #value</span>
<span class="co2">#define COMPILER_FEATURE_ENTRY(name) { #name, COMPILER_FEATURE_VALUE(name) },</span>
<span class="co2">#ifdef __has_cpp_attribute</span>
<span class="co2"># define COMPILER_ATTRIBUTE_VALUE_AS_STRING(s) #s</span>
<span class="co2"># define COMPILER_ATTRIBUTE_AS_NUMBER(x) COMPILER_ATTRIBUTE_VALUE_AS_STRING(x)</span>
<span class="co2"># define COMPILER_ATTRIBUTE_ENTRY(attr) \
{ #attr, COMPILER_ATTRIBUTE_AS_NUMBER(__has_cpp_attribute(attr)) },</span>
<span class="co2">#else</span>
<span class="co2"># define COMPILER_ATTRIBUTE_ENTRY(attr) { #attr, &quot;_&quot; },</span>
<span class="co2">#endif</span>
<span class="co1">// &#26356;&#25913;&#36825;&#20123;&#36873;&#39033;&#20197;&#20165;&#25171;&#21360;&#25152;&#38656;&#30340;&#20449;&#24687;&#12290;</span>
<span class="kw4">static</span> <span class="kw1">struct</span> PrintOptions <span class="br0">{</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> titles <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> attributes <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> general_features <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> core_features <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> lib_features <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> supported_features <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> unsupported_features <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> sorted_by_value <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> cxx11 <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> cxx14 <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> cxx17 <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> cxx20 <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">bool</span> cxx23 <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
<span class="br0">}</span> print<span class="sy4">;</span>
<span class="kw1">struct</span> CompilerFeature <span class="br0">{</span>
CompilerFeature<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> name <span class="sy1">=</span> nullptr, <span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> value <span class="sy1">=</span> nullptr<span class="br0">)</span>
<span class="sy4">:</span> name<span class="br0">(</span>name<span class="br0">)</span>, value<span class="br0">(</span>value<span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span>
<span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> name<span class="sy4">;</span> <span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> value<span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cplusplus<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_exceptions<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_rtti<span class="br0">)</span>
<span class="co2">#if 0</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__GNUC__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__GNUC_MINOR__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__GNUC_PATCHLEVEL__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__GNUG__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__clang__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__clang_major__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__clang_minor__<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__clang_patchlevel__<span class="br0">)</span>
<span class="co2">#endif</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx11<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_alias_templates<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_attributes<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_decltype<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_delegating_constructors<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_inheriting_constructors<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_initializer_lists<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lambdas<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_nsdmi<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_range_based_for<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_raw_strings<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_ref_qualifiers<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_rvalue_references<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_static_assert<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_threadsafe_static_init<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_unicode_characters<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_unicode_literals<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_user_defined_literals<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_variadic_templates<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx14<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_aggregate_nsdmi<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_binary_literals<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_decltype_auto<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_generic_lambdas<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_init_captures<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_return_type_deduction<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_sized_deallocation<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_variable_templates<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx14lib<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_chrono_udls<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_complex_udls<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_exchange_function<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_generic_associative_lookup<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_integer_sequence<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_integral_constant_callable<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_final<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_null_pointer<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_make_reverse_iterator<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_make_unique<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_null_iterators<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_quoted_string_io<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_result_of_sfinae<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_robust_nonmodifying_seq_ops<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shared_timed_mutex<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_string_udls<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_transformation_trait_aliases<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_transparent_operators<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_tuple_element_t<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_tuples_by_type<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx17<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_aggregate_bases<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_aligned_new<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_capture_star_this<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_deduction_guides<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_enumerator_attributes<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_fold_expressions<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_guaranteed_copy_elision<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_hex_float<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_if_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_inheriting_constructors<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_inline_variables<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_namespace_attributes<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_noexcept_function_type<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_nontype_template_args<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_nontype_template_parameter_auto<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_range_based_for<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_static_assert<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_structured_bindings<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_template_template_args<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_variadic_using<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx17lib<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_addressof_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_allocator_traits_is_always_equal<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_any<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_apply<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_array_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_as_const<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_is_always_lock_free<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_bool_constant<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_boyer_moore_searcher<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_byte<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_chrono<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_clamp<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_enable_shared_from_this<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_execution<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_filesystem<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_gcd_lcm<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_hardware_interference_size<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_has_unique_object_representations<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_hypot<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_incomplete_container_elements<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_invoke<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_aggregate<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_invocable<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_swappable<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_launder<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_logical_traits<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_make_from_tuple<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_map_try_emplace<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_math_special_functions<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_memory_resource<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_node_extract<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_nonmember_container_access<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_not_fn<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_optional<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_parallel_algorithm<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_raw_memory_algorithms<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_sample<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_scoped_lock<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shared_mutex<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shared_ptr_arrays<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shared_ptr_weak_type<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_string_view<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_to_chars<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_transparent_operators<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_type_trait_variable_templates<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_uncaught_exceptions<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_unordered_map_try_emplace<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_variant<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_void_t<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx20<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_aggregate_paren_init<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_char8_t<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_concepts<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_conditional_explicit<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_consteval<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr_dynamic_alloc<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constexpr_in_decltype<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_constinit<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_deduction_guides<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_designated_initializers<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_generic_lambdas<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_impl_coroutine<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_impl_destroying_delete<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_impl_three_way_comparison<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_init_captures<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_modules<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_nontype_template_args<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_using_enum<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx20lib<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_array_constexpr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_assume_aligned<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_flag_test<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_float<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_lock_free_type_aliases<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_ref<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_shared_ptr<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_value_initialization<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_atomic_wait<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_barrier<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_bind_front<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_bit_cast<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_bitops<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_bounded_array_traits<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_char8_t<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_chrono<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_concepts<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_algorithms<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_complex<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_dynamic_alloc<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_functional<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_iterator<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_memory<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_numeric<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_string<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_string_view<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_tuple<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_utility<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_vector<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_coroutine<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_destroying_delete<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_endian<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_erase_if<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_execution<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_format<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_generic_unordered_lookup<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_int_pow2<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_integer_comparison_functions<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_interpolate<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_constant_evaluated<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_layout_compatible<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_nothrow_convertible<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_pointer_interconvertible<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_jthread<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_latch<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_list_remove_return_type<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_math_constants<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_polymorphic_allocator<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_ranges<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_remove_cvref<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_semaphore<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shared_ptr_arrays<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_shift<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_smart_ptr_for_overwrite<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_source_location<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_span<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_ssize<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_starts_ends_with<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_string_view<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_syncbuf<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_three_way_comparison<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_to_address<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_to_array<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_type_identity<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_unwrap_ref<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx23<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
<span class="co1">//&lt; &#32487;&#32493;&#22635;&#20805;</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_if_consteval<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_size_t_suffix<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature cxx23lib<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
<span class="co1">//&lt; &#32487;&#32493;&#22635;&#20805;</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_constexpr_typeinfo<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_invoke_r<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_is_scoped_enum<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_stacktrace<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_stdatomic_h<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_string_contains<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_to_underlying<span class="br0">)</span>
COMPILER_FEATURE_ENTRY<span class="br0">(</span>__cpp_lib_variant<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">static</span> CompilerFeature attributes<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>carries_dependency<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>deprecated<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>fallthrough<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>likely<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>maybe_unused<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>nodiscard<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>noreturn<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>no_unique_address<span class="br0">)</span>
COMPILER_ATTRIBUTE_ENTRY<span class="br0">(</span>unlikely<span class="br0">)</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw4">constexpr</span> <span class="kw4">bool</span> is_feature_supported<span class="br0">(</span><span class="kw4">const</span> CompilerFeature<span class="sy3">&amp;</span> x<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> x.<span class="me1">value</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">&#39;_&#39;</span> <span class="sy3">&amp;&amp;</span> x.<span class="me1">value</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="st0">&#39;0&#39;</span> <span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">inline</span> <span class="kw4">void</span> print_compiler_feature<span class="br0">(</span><span class="kw4">const</span> CompilerFeature<span class="sy3">&amp;</span> x<span class="br0">)</span> <span class="br0">{</span>
<span class="kw4">constexpr</span> <span class="kw4">static</span> <span class="kw4">int</span> max_name_length <span class="sy1">=</span> <span class="nu0">44</span><span class="sy4">;</span> <span class="co1">//&lt; Update if necessary</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> value<span class="br0">{</span> is_feature_supported<span class="br0">(</span>x<span class="br0">)</span> <span class="sy4">?</span> x.<span class="me1">value</span> <span class="sy4">:</span> <span class="st0">&quot;------&quot;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>value.<span class="me1">back</span><span class="br0">(</span><span class="br0">)</span> <span class="sy1">==</span> <span class="st0">&#39;L&#39;</span><span class="br0">)</span> value.<span class="me1">pop_back</span><span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">//~ 201603L -&gt; 201603</span>
<span class="co1">// value.insert(4, 1, &#39;-&#39;); //~ 201603 -&gt; 2016-03</span>
<span class="kw1">if</span> <span class="br0">(</span> <span class="br0">(</span>print.<span class="me1">supported_features</span> <span class="sy3">&amp;&amp;</span> is_feature_supported<span class="br0">(</span>x<span class="br0">)</span><span class="br0">)</span>
or <span class="br0">(</span>print.<span class="me1">unsupported_features</span> <span class="sy3">&amp;&amp;</span> <span class="sy3">!</span>is_feature_supported<span class="br0">(</span>x<span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-left.html"><span class="kw1779">std::<span class="me2">left</span></span></a> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-setw.html"><span class="kw1797">std::<span class="me2">setw</span></span></a><span class="br0">(</span>max_name_length<span class="br0">)</span>
<span class="sy1">&lt;&lt;</span> x.<span class="me1">name</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot; &quot;</span> <span class="sy1">&lt;&lt;</span> value <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw1">template</span><span class="sy1">&lt;</span><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> N<span class="sy1">&gt;</span>
<span class="kw1">inline</span> <span class="kw4">void</span> show<span class="br0">(</span><span class="kw4">char</span> <span class="kw4">const</span><span class="sy2">*</span> title, CompilerFeature <span class="br0">(</span><span class="sy3">&amp;</span>features<span class="br0">)</span><span class="br0">[</span>N<span class="br0">]</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">titles</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-left.html"><span class="kw1779">std::<span class="me2">left</span></span></a> <span class="sy1">&lt;&lt;</span> title <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">sorted_by_value</span><span class="br0">)</span> <span class="br0">{</span>
<a href="cpp-algorithm-sort.html"><span class="kw1618">std::<span class="me2">sort</span></span></a><span class="br0">(</span><a href="cpp-iterator-begin.html"><span class="kw676">std::<span class="me2">begin</span></span></a><span class="br0">(</span>features<span class="br0">)</span>, <a href="cpp-iterator-end.html"><span class="kw680">std::<span class="me2">end</span></span></a><span class="br0">(</span>features<span class="br0">)</span>,
<span class="br0">[</span><span class="br0">]</span><span class="br0">(</span>CompilerFeature <span class="kw4">const</span><span class="sy3">&amp;</span> lhs, CompilerFeature <span class="kw4">const</span><span class="sy3">&amp;</span> rhs<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> <a href="cpp-string-byte-strcmp.html"><span class="kw1146">std::<span class="me2">strcmp</span></span></a><span class="br0">(</span>lhs.<span class="me1">value</span>, rhs.<span class="me1">value</span><span class="br0">)</span> <span class="sy1">&lt;</span> <span class="nu0">0</span><span class="sy4">;</span>
<span class="br0">}</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">const</span> CompilerFeature<span class="sy3">&amp;</span> x <span class="sy4">:</span> features<span class="br0">)</span> <span class="br0">{</span>
print_compiler_feature<span class="br0">(</span>x<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">general_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++ GENERAL&quot;</span>, cxx<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx11</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">core_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++11 CORE&quot;</span>, cxx11<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx14</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">core_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++14 CORE&quot;</span>, cxx14<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx14</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">lib_features</span> <span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++14 LIB&quot;</span> , cxx14lib<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx17</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">core_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++17 CORE&quot;</span>, cxx17<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx17</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">lib_features</span> <span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++17 LIB&quot;</span> , cxx17lib<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx20</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">core_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++20 CORE&quot;</span>, cxx20<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx20</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">lib_features</span> <span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++20 LIB&quot;</span> , cxx20lib<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx23</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">core_features</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++23 CORE&quot;</span>, cxx23<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">cxx23</span> <span class="sy3">&amp;&amp;</span> print.<span class="me1">lib_features</span> <span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;C++23 LIB&quot;</span> , cxx23lib<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>print.<span class="me1">attributes</span><span class="br0">)</span> show<span class="br0">(</span><span class="st0">&quot;ATTRIBUTES&quot;</span>, attributes<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">C++ GENERAL
__cplusplus 202002
__cpp_exceptions 199711
__cpp_rtti 199711
C++11 CORE
__cpp_alias_templates 200704
__cpp_attributes 200809
__cpp_constexpr 201907
__cpp_decltype 200707
__cpp_delegating_constructors 200604
__cpp_inheriting_constructors 201511
__cpp_initializer_lists 200806
__cpp_lambdas 200907
__cpp_nsdmi 200809
__cpp_range_based_for 201603
__cpp_raw_strings 200710
__cpp_ref_qualifiers 200710
__cpp_rvalue_references 200610
__cpp_static_assert 201411
__cpp_threadsafe_static_init 200806
__cpp_unicode_characters 200704
__cpp_unicode_literals 200710
__cpp_user_defined_literals 200809
__cpp_variadic_templates 200704
C++14 CORE
__cpp_aggregate_nsdmi 201304
__cpp_binary_literals 201304
__cpp_constexpr 201907
__cpp_decltype_auto 201304
__cpp_generic_lambdas 201707
__cpp_init_captures 201803
__cpp_return_type_deduction 201304
__cpp_sized_deallocation ------
__cpp_variable_templates 201304
... truncated ...</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li><a href="cpp-utility-feature_test.html">&#24211;&#21151;&#33021;&#29305;&#24615;&#27979;&#35797;&#23439;</a> <span class="t-mark-rev t-since-cxx20">(C++20)</span> &#23450;&#20041;&#20110; <a href="cpp-header-version.html"><tt>&lt;version&gt;</tt></a></li>
<li><a rel="nofollow" class="external text" href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">&#29305;&#24615;&#27979;&#35797;&#25512;&#33616;&#30340;&#23448;&#26041;&#25991;&#26723;</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/makelinux/examples/blob/master/cpp/features.cpp">&#35797;&#20986;&#32534;&#35793;&#22120;&#29305;&#24615;&#30340;&#28304;&#30721;</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>