gcc/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
Jonathan Wakely ac358eef7a libstdc++: Update status tables in manual
libstdc++-v3/ChangeLog:

	* doc/xml/manual/status_cxx2017.xml: Update C++17 status.
	* doc/xml/manual/status_cxx2020.xml: Use 12.1 instead of 12 for
	upcoming release.
	* doc/html/manual/status.html: Regenerate.
2022-01-18 09:51:02 +00:00

1454 lines
53 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<section xmlns="http://docbook.org/ns/docbook" version="5.0"
xml:id="status.iso.2020" xreflabel="Status C++ 2020">
<?dbhtml filename="status_iso_cxx2020.html"?>
<info><title>C++ 2020</title>
<keywordset>
<keyword>ISO C++</keyword>
<keyword>2020</keyword>
</keywordset>
</info>
<para>
In this implementation the <literal>-std=gnu++20</literal> or
<literal>-std=c++20</literal> flag must be used to enable language
and library
features. See <link linkend="manual.intro.using.flags">dialect</link>
options. The pre-defined symbol
<constant>__cplusplus</constant> is used to check for the
presence of the required flag.
</para>
<para>
This section describes the C++20 and library TS support in mainline GCC,
not in any particular release.
</para>
<para>
The following table lists new library features that have been accepted into
the C++20 working draft. The "Proposal" column provides a link to the
ISO C++ committee proposal that describes the feature, while the "Status"
column indicates the first version of GCC that contains an implementation of
this feature (if it has been implemented).
A dash (&#x2014;) in the status column indicates that the changes in the proposal
either do not affect the code in libstdc++, or the changes are not required for conformance.
The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
Feature-testing recommendations for C++</link> (where applicable)
or any notes about the implementation.
</para>
<table frame="all" xml:id="table.cxx20_features">
<title>C++ 2020 Library Features</title>
<tgroup cols="4" align="left" colsep="0" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<colspec colname="c4"/>
<thead>
<row>
<entry>Library Feature</entry>
<entry>Proposal</entry>
<entry>Status</entry>
<entry>SD-6 Feature Test / Notes</entry>
</row>
</thead>
<tbody>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Compile-time programming</emphasis>
</entry>
</row>
<row>
<entry> Add constexpr modifiers to functions in <code>&lt;algorithm&gt;</code> and <code>&lt;utility&gt;</code> Headers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html">
P0202R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_constexpr_algorithms &gt;= 201703L</code> </entry>
</row>
<row>
<entry> Constexpr for <code>swap</code> and swap related functions </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html">
P0879R0 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_constexpr_algorithms &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Constexpr for <code>std::complex</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html">
P0415R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_constexpr_complex &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> P0595R2 <code>std::is_constant_evaluated()</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html">
P0595R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_is_constant_evaluated &gt;= 201811L</code> </entry>
</row>
<row>
<entry> More constexpr containers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html">
P0784R7 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_constexpr_dynamic_alloc &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Making <code>std::string</code> constexpr </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf">
P0980R1 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry> <code>__cpp_lib_constexpr_string &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Making <code>std::vector</code> constexpr </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1004r2.pdf">
P1004R2 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry> <code>__cpp_lib_constexpr_vector &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Constexpr in <code>std::pointer_traits</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf">
P1006R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_constexpr_memory &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> constexpr for <code>&lt;numeric&gt;</code> algorithms </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1645r1.html">
P1645R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_constexpr_numeric &gt;= 201911L</code> </entry>
</row>
<row>
<entry> Constexpr iterator requirements </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html">
P0858R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_array_constexpr &gt;= 201803L</code> </entry></row>
<row><entry> <code>__cpp_lib_string_view &gt;= 201803L</code> </entry></row>
<row><entry> (both since 9.4, see Note 1) </entry></row>
</tbody></tgroup></informaltable>
</entry>
</row>
<row>
<entry> <code>constexpr</code> comparison operators for <code>std::array</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf">
P1023R0 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_array_constexpr &gt;= 201806</code> </entry>
</row>
<row>
<entry> Misc constexpr bits </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html">
P1032R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_array_constexpr &gt;= 201811L</code> </entry></row>
<row><entry> <code>__cpp_lib_constexpr_functional &gt;= 201811L</code> </entry></row>
<row><entry> <code>__cpp_lib_constexpr_iterator &gt;= 201811L</code> </entry></row>
<row><entry> <code>__cpp_lib_constexpr_string_view &gt;= 201811L</code> </entry></row>
<row><entry> <code>__cpp_lib_constexpr_tuple &gt;= 201811L</code> </entry></row>
<row><entry> <code>__cpp_lib_constexpr_utility &gt;= 201811L</code> </entry></row>
</tbody></tgroup></informaltable>
</entry>
</row>
<row>
<entry> <code>constexpr <emphasis>INVOKE</emphasis></code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html">
P1065R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_constexpr_functional &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Transformation Trait <code>remove_cvref</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf">
P0550R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_remove_cvref &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> Implicit conversion traits and utility functions </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html">
P0758R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_is_nothrow_convertible &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> The <code>identity</code> metafunction </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf">
P0887R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_type_identity &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> <code>unwrap_ref_decay</code> and <code>unwrap_reference</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf">
P0318R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_unwrap_ref &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<?dbhtml bgcolor="#B0B0B0" ?>
<entry> Improving Completeness Requirements for Type Traits </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf">
P1285R0 </link>
</entry>
<entry align="center"> Partial </entry>
<entry />
</row>
<row>
<entry> Missing feature test macros </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html">
P1353R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> Making std::underlying_type SFINAE-friendly </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html">
P0340R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> Traits for [Un]bounded Arrays </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf">
P1357R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_bounded_array_traits &gt;= 201902L</code> </entry>
</row>
<row>
<entry> Layout-compatibility and pointer-interconvertibility traits </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0466r5.pdf">
P0466R5 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_is_layout_compatible &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_is_pointer_interconvertible &gt;= 201907L</code> </entry></row>
</tbody></tgroup></informaltable>
</entry>
</row>
<row>
<entry> Integrating feature-test macros into the C++ WD </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html">
P0941R2 </link>
</entry>
<entry align="center"> 5.1 </entry>
<entry />
</row>
<row>
<entry> <code>&lt;version&gt;</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf">
P0754R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__has_include(&lt;version&gt;)</code> </entry>
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Synchronization</emphasis>
</entry>
</row>
<row>
<entry> Atomic Ref </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html">
P0019R8 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_atomic_ref &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Floating Point Atomic </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html">
P0020R6 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_atomic_float &gt;= 201711L</code> </entry>
</row>
<row>
<entry> C++ Synchronized Buffered Ostream </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf">
P0053R7 </link>
</entry>
<entry align="center"> 11 </entry>
<entry> <code>__cpp_lib_syncbuf &gt;= 201711L</code> </entry>
</row>
<row>
<entry> Manipulators for C++ Synchronized Buffered Ostream </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0753r2.pdf">
P0753R2 </link>
</entry>
<entry align="center"> 11 </entry>
<entry> <code>__cpp_lib_syncbuf &gt;= 201803L</code> </entry>
</row>
<row>
<entry> Make <code>std::memory_order</code> a scoped enumeration </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0439r0.html">
P0439R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html">
P0528R3 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> Atomic <code>shared_ptr</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html">
P0718R2 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry> <code> __cpp_lib_atomic_shared_ptr &gt;= 201711L</code> </entry>
</row>
<row>
<entry> std::stop_token and std::jthread </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf">
P0660R10 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_jthread &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Rename <code>condition_variable_any</code> interruptible wait methods </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html">
P1869R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_jthread &gt;= 201911L</code> </entry>
</row>
<row>
<entry> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html">
P1135R6 </link>
</entry>
<entry align="center"> 11.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_atomic_lock_free_type_aliases &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_atomic_flag_test &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_atomic_wait &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_semaphore &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_latch &gt;= 201907L</code> </entry></row>
<row><entry> <code>__cpp_lib_barrier &gt;= 201907L</code> </entry></row>
</tbody></tgroup></informaltable>
</entry>
</row>
<row>
<entry> Fixing Atomic Initialization </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf">
P0883R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_atomic_value_initialization &gt;= 201911L</code> </entry>
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Ranges and Concepts</emphasis>
</entry>
</row>
<row>
<entry> Standard Library Concepts </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf">
P0898R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_concepts &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Rename concepts to standard_case for C++20, while we still can </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf">
P1754R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_concepts &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Wording for <emphasis><code>boolean-testable</code></emphasis> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html">
P1964R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_concepts &gt;= 202002L</code> </entry>
</row>
<row>
<entry> The One Ranges Proposal </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf">
P0896R4 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_ranges &gt;= 201811L</code> </entry>
</row>
<row>
<entry> Input Range Adaptors </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf">
P1035R7 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_ranges &gt;= 201907L</code> </entry>
</row>
<row>
<entry> <code>ranges</code> compare algorithm are over-constrained </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html">
P1716R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_ranges &gt;= 201911L</code> </entry>
</row>
<row>
<entry> Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html">
P1248R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry> Ranges Design Cleanup </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf">
P1252R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Avoid template bloat for <code>safe_ranges</code> in combination with subrange-y view adaptors.</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html">
P1739R4 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Time, dates, calendars, time zones</emphasis>
</entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Extending chrono to Calendars and Time Zones </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html">
P0355R7 </link>
</entry>
<entry/>
<entry> <code>__cpp_lib_chrono &gt;= 201803L</code> </entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Miscellaneous minor fixes for chrono </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html">
P1466R3 </link>
</entry>
<entry/>
<entry> <code>__cpp_lib_chrono &gt;= 201907L</code> </entry>
</row>
<row>
<entry> <code>&lt;chrono&gt;</code> <code>zero()</code>, <code>min()</code>, and <code>max()</code> should be <code>noexcept</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf">
P0972R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Three-way comparison</emphasis>
</entry>
</row>
<row>
<entry> Library Support for the Spaceship (Comparison) Operator </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf">
P0768R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_three_way_comparison &gt;= 201711L</code> </entry>
</row>
<row>
<entry> Symmetry for spaceship </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html">
P0905R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry> Adding &lt;=&gt; to the standard library </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html">
P1614R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry>
<code>__cpp_lib_three_way_comparison &gt;= 201907L</code>
</entry>
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Strings and text</emphasis>
</entry>
</row>
<row>
<entry> <code>string::reserve</code> Should Not Shrink </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html">
P0966R1 </link>
</entry>
<entry align="center"> 11 </entry>
<entry />
</row>
<row>
<entry> <code>char8_t</code>: A type for UTF-8 characters and strings </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html">
P0482R6 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_char8_t &gt;= 201811L</code> </entry>
</row>
<row>
<entry> <code>char8_t</code> backward compatibility remediation </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html">
P1423R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_char8_t &gt;= 201907L</code> </entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Text formatting </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html">
P0645R10 </link>
</entry>
<entry align="center"> </entry>
<entry>
<code>__cpp_lib_format &gt;= 201907L</code>
</entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Integration of chrono with text formatting </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf">
P1361R2 </link>
</entry>
<entry align="center"> </entry>
<entry>
<code>__cpp_lib_format &gt;= 201907L</code>
</entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Printf corner cases in <code>std::format</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html">
P1652R1 </link>
</entry>
<entry align="center"> </entry>
<entry>
<code>__cpp_lib_format &gt;= 201907L</code>
</entry>
</row>
<row>
<entry> String Prefix and Suffix Checking </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html">
P0457R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_starts_ends_with &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Update The Reference To The Unicode Standard </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html">
P1025R1 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Containers</emphasis>
</entry>
</row>
<row>
<entry> span: bounds-safe views for sequences of objects </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf">
P0122R7 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_span &gt;= 201803L</code> </entry>
</row>
<row>
<entry>
Usability Enhancements for <classname>std::span</classname>
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf">
P1024R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_span &gt;= 201902L</code> </entry>
</row>
<row>
<entry> Should Span be Regular? </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md">
P1085R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry/>
</row>
<row>
<entry> Fixed-size <code>&lt;span&gt;</code> construction from dynamic range </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html">
P1976R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_span &gt;= 202002L</code> </entry>
</row>
<row>
<entry> <code>std::to_array</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html">
P0325R4 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_to_array &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Checking for Existence of an Element in Associative Containers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html">
P0458R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Comparing Unordered Containers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf">
P0809R0 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> Heterogeneous lookup for unordered containers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html">
P0919R3 </link>
</entry>
<entry align="center"> 11.1 </entry>
<entry> <code>__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </entry>
</row>
<row>
<entry> Refinement Proposal for P0919 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html">
P1690R1 </link>
</entry>
<entry align="center"> 11.1 </entry>
<entry/>
</row>
<row>
<entry> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html">
P1209R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_erase_if &gt;= 201811L</code> </entry>
</row>
<row>
<entry> Improving the Return Value of Erase-Like Algorithms </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf">
P0646R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_list_remove_return_type &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Improving the Return Value of Erase-Like Algorithms II: Free <code>erase</code>/<code>erase_if</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf">
P1115R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_erase_if &gt;= 202002L</code> </entry></row>
<row><entry> (defined to <code>201900L</code> for GCC 9.1 and 9.2 so use <code>&gt; 201811L</code>) </entry></row>
</tbody></tgroup></informaltable>
</entry>
</row>
<row>
<entry> Signed ssize() functions, unsigned size() functions </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html">
P1227R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_ssize &gt;= 201902L</code> </entry>
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Memory management</emphasis>
</entry>
</row>
<row>
<entry> Utility to convert a pointer to a raw pointer </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html">
P0653R2 </link>
</entry>
<entry align="center"> 8.1 </entry>
<entry> <code>__cpp_lib_to_address &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> Extending <code>make_shared</code> to Support Arrays </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html">
P0674R1 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry> <code>__cpp_lib_shared_ptr_arrays &gt;= 201707L</code> </entry>
</row>
<row>
<entry> Efficient sized delete for variable sized classes </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html">
P0722R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_destroying_delete &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Utility functions to implement uses-allocator construction </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf">
P0591R4 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry>
<code>std::scoped_allocator_adaptor</code> changes missing in 9.1.0
</entry>
</row>
<row>
<entry> <code>std::assume_aligned</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf">
P1007R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_assume_aligned &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> Smart pointer creation with default initialization </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html">
P1020R1 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry> <code>__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </entry>
</row>
<row>
<entry> Make stateful allocator propagation more consistent for <code>operator+(basic_string)</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html">
P1165R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry>
<classname>polymorphic_allocator&lt;&gt;</classname> as a vocabulary type
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf">
P0339R6 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry>
<code>__cpp_lib_polymorphic_allocator &gt;= 201902L</code> (since 9.4, see Note 1)
</entry>
</row>
<row>
<entry> LWG 2511: guaranteed copy elision for piecewise construction </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0475r1.html">
P0475R1 </link>
</entry>
<entry align="center"> 7.1 </entry>
<entry />
</row>
<row>
<entry namest="c1" nameend="c4" align="left">
<emphasis role="bold">Miscellaneous</emphasis>
</entry>
</row>
<row>
<entry> <code>nodiscard</code> in the Library </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf">
P0600R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> de-pessimize legacy algorithms with <code>std::move</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf">
P0616R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> Deprecate POD </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html">
P0767R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry> Treating Unnecessary <code>decay</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf">
P0777R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Thou Shalt Not Specialize std Function Templates! </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf">
P0551R3 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> Bit-casting object representations </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html">
P0476R2 </link>
</entry>
<entry align="center"> 11 </entry>
<entry> <code>__cpp_lib_bit_cast &gt;= 201806L</code> </entry>
</row>
<row>
<entry> Integral power-of-2 operations </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html">
P0556R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_int_pow2 &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> On the names of low-level bit manipulation functions </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf">
P1956R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_int_pow2 &gt;= 202002L</code> </entry>
</row>
<row>
<entry> Safe integral comparisons </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html">
P0586R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_integer_comparison_functions &gt;= 202002L</code> </entry>
</row>
<row>
<entry> Reviewing Deprecated Facilities of C++17 for C++20 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html">
P0619R4 </link>
</entry>
<entry align="center"> 12.1 </entry>
<entry />
</row>
<row>
<entry> <code>fpos</code> Requirements </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html">
P0759R1 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry />
</row>
<row>
<entry> Add <code>shift</code> to <code>&lt;algorithm&gt;</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf">
P0769R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_shift &gt;= 201806L</code> </entry>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Standard Library Specification in a Concepts and Contracts World </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf">
P0788R3 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> <code>explicit(bool)</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html">
P0892R2 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry />
</row>
<row>
<entry> Eradicating unnecessarily explicit default constructors from the standard library </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html">
P0935R0 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> <code>std::function</code> move constructor should be <code>noexcept</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf">
P0771R1 </link>
</entry>
<entry align="center"> 7.2 </entry>
<entry />
</row>
<row>
<entry> Simplified partial function application </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html">
P0356R5 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_bind_front &gt;= 201811L</code> </entry>
</row>
<row>
<entry> <code>bind_front</code> should not unwrap <code>reference_wrapper</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html">
P1651R0 </link>
</entry>
<entry align="center"> 9.3 </entry>
<entry> <code>__cpp_lib_bind_front &gt;= 201907L</code> </entry>
</row>
<row>
<entry> <code>reference_wrapper</code> for incomplete types </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html">
P0357R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> Fixing <code>operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html">
P0487R1 </link>
</entry>
<entry align="center"> 11.1 </entry>
<entry />
</row>
<row>
<entry> <code>variant</code> and <code>optional</code> should propagate copy/move triviality </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html">
P0602R4 </link>
</entry>
<entry align="center"> 8.3 </entry>
<entry />
</row>
<row>
<entry> A sane <code>variant</code> converting constructor </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html">
P0608R3 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry> <code>visit&lt;R&gt;</code>: Explicit Return Type for <code>visit</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf">
P0655R1 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry />
</row>
<row>
<entry> P0899R1 - LWG 3016 is not a defect </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html">
P0899R1 </link>
</entry>
<entry align="center"> 7.1 </entry>
<entry />
</row>
<row>
<entry> Editorial Guidance for merging P0019r8 and P0528r3 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html">
P1123R0 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Cleaning up Clause 20 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf">
P1148R0 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Completing the Rebase of Library Fundamentals, Version 3, Working Draft </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html">
P1210R0 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> Alternative Wording for P0907R4 Signed Integers are Two's Complement </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html">
P1236R1 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry/>
</row>
<row>
<entry>
I Stream, You Stream, We All Stream for
<classname>istream_iterator</classname>
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html">
P0738R2 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry />
</row>
<row>
<entry>
Mandating the Standard Library:
Clause 16 - Language support library
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
P1458R1 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry/>
</row>
<row>
<entry>
Mandating the Standard Library:
Clause 18 - Diagnostics library
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
P1459R1 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry/>
</row>
<row>
<entry>
Mandating the Standard Library:
Clause 20 - Strings library
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html">
P1462R1 </link>
</entry>
<entry align="center"> &#x2014; </entry>
<entry/>
</row>
<row>
<entry>
Mandating the Standard Library:
Clause 21 - Containers library
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf">
P1463R1 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry/>
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry>
Mandating the Standard Library:
Clause 22 - Iterators library
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf">
P1464R1 </link>
</entry>
<entry align="center"> </entry>
<entry />
</row>
<row>
<entry> Make <code>create_directory()</code> Intuitive </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf">
P1164R1
</link>
</entry>
<entry align="center"> 8.3 </entry>
<entry> Treated as a DR for C++17 </entry>
</row>
<row>
<entry>
Target Vectorization Policies from Parallelism V2 TS to C++20
</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html">
P1001R2 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_execution &gt;= 201902L</code> (since 9.4, see Note 1)</entry>
</row>
<row>
<entry> Merge Coroutines TS into C++20 working draft </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html">
P0912R5 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_coroutines &gt;= 201902L</code> </entry>
</row>
<row>
<entry> Endian just Endian </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html">
P0463R1 </link>
</entry>
<entry align="center"> 8.1 </entry>
<entry> <code>__cpp_lib_endian &gt;= 201907L</code> </entry>
</row>
<row>
<entry> Bit operations </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html">
P0553R4 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </entry>
</row>
<row>
<entry> Well-behaved interpolation for numbers and pointers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html">
P0811R3 </link>
</entry>
<entry align="center"> 9.1 </entry>
<entry> <code>__cpp_lib_interpolate &gt;= 201902L</code> </entry>
</row>
<row>
<entry> Mathematical constants </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf">
P0631R8 </link>
</entry>
<entry align="center"> 10.1 </entry>
<entry> <code>__cpp_lib_math_constants &gt;= 201907L</code> </entry>
</row>
<row>
<entry> std::source_location </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf">
P1208R6 </link>
</entry>
<entry align="center"> 11 </entry>
<entry>
<code>__cpp_lib_source_location &gt;= 201907L</code>
</entry>
</row>
<row>
<entry> Efficient access to std::basic_stringbuf's Buffer </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf">
P0408R7 </link>
</entry>
<entry align="center"> 11 </entry>
<entry />
</row>
</tbody>
</tgroup>
</table>
<para>
Note 1: This feature is supported in older releases but the
<code>__cpp_lib</code> macro is not defined to the right value
(or not defined at all) until the version shown in parentheses.
</para>
</section>