libstdc++: Fix broken link to SGI STL FAQ
authorJonathan Wakely <jwakely@redhat.com>
Mon, 4 May 2020 21:54:25 +0000 (22:54 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Mon, 4 May 2020 21:54:25 +0000 (22:54 +0100)
The previous URL to an entry in the wayback machine now redirects to a
page saying "SGI.com Tech Archive Resources now retired" so use an older
entry from the archive.

* doc/xml/faq.xml: Use working link for SGI STL FAQ.
* doc/html/*: Regenerate.

libstdc++-v3/ChangeLog
libstdc++-v3/doc/html/faq.html
libstdc++-v3/doc/html/manual/status.html
libstdc++-v3/doc/xml/faq.xml

index 9cc811c884feb8fe1a7ddb3c8d5cf7c5f6fc8d8c..a011ec5f45a870cd5335dabb9b76a438ab002580 100644 (file)
@@ -1,5 +1,8 @@
 2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
 
+       * doc/xml/faq.xml: Use working link for SGI STL FAQ.
+       * doc/html/*: Regenerate.
+
        PR libstdc++/94906
        * src/c++17/memory_resource.cc
        (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
index ac99835acf29852bccbc4534567bc38a36674965..18407225d7aab15bd56676eb686ea1c88422671b 100644 (file)
     information is available on the homepage (including how to browse
     the list archives); to send a message to the list,
     use <code class="email">&lt;<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>&gt;</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
index b2716d05865a12f9879a4a83ba955cbe94c390ca..a16fddd613601ef44d646ed3d2ad124239e348f9 100644 (file)
@@ -1107,435 +1107,435 @@ The "SD-6 Feature Test / Notes" column shows the corresponding macro or header f
 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">&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>
+        P0202R3 </a>
       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_algorithms &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 201811L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left">  constexpr for <code class="code">&lt;numeric&gt;</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 &gt;= 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 &gt;= 201803L</code> </td></tr><tr><td> <code class="code">__cpp_lib_string_view &gt;= 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 &gt;= 201803L</code> </td></tr><tr><td> <code class="code">__cpp_lib_string_view &gt;= 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 &gt;= 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 &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_functional &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_iterator &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_string_view &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_tuple &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_utility &gt;= 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 &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_functional &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_iterator &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_string_view &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_tuple &gt;= 201811L</code> </td></tr><tr><td> <code class="code">__cpp_lib_constexpr_utility &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_is_pointer_interconvertible &gt;= 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 &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_is_pointer_interconvertible &gt;= 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">&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>
+        P0754R2 </a>
       </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__has_include(&lt;version&gt;)</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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier &gt;= 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 &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 201907L</code> </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>
+        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 &gt;= 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 &lt;=&gt; 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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">&lt;span&gt;</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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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">&gt; 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 &gt;= 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">&gt; 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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&lt;&gt;</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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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">&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>
+        P0769R2 </a>
       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_shift &gt;= 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 &gt;= 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 &gt;= 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&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>
+        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&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>
+        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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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 &gt;= 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
index aff6c8d6004284c77e9a07b4ff90ed7703de97ce..cf8684e1ceaa059eae85afe21197efd73183ec86 100644 (file)
@@ -2,9 +2,9 @@
 
 <article xml:id="faq" xreflabel="Frequently Asked Questions">
 <?dbhtml filename="faq.html"?>
+
 <info><title>Frequently Asked Questions</title>
-  
+
   <copyright>
     <year>
       2008-2018
@@ -36,7 +36,7 @@
      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++.
@@ -58,7 +58,7 @@
     (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
@@ -68,7 +68,7 @@
     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>