information is available on the homepage (including how to browse
the list archives); to send a message to the list,
use <code class="email"><<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>></code>.
- </p><p>
+ </p><p>
If you have a question that you think should be included
here, or if you have a question <span class="emphasis"><em>about</em></span> a question/answer
here, please send email to the libstdc++ mailing list, as above.
development tools. It may be necessary to install extra
development packages to get the headers, or the documentation, or
the source: please consult your vendor for details.
- </p><p>
- To build and install from the GNU GCC sources, please consult the
+ </p><p>
+ To build and install from the GNU GCC sources, please consult the
<a class="link" href="manual/setup.html" title="Chapter 2. Setup">setup
documentation</a> for detailed
instructions. You may wish to browse those files ahead
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"></a></td><td align="left" valign="top"><p>
Libstdc++ comes with its own validation testsuite, which includes
conformance testing, regression testing, ABI testing, and
- performance testing. Please consult the
+ performance testing. Please consult the
<a class="link" href="http://gcc.gnu.org/install/test.html" target="_top">testing
documentation</a> for GCC and
<a class="link" href="manual/test.html" title="Testing">Testing</a> in the libstdc++
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
By default we try to support the C99 <span class="type">long long</span> type.
This requires that certain functions from your C library be present.
- </p><p>
+ </p><p>
Up through release 3.0.2 the platform-specific tests performed by
libstdc++ were too general, resulting in a conservative approach
to enabling the <span class="type">long long</span> code paths. The most
commonly reported platform affected was Solaris.
- </p><p>
+ </p><p>
This has been fixed for libstdc++ releases greater than 3.0.3.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.predefined"></a><a id="q-predefined"></a><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p>
<code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined?
and later. A patch went in just after the 3.3 release to
make mips* use the generic implementation instead. You can also
configure for mipsel-elf as a workaround.
- </p><p>
+ </p><p>
The mips*-*-linux* port continues to use the MIPS II routines, and more
work in this area is expected.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.linux_glibc"></a><a id="q-linux_glibc"></a><p><strong>4.7.</strong></p></td><td align="left" valign="top"><p>
enable <span class="type">wchar_t</span> and C++ library structures
like <code class="classname">wstring</code> were present. This impacted Solaris,
Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0.
- </p><p>
+ </p><p>
</p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>5.1. <a href="faq.html#faq.what_works">
What works already?
</a></dt><dt>5.2. <a href="faq.html#faq.standard_bugs">
platforms. Also dependent on the underlying platform is support
for <span class="type">wchar_t</span> and <span class="type">long long</span> specializations,
and details of thread support.
- </p><p>
- Long answer: See the implementation status pages for
+ </p><p>
+ Long answer: See the implementation status pages for
<a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>,
<a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>,
<a class="link" href="manual/status.html#status.iso.2011" title="C++ 2011">C++11</a>,
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.standard_bugs"></a><a id="q-standard_bugs"></a><p><strong>5.2.</strong></p></td><td align="left" valign="top"><p>
Bugs in the ISO C++ language or library specification
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"></a></td><td align="left" valign="top"><p>
- Unfortunately, there are some.
+ Unfortunately, there are some.
</p><p>
For those people who are not part of the ISO Library Group
(i.e., nearly all of us needing to read this page in the first
or an older version of the GNU compilers. Third, you can find more
information on the libstdc++ and the GCC mailing lists: search
these lists with terms describing your issue.
- </p><p>
+ </p><p>
Before reporting a bug, please examine the
<a class="link" href="https://gcc.gnu.org/bugs/" target="_top">bugs database</a>, with the
component set to <span class="quote">“<span class="quote">c++</span>”</span>.
and <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards
compatibility</a> documentation.
</p><p>
- The <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
+ The <a class="link" href="https://web.archive.org/web/20171104092813/http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
for SGI's STL is still recommended reading.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"></a><a id="q-extensions_and_backwards_compat"></a><p><strong>7.4.</strong></p></td><td align="left" valign="top"><p>
Extensions and Backward Compatibility
Feature-testing recommendations for C++</a> (where applicable)
or any notes about the implementation.
</p><div class="table"><a id="table.cxx20_features"></a><p class="title"><strong>Table 1.8. C++ 2020 Library Features</strong></p><div class="table-contents"><table class="table" summary="C++ 2020 Library Features" 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 / Notes</th></tr></thead><tbody><tr><td colspan="4" align="left">
- <span class="bold"><strong>Compile-time programming</strong></span>
+ <span class="bold"><strong>Compile-time programming</strong></span>
</td></tr><tr><td align="left"> Add constexpr modifiers to functions in <code class="code"><algorithm></code> and <code class="code"><utility></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>
+ P0202R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_algorithms >= 201703L</code> </td></tr><tr><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>
+ P0879R0 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_algorithms >= 201806L</code> </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>
+ P0415R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_complex >= 201711L</code> (since 9.4, see Note 1) </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>
+ P0595R2 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_is_constant_evaluated >= 201811L</code> </td></tr><tr><td align="left"> More constexpr containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html" target="_top">
- P0784R7 </a>
+ P0784R7 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_dynamic_alloc >= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making <code class="code">std::string</code> constexpr </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf" target="_top">
- P0980R1 </a>
+ P0980R1 </a>
</td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_string >= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making <code class="code">std::vector</code> constexpr </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1004r2.pdf" target="_top">
- P1004R2 </a>
+ P1004R2 </a>
</td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_vector >= 201907L</code> </td></tr><tr><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>
+ P1006R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_memory >= 201811L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left"> constexpr for <code class="code"><numeric></code> algorithms </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1645r1.html" target="_top">
- P1645R1 </a>
+ P1645R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_numeric >= 201911L</code> </td></tr><tr><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>
+ P0858R0 </a>
</td><td align="center"> 9.1 </td><td align="left">
- <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_array_constexpr >= 201803L</code> </td></tr><tr><td> <code class="code">__cpp_lib_string_view >= 201803L</code> </td></tr><tr><td> (both since 9.4, see Note 1) </td></tr></tbody></table></div>
- </td></tr><tr><td align="left"> <code class="code">constexpr</code> comparison operators for <code class="code">std::array</code> </td><td align="left">
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_array_constexpr >= 201803L</code> </td></tr><tr><td> <code class="code">__cpp_lib_string_view >= 201803L</code> </td></tr><tr><td> (both since 9.4, see Note 1) </td></tr></tbody></table></div>
+ </td></tr><tr><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>
+ P1023R0 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_array_constexpr >= 201806</code> </td></tr><tr><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>
+ P1032R1 </a>
</td><td align="center"> 10.1 </td><td align="left">
- <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_array_constexpr >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_functional >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_iterator >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_string_view >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_tuple >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_utility >= 201811L</code> </td></tr></tbody></table></div>
- </td></tr><tr><td align="left"> <code class="code">constexpr <span class="emphasis"><em>INVOKE</em></span></code> </td><td align="left">
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_array_constexpr >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_functional >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_iterator >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_string_view >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_tuple >= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_utility >= 201811L</code> </td></tr></tbody></table></div>
+ </td></tr><tr><td align="left"> <code class="code">constexpr <span class="emphasis"><em>INVOKE</em></span></code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html" target="_top">
- P1065R2 </a>
+ P1065R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_functional >= 201907L</code> </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>
+ P0550R2 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_remove_cvref >= 201711L</code> (since 9.4, see Note 1) </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>
+ P0758R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_is_nothrow_convertible >= 201806L</code> (since 9.4, see Note 1) </td></tr><tr><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>
+ P0887R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_type_identity >= 201806L</code> (since 9.4, see Note 1) </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>
+ P0318R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_unwrap_ref >= 201811L</code> (since 9.4, see Note 1) </td></tr><tr bgcolor="#B0B0B0"><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>
+ P1285R0 </a>
</td><td align="center"> Partial </td><td align="left"> </td></tr><tr><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>
+ P1353R0 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> Making std::underlying_type SFINAE-friendly </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html" target="_top">
- P0340R3 </a>
+ P0340R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> Traits for [Un]bounded Arrays </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf" target="_top">
- P1357R1 </a>
+ P1357R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_bounded_array_traits >= 201902L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Layout-compatibility and pointer-interconvertibility traits </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0466r5.pdf" target="_top">
- P0466R5 </a>
+ P0466R5 </a>
</td><td align="center"> </td><td align="left">
- <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_is_layout_compatible >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_is_pointer_interconvertible >= 201907L</code> </td></tr></tbody></table></div>
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_is_layout_compatible >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_is_pointer_interconvertible >= 201907L</code> </td></tr></tbody></table></div>
</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>
+ P0941R2 </a>
</td><td align="center"> 5.1 </td><td align="left"> </td></tr><tr><td align="left"> <code class="code"><version></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>
+ P0754R2 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__has_include(<version>)</code> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Synchronization</strong></span>
+ <span class="bold"><strong>Synchronization</strong></span>
</td></tr><tr><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>
+ P0019R8 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_atomic_ref >= 201806L</code> </td></tr><tr><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>
+ P0020R6 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_atomic_float >= 201711L</code> </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>
+ P0053R7 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_syncbuf >= 201711L</code> </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>
+ P0753R2 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_syncbuf >= 201803L</code> </td></tr><tr><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>
+ P0439R0 </a>
</td><td align="center"> 9.1 </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>
+ P0528R3 </a>
</td><td align="center"> </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>
+ P0718R2 </a>
</td><td align="center"> </td><td align="left"> <code class="code"> __cpp_lib_atomic_shared_ptr >= 201711L</code> </td></tr><tr><td align="left"> std::stop_token and std::jthread </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf" target="_top">
- P0660R10 </a>
+ P0660R10 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread >= 201907L</code> </td></tr><tr><td align="left"> Rename <code class="code">condition_variable_any</code> interruptible wait methods </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html" target="_top">
- P1869R1 </a>
+ P1869R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread >= 201911L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html" target="_top">
- P1135R6 </a>
+ P1135R6 </a>
</td><td align="center"> </td><td align="left">
- <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_atomic_lock_free_type_aliases >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier >= 201907L</code> </td></tr></tbody></table></div>
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_atomic_lock_free_type_aliases >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier >= 201907L</code> </td></tr></tbody></table></div>
</td></tr><tr><td align="left"> Fixing Atomic Initialization </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf" target="_top">
- P0883R2 </a>
+ P0883R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_atomic_value_initialization >= 201911L</code> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Ranges and Concepts</strong></span>
+ <span class="bold"><strong>Ranges and Concepts</strong></span>
</td></tr><tr><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>
+ P0898R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_concepts >= 201806L</code> </td></tr><tr><td align="left"> Rename concepts to standard_case for C++20, while we still can </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf" target="_top">
- P1754R1 </a>
+ P1754R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_concepts >= 201907L</code> </td></tr><tr><td align="left"> Wording for <span class="emphasis"><em><code class="code">boolean-testable</code></em></span> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html" target="_top">
- P1964R2 </a>
+ P1964R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_concepts >= 202002L</code> </td></tr><tr><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>
+ P0896R4 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201811L</code> </td></tr><tr><td align="left"> Input Range Adaptors </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf" target="_top">
- P1035R7 </a>
+ P1035R7 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201907L</code> </td></tr><tr><td align="left"> <code class="code">ranges</code> compare algorithm are over-constrained </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html" target="_top">
- P1716R3 </a>
+ P1716R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201911L</code> </td></tr><tr><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>
+ P1248R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Ranges Design Cleanup </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf" target="_top">
- P1252R2 </a>
+ P1252R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
+ <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
</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>
+ P0355R7 </a>
</td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_chrono >= 201803L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Miscellaneous minor fixes for chrono </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html" target="_top">
- P1466R3 </a>
+ P1466R3 </a>
</td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_chrono >= 201907L</code> </td></tr><tr><td align="left"> <code class="code"><chrono></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>
+ P0972R0 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Three-way comparison</strong></span>
+ <span class="bold"><strong>Three-way comparison</strong></span>
</td></tr><tr><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>
+ P0768R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_three_way_comparison >= 201711L</code> </td></tr><tr><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>
+ P0905R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Adding <=> to the standard library </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html" target="_top">
- P1614R2 </a>
+ P1614R2 </a>
</td><td align="center"> 10.1 </td><td align="left">
<code class="code">__cpp_lib_three_way_comparison >= 201907L</code>
</td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Strings and text</strong></span>
+ <span class="bold"><strong>Strings and text</strong></span>
</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>
+ P0966R1 </a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><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>
+ P0482R6 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_char8_t >= 201811L</code> </td></tr><tr><td align="left"> <code class="code">char8_t</code> backward compatibility remediation </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html" target="_top">
- P1423R3 </a>
+ P1423R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_char8_t >= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Text formatting </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html" target="_top">
- P0645R10 </a>
+ P0645R10 </a>
</td><td align="center"> </td><td align="left">
<code class="code">__cpp_lib_format >= 201907L</code>
</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Integration of chrono with text formatting </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf" target="_top">
- P1361R2 </a>
+ P1361R2 </a>
</td><td align="center"> </td><td align="left">
<code class="code">__cpp_lib_format >= 201907L</code>
</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Printf corner cases in <code class="code">std::format</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html" target="_top">
- P1652R1 </a>
+ P1652R1 </a>
</td><td align="center"> </td><td align="left">
<code class="code">__cpp_lib_format >= 201907L</code>
</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>
+ P0457R2 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_starts_ends_with >= 201711L</code> (since 9.4, see Note 1) </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>
+ P1025R1 </a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Containers</strong></span>
+ <span class="bold"><strong>Containers</strong></span>
</td></tr><tr><td align="left"> span: bounds-safe views for sequences of objects </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>
+ P0122R7 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_span >= 201803L</code> </td></tr><tr><td align="left">
Usability Enhancements for <code class="classname">std::span</code>
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf" target="_top">
- P1024R3 </a>
+ P1024R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_span >= 201902L</code> </td></tr><tr><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>
+ P1085R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Fixed-size <code class="code"><span></code> construction from dynamic range </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html" target="_top">
- P1976R2 </a>
+ P1976R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_span >= 202002L</code> </td></tr><tr><td align="left"> <code class="code">std::to_array</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html" target="_top">
- P0325R4 </a>
+ P0325R4 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_to_array >= 201907L</code> </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>
+ P0458R2 </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>
+ P0809R0 </a>
</td><td align="center"> </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>
+ P0919R3 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_generic_unordered_lookup >= 201811</code> </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>
+ P1209R0 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_erase_if >= 201811L</code> </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>
+ P0646R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_list_remove_return_type >= 201806L</code> </td></tr><tr><td align="left"> Improving the Return Value of Erase-Like Algorithms II: Free <code class="code">erase</code>/<code class="code">erase_if</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf" target="_top">
- P1115R3 </a>
+ P1115R3 </a>
</td><td align="center"> 9.1 </td><td align="left">
- <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_erase_if >= 202002L</code> </td></tr><tr><td> (defined to <code class="code">201900L</code> for GCC 9.1 and 9.2 so use <code class="code">> 201811L</code>) </td></tr></tbody></table></div>
- </td></tr><tr><td align="left"> Signed ssize() functions, unsigned size() functions </td><td align="left">
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_erase_if >= 202002L</code> </td></tr><tr><td> (defined to <code class="code">201900L</code> for GCC 9.1 and 9.2 so use <code class="code">> 201811L</code>) </td></tr></tbody></table></div>
+ </td></tr><tr><td align="left"> Signed ssize() functions, unsigned size() functions </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html" target="_top">
- P1227R2 </a>
+ P1227R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ssize >= 201902L</code> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Memory management</strong></span>
+ <span class="bold"><strong>Memory management</strong></span>
</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>
+ P0653R2 </a>
</td><td align="center"> 8.1 </td><td align="left"> <code class="code">__cpp_lib_to_address >= 201711L</code> (since 9.4, see Note 1) </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>
+ P0674R1 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_shared_ptr_arrays >= 201707L</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>
+ P0722R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_destroying_delete >= 201806L</code> </td></tr><tr><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>
+ P0591R4 </a>
</td><td align="center"> 9.1 </td><td align="left">
<code class="code">std::scoped_allocator_adaptor</code> changes missing in 9.1.0
</td></tr><tr><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>
+ P1007R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_assume_aligned >= 201811L</code> (since 9.4, see Note 1) </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>
+ P1020R1 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_smart_ptr_for_overwrite >= 201811L</code> </td></tr><tr><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>
+ P1165R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left">
<code class="classname">polymorphic_allocator<></code> as a vocabulary type
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf" target="_top">
- P0339R6 </a>
+ P0339R6 </a>
</td><td align="center"> 9.1 </td><td align="left">
- <code class="code">__cpp_lib_polymorphic_allocator >= 201902L</code> (since 9.4, see Note 1)
- </td></tr><tr><td align="left"> LWG 2511: guaranteed copy elision for piecewise construction </td><td align="left">
+ <code class="code">__cpp_lib_polymorphic_allocator >= 201902L</code> (since 9.4, see Note 1)
+ </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>
+ P0475R1 </a>
</td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
- <span class="bold"><strong>Miscellaneous</strong></span>
+ <span class="bold"><strong>Miscellaneous</strong></span>
</td></tr><tr><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>
+ P0600R1 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><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>
+ P0616R0 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><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>
+ P0767R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><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>
+ P0777R1 </a>
</td><td align="center"> 9.1 </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>
+ P0551R3 </a>
</td><td align="center"> </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>
+ P0476R2 </a>
</td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_bit_cast >= 201806L</code> </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>
+ P0556R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_int_pow2 >= 201806L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left"> On the names of low-level bit manipulation functions </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf" target="_top">
- P1956R1 </a>
+ P1956R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_int_pow2 >= 202002L</code> </td></tr><tr><td align="left"> Safe integral comparisons </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html" target="_top">
- P0586R2 </a>
+ P0586R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_integer_comparison_functions >= 202002L</code> </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>
+ P0619R4 </a>
</td><td align="center"> </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>
+ P0759R1 </a>
</td><td align="center"> — </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add <code class="code">shift</code> to <code class="code"><algorithm></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>
+ P0769R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_shift >= 201806L</code> </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>
+ P0788R3 </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>
+ P0892R2 </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>
+ P0935R0 </a>
</td><td align="center"> 9.1 </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>
+ P0771R1 </a>
</td><td align="center"> 7.2 </td><td align="left"> </td></tr><tr><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>
+ P0356R5 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_bind_front >= 201811L</code> </td></tr><tr><td align="left"> <code class="code">bind_front</code> should not unwrap <code class="code">reference_wrapper</code> </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html" target="_top">
- P1651R0 </a>
+ P1651R0 </a>
</td><td align="center"> 9.3 </td><td align="left"> <code class="code">__cpp_lib_bind_front >= 201907L</code> </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>
+ P0357R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Fixing <code class="code">operator>>(basic_istream&, 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>
+ P0487R1 </a>
</td><td align="center"> </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>
+ P0602R4 </a>
</td><td align="center"> 8.3 </td><td align="left"> </td></tr><tr><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>
+ P0608R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">visit<R></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>
+ P0655R1 </a>
</td><td align="center"> 9.1 </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>
+ P0899R1 </a>
</td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr><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>
+ 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>
+ P1148R0 </a>
</td><td align="center"> </td><td align="left"> </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>
+ P1210R0 </a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><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>
+ P1236R1 </a>
</td><td align="center"> — </td><td align="left"> </td></tr><tr><td align="left">
I Stream, You Stream, We All Stream for
<code class="classname">istream_iterator</code>
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html" target="_top">
- P0738R2 </a>
+ P0738R2 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left">
Mandating the Standard Library:
Clause 16 - Language support library
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
- P1458R1 </a>
+ P1458R1 </a>
</td><td align="center"> — </td><td align="left"> </td></tr><tr><td align="left">
Mandating the Standard Library:
Clause 18 - Diagnostics library
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
- P1459R1 </a>
+ P1459R1 </a>
</td><td align="center"> — </td><td align="left"> </td></tr><tr><td align="left">
Mandating the Standard Library:
Clause 20 - Strings library
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html" target="_top">
- P1462R1 </a>
+ P1462R1 </a>
</td><td align="center"> — </td><td align="left"> </td></tr><tr><td align="left">
Mandating the Standard Library:
Clause 21 - Containers library
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf" target="_top">
- P1463R1 </a>
+ P1463R1 </a>
</td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
Mandating the Standard Library:
Clause 22 - Iterators library
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf" target="_top">
- P1464R1 </a>
+ P1464R1 </a>
</td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Make <code class="code">create_directory()</code> Intuitive </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf" target="_top">
P1164R1
- </a>
+ </a>
</td><td align="center"> 8.3 </td><td align="left"> Treated as a DR for C++17 </td></tr><tr><td align="left">
Target Vectorization Policies from Parallelism V2 TS to C++20
</td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html" target="_top">
- P1001R2 </a>
+ P1001R2 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_execution >= 201902L</code> (since 9.4, see Note 1)</td></tr><tr><td align="left"> Merge Coroutines TS into C++20 working draft </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html" target="_top">
- P0912R5 </a>
+ P0912R5 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_coroutines >= 201902L</code> </td></tr><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>
+ P0463R1 </a>
</td><td align="center"> 8.1 </td><td align="left"> <code class="code">__cpp_lib_endian >= 201907L</code> </td></tr><tr><td align="left"> Bit operations </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html" target="_top">
- P0553R4 </a>
+ P0553R4 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_bitops >= 201907L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left"> Well-behaved interpolation for numbers and pointers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html" target="_top">
- P0811R3 </a>
+ P0811R3 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_interpolate >= 201902L</code> </td></tr><tr><td align="left"> Mathematical constants </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf" target="_top">
- P0631R8 </a>
+ P0631R8 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_math_constants >= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> std::source_location </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf" target="_top">
- P1208R6 </a>
+ P1208R6 </a>
</td><td align="center"> </td><td align="left">
<code class="code">__cpp_lib_source_location >= 201907L</code>
</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Efficient access to std::basic_stringbuf's Buffer </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf" target="_top">
- P0408R7 </a>
+ P0408R7 </a>
</td><td align="center"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
Note 1: This feature is supported in older releases but the
<code class="code">__cpp_lib</code> macro is not defined to the right value
<article xml:id="faq" xreflabel="Frequently Asked Questions">
<?dbhtml filename="faq.html"?>
-
+
<info><title>Frequently Asked Questions</title>
-
+
<copyright>
<year>
2008-2018
exactly how far the project has come, or just want the latest
bleeding-edge code, the up-to-date source can be cloned via
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/git.html">Git</link>.
- </para>
+ </para>
<para>
N.B. The library is called libstdc++ <emphasis>not</emphasis> stdlibc++.
(as the Draft Standard used to say) <quote>incomplet and
incorrekt</quote>, and many suffered from limitations of the compilers
that used them.
- </para>
+ </para>
<para>
The GNU compiler collection
(<command>gcc</command>, <command>g++</command>, etc) is widely
the rapid development and near-legendary
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/buildstat.html">portability</link>
that are the hallmarks of an open-source project are applied to libstdc++.
- </para>
+ </para>
<para>
All of the standard classes and functions from C++98/C++03, C++11 and C++14
(such as <classname>string</classname>,
archives, is open to everyone. You can read instructions for
doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/lists.html">GCC mailing lists</link> page.
If you have questions, ideas, code, or are just curious, sign up!
- </para>
+ </para>
</answer>
</qandaentry>
Nathan Myers gave the best of all possible answers, responding to
a Usenet article asking this question: <emphasis>Sooner, if you
help.</emphasis>
- </para>
+ </para>
</answer>
</qandaentry>
anybody who is willing to help write documentation, for example,
or has found a bug in code that we all thought was working and is
willing to provide details, is more than welcome!
- </para>
+ </para>
</answer>
</qandaentry>
being developed.</quote>
It should not be used for new projects, and won't even compile with
recent releases of GCC (or most other C++ compilers).
- </para>
+ </para>
<para>
More information can be found in the
<link linkend="manual.appendix.porting.backwards">Backwards
information is available on the homepage (including how to browse
the list archives); to send a message to the list,
use <email>libstdc++@gcc.gnu.org</email>.
- </para>
+ </para>
- <para>
+ <para>
If you have a question that you think should be included
here, or if you have a question <emphasis>about</emphasis> a question/answer
here, please send email to the libstdc++ mailing list, as above.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
See <link linkend="manual.intro.status.license">our license description</link>
for these and related questions.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
No. The special exception permits use of the library in
proprietary applications.
- </para>
+ </para>
</answer>
</qandaentry>
are expanded inside the code that uses the library. So to allow people
to replace the library code, someone using the library would have to
distribute their own source, rendering the LGPL equivalent to the GPL.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
None. We encourage such programs to be released as free software,
but we won't punish you or sue you if you choose otherwise.
- </para>
+ </para>
</answer>
</qandaentry>
development tools. It may be necessary to install extra
development packages to get the headers, or the documentation, or
the source: please consult your vendor for details.
- </para>
- <para>
- To build and install from the GNU GCC sources, please consult the
+ </para>
+ <para>
+ To build and install from the GNU GCC sources, please consult the
<link linkend="manual.intro.setup">setup
documentation</link> for detailed
instructions. You may wish to browse those files ahead
of time to get a feel for what's required.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
Libstdc++ comes with its own validation testsuite, which includes
conformance testing, regression testing, ABI testing, and
- performance testing. Please consult the
+ performance testing. Please consult the
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing
documentation</link> for GCC and
<link linkend="manual.intro.setup.test">Testing</link> in the libstdc++
manual for more details.
- </para>
+ </para>
<para>
If you find bugs in the testsuite programs themselves, or if you
think of a new test program that should be added to the suite,
using anything from the rest of the library, such as IOStreams
or vectors, then you'll still need pieces from
<filename class="libraryfile">libstdc++.a</filename>.
- </para>
+ </para>
</answer>
</qandaentry>
is only possible to a certain extent; the object files in question contain
template classes and template functions, pre-instantiated, and
splitting those up causes severe maintenance headaches.
- </para>
+ </para>
<para>
On supported platforms, libstdc++ takes advantage of garbage
collection in the GNU linker to get a result similar to separating
<answer xml:id="a-other_compilers">
<para>
Perhaps.
- </para>
+ </para>
<para>
Since the goal of ISO Standardization is for all C++
implementations to be able to share code, libstdc++ should be
usable under any ISO-compliant compiler, at least in theory.
- </para>
+ </para>
<para>
However, the reality is that libstdc++ is targeted and optimized
for GCC/G++. This means that often libstdc++ uses specific,
been known to work with versions of the EDG C++ compiler, and
vendor-specific proprietary C++ compilers such as the Intel ICC
C++ compiler.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
By default we try to support the C99 <type>long long</type> type.
This requires that certain functions from your C library be present.
- </para>
- <para>
+ </para>
+ <para>
Up through release 3.0.2 the platform-specific tests performed by
libstdc++ were too general, resulting in a conservative approach
to enabling the <type>long long</type> code paths. The most
commonly reported platform affected was Solaris.
- </para>
- <para>
+ </para>
+ <para>
This has been fixed for libstdc++ releases greater than 3.0.3.
- </para>
+ </para>
</answer>
</qandaentry>
make mips* use the generic implementation instead. You can also
configure for mipsel-elf as a workaround.
</para>
- <para>
+ <para>
The mips*-*-linux* port continues to use the MIPS II routines, and more
work in this area is expected.
- </para>
+ </para>
</answer>
</qandaentry>
enable <type>wchar_t</type> and C++ library structures
like <classname>wstring</classname> were present. This impacted Solaris,
Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0.
- </para>
- <para>
- </para>
+ </para>
+ <para>
+ </para>
</answer>
</qandaentry>
for <type>wchar_t</type> and <type>long long</type> specializations,
and details of thread support.
</para>
- <para>
- Long answer: See the implementation status pages for
+ <para>
+ Long answer: See the implementation status pages for
<link linkend="status.iso.1998">C++98</link>,
<link linkend="status.iso.tr1">TR1</link>,
<link linkend="status.iso.2011">C++11</link>,
<link linkend="status.iso.2014">C++14</link>, and
<link linkend="status.iso.2017">C++17</link>.
- </para>
+ </para>
</answer>
</qandaentry>
</question>
<answer xml:id="a-standard_bugs">
<para>
- Unfortunately, there are some.
+ Unfortunately, there are some.
</para>
<para>
For those people who are not part of the ISO Library Group
website</link>.
Many of these issues have resulted in
<link linkend="manual.intro.status.bugs.iso">code changes in libstdc++</link>.
- </para>
+ </para>
<para>
If you think you've discovered a new bug that is not listed,
please post a message describing your problem to the author of
or an older version of the GNU compilers. Third, you can find more
information on the libstdc++ and the GCC mailing lists: search
these lists with terms describing your issue.
- </para>
- <para>
+ </para>
+ <para>
Before reporting a bug, please examine the
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/bugs/">bugs database</link>, with the
component set to <quote>c++</quote>.
- </para>
+ </para>
</answer>
</qandaentry>
fs.close();
fs.open("a_new_file");
</programlisting>
-
+
<para>
All operations on the re-opened <varname>fs</varname> would fail, or at
least act very strangely, especially if <varname>fs</varname> reached the
of <link linkend="manual.bugs.dr409">DR #409</link> and
<function>open()</function>
now calls <function>clear()</function> on success.
- </para>
+ </para>
</answer>
</qandaentry>
necessarily trying to be OO. The option also enforces outdated guidelines
from old editions of the books, and the advice isn't all relevant to
modern C++ (especially C++11 and later).
- </para>
+ </para>
<para>
We do, however, try to have libstdc++ sources as clean as possible. If
you see some simple changes that pacify <option>-Weffc++</option>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums
things up here</link>. The collisions with vector/string iterator
types have been fixed for 3.1.
- </para>
+ </para>
</answer>
</qandaentry>
checks, is available in the
<link linkend="std.diagnostics.concept_checking">Diagnostics</link>.
chapter of the manual.
- </para>
+ </para>
</answer>
</qandaentry>
want to test the library for memory leaks please read
<link linkend="debug.memory">Tips for memory leak hunting</link>
first.
- </para>
+ </para>
</answer>
</qandaentry>
See
the <link linkend="std.containers">Containers</link>
chapter.
- </para>
+ </para>
</answer>
</qandaentry>
fixes. Bugs have a way of being reintroduced; if an old bug
creeps back in, it will be caught immediately by the testsuite -
but only if such a test exists.
- </para>
+ </para>
</answer>
</qandaentry>
compatibility</link> documentation.
</para>
<para>
- The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/FAQ.html">FAQ</link>
+ The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://web.archive.org/web/20171104092813/http://www.sgi.com/tech/stl/FAQ.html">FAQ</link>
for SGI's STL is still recommended reading.
- </para>
+ </para>
</answer>
</qandaentry>
<answer xml:id="a-extensions_and_backwards_compat">
<para>
See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
Please refer to the <link linkend="appendix.contrib">Contributing</link>
section in our manual.
- </para>
+ </para>
</answer>
</qandaentry>
so they may later be changed. Deciding which, and implementing
the decisions, must happen before you can reasonably document a
candidate C++ ABI that encompasses the standard library.
- </para>
+ </para>
</answer>
</qandaentry>
<para>
See <link linkend="strings.string.shrink">Shrink-to-fit
strings</link> for a similar solution for strings.
- </para>
+ </para>
</answer>
</qandaentry>