Document C++20 library status

* doc/xml/manual/intro.xml: Include new section.
	* doc/xml/manual/status_cxx2017.xml: Document more
	implementation-defined properties of the library.
	* doc/xml/manual/status_cxx2020.xml: Document C++2a status.
	* doc/html/*: Regenerate.

From-SVN: r267867
This commit is contained in:
Jonathan Wakely 2019-01-11 23:41:15 +00:00 committed by Jonathan Wakely
parent aaeac1568d
commit 66dc59e24f
8 changed files with 1411 additions and 26 deletions

View File

@ -1,5 +1,11 @@
2019-01-11 Jonathan Wakely <jwakely@redhat.com>
* doc/xml/manual/intro.xml: Include new section.
* doc/xml/manual/status_cxx2017.xml: Document more
implementation-defined properties of the library.
* doc/xml/manual/status_cxx2020.xml: Document C++2a status.
* doc/html/*: Regenerate.
* include/bits/refwrap.h [__cplusplus > 201703L]
(_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
(_Reference_wrapper_base_memfun): Do not define for C++2a.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="intro.html" title="Part I.  Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. 
Introduction
</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
</th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 202a</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
This status table is based on the table of contents of ISO/IEC 14882:2003.
</p><p>
This page describes the C++ support in mainline GCC SVN, not in any
@ -890,25 +890,36 @@ and test for <code class="code">__STDCPP_MATH_SPEC_FUNCS__ &gt;= 201003L</code>.
Specific Behavior</a> and <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
2011 Implementation Specific Behavior</a>. This section only
documents behaviour which is new in the 2017 standard.
</p><p>
<span class="emphasis"><em>20.5.1.2 [headers]</em></span>
Whether names from Annex K are declared by C++ headers depends on
whether the underlying C library supports Annex K and declares the
names. For the GNU C library, there is no Annex K support and so
none of its names are declared by C++ headers.
</p><p>
<span class="emphasis"><em>23.6.5 [optional.bad_optional_access]</em></span>
<code class="code">what()</code> returns <code class="literal">"bad optional access"</code>.
</p><p>
<span class="emphasis"><em>23.7.3 [variant.variant]</em></span>
Whether <code class="classname">variant</code> supports over-aligned types
should be documented here.
<code class="classname">variant</code> supports over-aligned types.
</p><p>
<span class="emphasis"><em>23.7.10 [variant.bad.access]</em></span>
<code class="code">what()</code> returns <code class="literal">"Unexpected index"</code>.
</p><p>
<span class="emphasis"><em>23.12.5.2 [memory.resource.pool.options]</em></span>
The limits for maximum number of blocks and largest allocation size
supported by <code class="classname">pool_options</code> should be documented
here.
Let S equal <code class="code">numeric_limits&lt;size_t&gt;::digits</code>.
The limit for maximum number of blocks in a chunk is given by
<span class="mathphrase">2<sup>N</sup>-1</span>,
where N is <span class="mathphrase">min(19, 3 + S/2)</span>.
The largest allocation size that will be allocated from a pool is
<span class="mathphrase">2<sup>22</sup></span>
when <span class="mathphrase">S &gt; 20</span>,
otherwise 3072 when <span class="mathphrase">S &gt; 16</span>,
otherwise 768.
</p><p>
<span class="emphasis"><em>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</em></span>
The default <code class="code">next_buffer_size</code> and growth factor should
be documented here.
The default <code class="code">next_buffer_size</code> is <code class="code">128 * sizeof(void*)</code>.
The default growth factor is <code class="code">1.5</code>.
</p><p>
<span class="emphasis"><em>23.15.4.3 [meta.unary.prop]</em></span>
The predicate condition for
@ -950,11 +961,363 @@ and test for <code class="code">__STDCPP_MATH_SPEC_FUNCS__ &gt;= 201003L</code>.
on some targets.
</p><p>
<span class="emphasis"><em>30.10.5 [fs.filesystem.syn]</em></span>
The clock used for file times is
<code class="classname">std::chrono::system_clock</code>.
The clock used for file times is an unspecified type
with a signed 64-bit representation, capable of representing
timestamps with nanosecond resolution. The clock's epoch is
unspecified, but is not the same as the system clock's epoch.
</p><p>
<span class="emphasis"><em>30.10.7.1 [fs.path.generic]</em></span>
dot-dot in the root-directory refers to the root-directory itself.
On Windows, a drive specifier such as <code class="code">"C:"</code> or
<code class="code">"z:"</code> is treated as a root-name. On Cygwin, a path
that begins with two successive directory separators is a
root-name. Otherwise (for POSIX-like systems other than Cygwin),
the implementation-defined root-name is an unspecified string
which does not appear in any pathnames.
</p><p>
<span class="emphasis"><em>30.10.10.1 [fs.enum.path.format]</em></span>
The character sequence is always interpreted in the native pathname
format.
</p><p>
<span class="emphasis"><em>30.10.15.4 [fs.op.file_size]</em></span>
If <code class="code">!is_regular_file(p)</code>, an error is reported.
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2020"></a>C++ 202a</h3></div></div></div><p>
In this implementation the <code class="literal">-std=gnu++2a</code> or
<code class="literal">-std=c++2a</code> flag must be used to enable language
and library
features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
options. The pre-defined symbol
<code class="constant">__cplusplus</code> is used to check for the
presence of the required flag.
</p><p>
This section describes the C++20 and library TS support in mainline GCC SVN,
not in any particular release.
</p><p>
The following table lists new library features that have been accepted into
the C++2a 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).
The "SD-6 Feature Test" column shows the corresponding macro or header from
<a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
Feature-testing recommendations for C++</a>.
</p><div class="table"><a id="table.cxx20_status"></a><p class="title"><strong>Table 1.7. C++ 2020 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2020 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Library Feature</th><th align="left">Proposal</th><th align="left">Status</th><th align="left">SD-6 Feature Test</th></tr></thead><tbody><tr><td align="left"> Endian just Endian </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html" target="_top">
P0463R1
</a>
</td><td align="center"> 8.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Extending <code class="code">make_shared</code> to Support Arrays </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html" target="_top">
P0674R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Floating Point Atomic </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html" target="_top">
P0020R6
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> C++ Synchronized Buffered Ostream </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf" target="_top">
P0053R7
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add constexpr modifiers to functions in <code class="code">&lt;algorithm&gt;</code> and <code class="code">&lt;utility&gt;</code> Headers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html" target="_top">
P0202R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Constexpr for <code class="code">std::complex</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html" target="_top">
P0415R1
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Make <code class="code">std::memory_order</code> a scoped enumeration </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0439r0.html" target="_top">
P0439R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> String Prefix and Suffix Checking </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html" target="_top">
P0457R2
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> Transformation Trait <code class="code">remove_cvref</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf" target="_top">
P0550R2
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">nodiscard</code> in the Library </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf" target="_top">
P0600R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> de-pessimize legacy algorithms with <code class="code">std::move</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf" target="_top">
P0616R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Utility to convert a pointer to a raw pointer </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html" target="_top">
P0653R2
</a>
</td><td align="center"> 8.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic <code class="code">shared_ptr</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html" target="_top">
P0718R2
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate POD </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html" target="_top">
P0767R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Library Support for the Spaceship (Comparison) Operator </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf" target="_top">
P0768R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Treating Unnecessary <code class="code">decay</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf" target="_top">
P0777R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;span&gt;</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf" target="_top">
P0122R7
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Extending chrono to Calendars and Time Zones </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html" target="_top">
P0355R7
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Thou Shalt Not Specialize std Function Templates! </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf" target="_top">
P0551R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Manipulators for C++ Synchronized Buffered Ostream </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0753r2.pdf" target="_top">
P0753R2
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">&lt;version&gt;</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf" target="_top">
P0754R2
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Comparing Unordered Containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf" target="_top">
P0809R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Constexpr iterator requirements </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html" target="_top">
P0858R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Symmetry for spaceship </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html" target="_top">
P0905R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">string::reserve</code> Should Not Shrink </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html" target="_top">
P0966R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic Ref </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html" target="_top">
P0019R8
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Checking for Existence of an Element in Associative Containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html" target="_top">
P0458R2
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> LWG 2511: guaranteed copy elision for piecewise construction </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0475r1.html" target="_top">
P0475R1
</a>
</td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Bit-casting object representations </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html" target="_top">
P0476R2
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html" target="_top">
P0528R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Support for contract based programming in C++ </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html" target="_top">
P0542R5
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Integral power-of-2 operations </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html" target="_top">
P0556R3
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Reviewing Deprecated Facilities of C++17 for C++20 </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html" target="_top">
P0619R4
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Improving the Return Value of Erase-Like Algorithms </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf" target="_top">
P0646R1
</a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_list_remove_return_type &gt;= 201806L</code> </td></tr><tr><td align="left"> Efficient sized delete for variable sized classes </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html" target="_top">
P0722R3
</a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_destroying_delete &gt;= 201806L</code> </td></tr><tr><td align="left"> Implicit conversion traits and utility functions </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html" target="_top">
P0758R1
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">fpos</code> Requirements </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html" target="_top">
P0759R1
</a>
</td><td align="center"> Note 1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add <code class="code">shift</code> to <code class="code">&lt;algorithm&gt;</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf" target="_top">
P0769R2
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Standard Library Specification in a Concepts and Contracts World </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf" target="_top">
P0788R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Constexpr for <code class="code">swap</code> and swap related functions </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html" target="_top">
P0879R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> The <code class="code">identity</code> metafunction </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf" target="_top">
P0887R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">explicit(bool)</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html" target="_top">
P0892R2
</a>
</td><td align="center"> Note 1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Standard Library Concepts </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf" target="_top">
P0898R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Eradicating unnecessarily explicit default constructors from the standard library </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html" target="_top">
P0935R0
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> Integrating feature-test macros into the C++ WD </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html" target="_top">
P0941R2
</a>
</td><td align="center"> 5.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">constexpr</code> comparison operators for <code class="code">std::array</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf" target="_top">
P1023R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Update The Reference To The Unicode Standard </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html" target="_top">
P1025R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Consistency improvements for <code class="code">&lt;=&gt;</code> and other comparison operators </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1120r0.html" target="_top">
P1120R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">unwrap_ref_decay</code> and <code class="code">unwrap_reference</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf" target="_top">
P0318R1
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Simplified partial function application </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html" target="_top">
P0356R5
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">reference_wrapper</code> for incomplete types </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html" target="_top">
P0357R3
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">char8_t</code>: A type for UTF-8 characters and strings </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html" target="_top">
P0482R6
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Fixing <code class="code">operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html" target="_top">
P0487R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Utility functions to implement uses-allocator construction </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf" target="_top">
P0591R4
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> P0595R2 <code class="code">std::is_constant_evaluated()</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html" target="_top">
P0595R2
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">variant</code> and <code class="code">optional</code> should propagate copy/move triviality </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html" target="_top">
P0602R4
</a>
</td><td align="center"> 8.3 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> A sane <code class="code">variant</code> converting constructor </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html" target="_top">
P0608R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">visit&lt;R&gt;</code>: Explicit Return Type for <code class="code">visit</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf" target="_top">
P0655R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">std::function</code> move constructor should be <code class="code">noexcept</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf" target="_top">
P0771R1
</a>
</td><td align="center"> 7.2 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> The One Ranges Proposal </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf" target="_top">
P0896R4
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> P0899R1 - LWG 3016 is not a defect </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html" target="_top">
P0899R1
</a>
</td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous lookup for unordered containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html" target="_top">
P0919R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">&lt;chrono&gt;</code> <code class="code">zero()</code>, <code class="code">min()</code>, and <code class="code">max()</code> should be <code class="code">noexcept</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf" target="_top">
P0972R0
</a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Constexpr in <code class="code">std::pointer_traits</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf" target="_top">
P1006R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">std::assume_aligned</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf" target="_top">
P1007R3
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Smart pointer creation with default initialization </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html" target="_top">
P1020R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Misc constexpr bits </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html" target="_top">
P1032R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Should Span be Regular? </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md" target="_top">
P1085R2
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Editorial Guidance for merging P0019r8 and P0528r3 </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html" target="_top">
P1123R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Cleaning up Clause 20 </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf" target="_top">
P1148R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Make stateful allocator propagation more consistent for <code class="code">operator+(basic_string)</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html" target="_top">
P1165R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html" target="_top">
P1209R0
</a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_erase_if &gt;= 201811L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Completing the Rebase of Library Fundamentals, Version 3, Working Draft </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html" target="_top">
P1210R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Alternative Wording for P0907R4 Signed Integers are Two's Complement </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html" target="_top">
P1236R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html" target="_top">
P1248R1
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Improving Completeness Requirements for Type Traits </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf" target="_top">
P1285R0
</a>
</td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left"> Missing feature test macros </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html" target="_top">
P1353R0
</a>
</td><td align="center"> Partial </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
Note 1: The changes in the proposal either do not affect the code in libstdc++,
or the changes are not required for conformance.
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2020.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is also specified by previous standards,
see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
Specific Behavior</a>, <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
2011 Implementation Specific Behavior</a> and <a class="link" href="status.html#iso.2017.specific" title="Implementation Specific Behavior">C++ 2017 Implementation Specific
Behavior</a>.
This section only documents behaviour which is new in the 202a draft.
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
This table is based on the table of contents of ISO/IEC DTR 19768
Doc No: N1836=05-0096 Date: 2005-06-24
@ -966,7 +1329,7 @@ In this implementation the header names are prefixed by
</p><p>
This page describes the TR1 support in mainline GCC SVN, not in any particular
release.
</p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.7. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
</p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.8. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
<p>
Uses code from
<a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
@ -987,7 +1350,7 @@ decimal floating-point arithmetic
</p><p>
This page describes the TR 24733 support in mainline GCC SVN, not in any
particular release.
</p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.8. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
</p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.9. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
<span class="emphasis"><em>0</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Introduction</em></span>
@ -1027,7 +1390,7 @@ non-strict modes (i.e. <code class="code">-std=gnu++NN</code> modes) the
hypergeometric functions and confluent hypergeometric functions
from TR1 are also provided, defined in namespace
<code class="code">__gnu_cxx</code>.
</p><div class="table"><a id="table.specfun_status"></a><p class="title"><strong>Table 1.9. C++ Special Functions Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ Special Functions Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr bgcolor="#B0B0B0"><td align="left">7</td><td align="left">Macro names</td><td align="left">Partial</td><td align="left">No diagnostic for inconsistent definitions of
</p><div class="table"><a id="table.specfun_status"></a><p class="title"><strong>Table 1.10. C++ Special Functions Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ Special Functions Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr bgcolor="#B0B0B0"><td align="left">7</td><td align="left">Macro names</td><td align="left">Partial</td><td align="left">No diagnostic for inconsistent definitions of
<code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code></td></tr><tr><td align="left">8</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">beta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.10</td><td align="left">cylindrical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.11</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.12</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.13</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.14</td><td align="left">exponential integral</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.15</td><td align="left">Hermite polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.16</td><td align="left">Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.17</td><td align="left">Legendre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.18</td><td align="left">Riemann zeta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.19</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.20</td><td align="left">spherical associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.21</td><td align="left">spherical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">8.3</td><td align="left">The header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">Partial</td><td align="left">Conflicts with C++ 2011 requirements.</td></tr><tr bgcolor="#C8B0B0"><td align="left">8.4</td><td align="left">The header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">N</td><td align="left">Conflicts with C++ 2011 requirements.</td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.specfun.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is specified by the 2011 standard,
see <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++ 2011 Implementation
Specific Behavior</a>. This section documents behaviour which

View File

@ -43,6 +43,10 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2017.xml">
</xi:include>
<!-- Section 01.4 : Status C++ 2020 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2020.xml">
</xi:include>
<!-- Section 01.5 : Status C++ TR1 -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
</xi:include>

View File

@ -980,6 +980,14 @@ and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
documents behaviour which is new in the 2017 standard.
</para>
<para>
<emphasis>20.5.1.2 [headers]</emphasis>
Whether names from Annex K are declared by C++ headers depends on
whether the underlying C library supports Annex K and declares the
names. For the GNU C library, there is no Annex K support and so
none of its names are declared by C++ headers.
</para>
<para>
<emphasis>23.6.5 [optional.bad_optional_access]</emphasis>
<code>what()</code> returns <literal>"bad optional access"</literal>.
@ -987,8 +995,7 @@ and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
<para>
<emphasis>23.7.3 [variant.variant]</emphasis>
Whether <classname>variant</classname> supports over-aligned types
should be documented here.
<classname>variant</classname> supports over-aligned types.
</para>
<para>
@ -998,15 +1005,21 @@ and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
<para>
<emphasis>23.12.5.2 [memory.resource.pool.options]</emphasis>
The limits for maximum number of blocks and largest allocation size
supported by <classname>pool_options</classname> should be documented
here.
Let S equal <code>numeric_limits&lt;size_t&gt;::digits</code>.
The limit for maximum number of blocks in a chunk is given by
<inlineequation><mathphrase>2<superscript>N</superscript>-1</mathphrase></inlineequation>,
where N is <inlineequation><mathphrase>min(19, 3 + S/2)</mathphrase></inlineequation>.
The largest allocation size that will be allocated from a pool is
<inlineequation><mathphrase>2<superscript>22</superscript></mathphrase></inlineequation>
when <inlineequation><mathphrase>S > 20</mathphrase></inlineequation>,
otherwise 3072 when <inlineequation><mathphrase>S > 16</mathphrase></inlineequation>,
otherwise 768.
</para>
<para>
<emphasis>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis>
The default <code>next_buffer_size</code> and growth factor should
be documented here.
The default <code>next_buffer_size</code> is <code>128 * sizeof(void*)</code>.
The default growth factor is <code>1.5</code>.
</para>
<para>
@ -1067,13 +1080,32 @@ and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
<para>
<emphasis>30.10.5 [fs.filesystem.syn]</emphasis>
The clock used for file times is
<classname>std::chrono::system_clock</classname>.
The clock used for file times is an unspecified type
with a signed 64-bit representation, capable of representing
timestamps with nanosecond resolution. The clock's epoch is
unspecified, but is not the same as the system clock's epoch.
</para>
<para>
<emphasis>30.10.7.1 [fs.path.generic]</emphasis>
dot-dot in the root-directory refers to the root-directory itself.
On Windows, a drive specifier such as <code>"C:"</code> or
<code>"z:"</code> is treated as a root-name. On Cygwin, a path
that begins with two successive directory separators is a
root-name. Otherwise (for POSIX-like systems other than Cygwin),
the implementation-defined root-name is an unspecified string
which does not appear in any pathnames.
</para>
<para>
<emphasis>30.10.10.1 [fs.enum.path.format]</emphasis>
The character sequence is always interpreted in the native pathname
format.
</para>
<para>
<emphasis>30.10.15.4 [fs.op.file_size]</emphasis>
If <code>!is_regular_file(p)</code>, an error is reported.
</para>

View File

@ -0,0 +1,980 @@
<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++ 202a</title>
<keywordset>
<keyword>ISO C++</keyword>
<keyword>2020</keyword>
</keywordset>
</info>
<para>
In this implementation the <literal>-std=gnu++2a</literal> or
<literal>-std=c++2a</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 SVN,
not in any particular release.
</para>
<para>
The following table lists new library features that have been accepted into
the C++2a 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).
The "SD-6 Feature Test" 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>.
</para>
<table frame="all" xml:id="table.cxx20_status">
<title>C++ 2020 Implementation Status</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</entry>
</row>
</thead>
<tbody>
<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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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 />
</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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> <code>&lt;span&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/p0122r7.pdf">
P0122R7
</link>
</entry>
<entry align="center"> </entry>
<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 align="center"> </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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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 />
</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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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>
<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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Support for contract based programming in C++ </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html">
P0542R5
</link>
</entry>
<entry align="center"> </entry>
<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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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> 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> 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 />
</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"> Note 1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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"> Note 1 </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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> 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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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>
<?dbhtml bgcolor="#C8B0B0" ?>
<entry> Consistency improvements for <code>&lt;=&gt;</code> and other comparison operators </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1120r0.html">
P1120R0
</link>
</entry>
<entry align="center"> </entry>
<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 />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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 />
</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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </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> 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"> </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>
<?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>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#C8B0B0" ?>
<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"> </entry>
<entry />
</row>
<row>
<?dbhtml bgcolor="#B0B0B0" ?>
<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"> Partial </entry>
<entry />
</row>
</tbody>
</tgroup>
</table>
<para>
Note 1: The changes in the proposal either do not affect the code in libstdc++,
or the changes are not required for conformance.
</para>
<section xml:id="iso.2020.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
<para>For behaviour which is also specified by previous standards,
see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
Specific Behavior</link>, <link linkend="iso.2011.specific">C++
2011 Implementation Specific Behavior</link> and <link
linkend="iso.2017.specific">C++ 2017 Implementation Specific
Behavior</link>.
This section only documents behaviour which is new in the 202a draft.
</para>
</section>
</section>