Home | History | Annotate | Line # | Download | only in manual
      1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter1.Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="PartI. Introduction" /><link rel="prev" href="intro.html" title="PartI. Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter1.Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a></td><th width="60%" align="center">PartI.
      3   Introduction
      4   
      5 </th><td width="20%" align="right"><a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter1.Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
      6 This status table is based on the table of contents of ISO/IEC 14882:2003.
      7 </p><p>
      8 This section describes the C++ support in
      9 the GCC 14 release series.
     10 </p><div class="table"><a id="table.cxx98_status"></a><p class="title"><strong>Table1.1.C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
     11 	<span class="emphasis"><em>18</em></span>
     12       </td><td colspan="3" align="left">
     13 	<span class="emphasis"><em>Language support</em></span>
     14       </td></tr><tr><td align="left">18.1</td><td align="left">Types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.2</td><td align="left">Implementation properties</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.2.1</td><td align="left">Numeric Limits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.2.1.1</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.2.1.2</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Y</td><td class="auto-generated"></td></tr><tr><td align="left">18.2.1.3</td><td align="left"><code class="code">float_round_style</code></td><td align="left">Y</td><td class="auto-generated"></td></tr><tr><td align="left">18.2.1.4</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">Y</td><td class="auto-generated"></td></tr><tr><td align="left">18.2.1.5</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.2.2</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3</td><td align="left">Start and termination</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.4</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.5</td><td align="left">Type identification</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.5.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.5.2</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.5.3</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.6</td><td align="left">Exception handling</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.6.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.6.2</td><td align="left">Violation exception-specifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.6.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.6.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     15 	<span class="emphasis"><em>19</em></span>
     16       </td><td colspan="3" align="left">
     17 	<span class="emphasis"><em>Diagnostics</em></span>
     18       </td></tr><tr><td align="left">19.1</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.2</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.3</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     19 	<span class="emphasis"><em>20</em></span>
     20       </td><td colspan="3" align="left">
     21 	<span class="emphasis"><em>General utilities</em></span>
     22       </td></tr><tr><td align="left">20.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2</td><td align="left">Utility components</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.2</td><td align="left"><code class="code">pair</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3</td><td align="left">Function objects</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.3.1</td><td align="left">Base</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.2</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.3</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.4</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.5</td><td align="left">Negators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.6</td><td align="left">Binders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.7</td><td align="left">Adaptors for pointers to functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.8</td><td align="left">Adaptors for pointers to members</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4</td><td align="left">Memory</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.4.1</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.3</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.4</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.4.1</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.4.2</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.4.3</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.5</td><td align="left">Class template <code class="code">auto_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.6</td><td align="left">C library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     23 	<span class="emphasis"><em>21</em></span>
     24       </td><td colspan="3" align="left">
     25 	<span class="emphasis"><em>Strings</em></span>
     26       </td></tr><tr><td align="left">21.1</td><td align="left">Character traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.1.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.1.2</td><td align="left">traits typedef</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.1.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.1.3.1</td><td align="left">struct <code class="code">char_traits&lt;char&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.1.3.2</td><td align="left">struct <code class="code">char_traits&lt;wchar_t&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2</td><td align="left">String classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.3</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.4</td><td align="left">Null-terminated sequence utilities</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">
     27       	<span class="emphasis"><em>22</em></span>
     28       </td><td colspan="3" align="left">
     29 	<span class="emphasis"><em>Localization</em></span>
     30       </td></tr><tr><td align="left">22.1</td><td align="left">Locales</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.1.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.1.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.1.3</td><td align="left">Convenience interfaces</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.1.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.1.3.2</td><td align="left">Character conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2</td><td align="left">Standard locale categories</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.2.1</td><td align="left"><code class="code">ctype</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.2</td><td align="left">Numeric</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.2.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.3</td><td align="left"><code class="code">num_punct</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.4</td><td align="left"><code class="code">collate</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.5</td><td align="left">Time</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.2.5.1</td><td align="left"><code class="code">time_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.5.2</td><td align="left"><code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.5.3</td><td align="left"><code class="code">time_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.5.3</td><td align="left"><code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.6</td><td align="left">Monetary</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.2.6.1</td><td align="left"><code class="code">money_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.6.2</td><td align="left"><code class="code">money_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.6.3</td><td align="left"><code class="code">money_punct</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.6.4</td><td align="left"><code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.7</td><td align="left"><code class="code">messages</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     31 	<span class="emphasis"><em>23</em></span>
     32       </td><td colspan="3" align="left">
     33 	<span class="emphasis"><em>Containers</em></span>
     34       </td></tr><tr><td align="left">23.1</td><td align="left">Container requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2</td><td align="left">Sequence containers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2.1</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.2</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.3</td><td align="left">Adaptors</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2.3.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.3.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.3.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.4</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.5</td><td align="left">Class <code class="code">vector&lt;bool&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3</td><td align="left">Associative containers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.3.1</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     35 	<span class="emphasis"><em>24</em></span>
     36       </td><td colspan="3" align="left">
     37 	<span class="emphasis"><em>Iterators</em></span>
     38       </td></tr><tr><td align="left">24.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.2</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.3</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4</td><td align="left">Predefined iterators and Iterator adaptors</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">24.4.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5</td><td align="left">Stream iterators</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">24.5.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     39 	<span class="emphasis"><em>25</em></span>
     40       </td><td colspan="3" align="left">
     41 	<span class="emphasis"><em>Algorithms</em></span>
     42       </td></tr><tr><td align="left">25.1</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.2</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.3</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.4</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     43       <span class="emphasis"><em>26</em></span>
     44       </td><td colspan="3" align="left">
     45 	<span class="emphasis"><em>Numerics</em></span>
     46       </td></tr><tr><td align="left">26.1</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.2</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3</td><td align="left">Numeric arrays</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.3.1</td><td align="left">Header <code class="code">&lt;valarray&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.6</td><td align="left">Class <code class="code">gslice</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4</td><td align="left">Generalized numeric operations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.4.1</td><td align="left"><code class="code">accumulate</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4.2</td><td align="left"><code class="code">inner_product</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4.3</td><td align="left"><code class="code">partial_sum</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4.4</td><td align="left"><code class="code">adjacent_difference</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4.5</td><td align="left">iota</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     47 	<span class="emphasis"><em>27</em></span>
     48       </td><td colspan="3" align="left">
     49 	<span class="emphasis"><em>Input/output</em></span>
     50       </td></tr><tr><td align="left">27.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.3</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.3.1</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.3.2</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.5</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.6</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.7</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.8</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
     51       	<span class="emphasis"><em>Appendix D</em></span>
     52       </td><td colspan="3" align="left">
     53 	<span class="emphasis"><em>Compatibility features</em></span>
     54       </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with bool operand</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">static</code> keyword</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.3</td><td align="left">Access declarations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.4</td><td align="left">Implicit conversion from const strings</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.7</td><td align="left">char* streams</td><td align="left"></td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>
     55      The ISO standard defines the following phrase:
     56    </p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl class="variablelist"><dt><span class="term">
     57 	 <code class="code">[1.3.5] implementation-defined behavior</code>
     58        </span></dt><dd><p>
     59 	 Behavior, for a well-formed program construct and correct data, that
     60 	 depends on the implementation <span class="emphasis"><em>and that each implementation
     61 	 shall document</em></span>.
     62 	 </p></dd></dl></div></blockquote></div><p>
     63      We do so here, for the C++ library only.  Behavior of the
     64      compiler, linker, runtime loader, and other elements of "the
     65      implementation" are documented elsewhere.  Everything listed
     66      in Annex B, Implementation Qualities, are also part of the
     67      compiler, not the library.
     68    </p><p>
     69      For each entry, we give the section number of the standard, when
     70      applicable.  This list is probably incomplet and inkorrekt.
     71    </p><p>
     72      <span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
     73       interactive stream support is implied.
     74    </p><p>
     75      <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
     76       discussed in the various sections on multithreading (see above).
     77    </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
     78       under <a class="link" href="support.html#std.support.types.null" title="NULL">Support</a>.
     79    </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
     80       sections, libstdc++ has zero control over what the cleanup code hands
     81       back to the runtime loader.  Talk to the compiler people.  :-)
     82    </p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
     83       <span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
     84       <span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
     85       <span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
     86       <span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception):  The <code class="code">what()</code>
     87       member function of class <code class="code">std::exception</code>, and these other
     88       classes publicly derived from it, returns the name of the
     89       class, e.g. <code class="literal">"std::bad_alloc"</code>.
     90    </p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
     91       <code class="code">std::type_info::name()</code> is the mangled type name.
     92       You will need to call <code class="code">c++filt</code> and pass the names as
     93       command-line parameters to demangle them, or call a
     94       <a class="link" href="ext_demangling.html" title="Chapter28.Demangling">runtime demangler function</a>.
     95    </p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
     96       supply libraries that can accept allocators that encapsulate more
     97       general memory models and that support non-equal instances.  In such
     98       implementations, any requirements imposed on allocators by containers
     99       beyond those requirements that appear in Table 32, and the semantics
    100       of containers and algorithms when allocator instances compare
    101       non-equal, are implementation-defined."</em></span>  There is experimental
    102       support for non-equal allocators in the standard containers in C++98
    103       mode. There are no additional requirements on allocators. It is undefined
    104       behaviour to swap two containers if their allocators are not equal.
    105    </p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
    106       <span class="emphasis"><em>[21.1.3.2]/2</em></span>,
    107       <span class="emphasis"><em>[21.3]/6 basic_string::iterator, basic_string::const_iterator</em></span>,
    108       <span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
    109       <span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
    110       <span class="emphasis"><em>others...</em></span>
    111       Nope, these types are called implementation-defined because you
    112       shouldn't be taking advantage of their underlying types.  Listing them
    113       here would defeat the purpose.  :-)
    114    </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about
    115       the <span class="type">mbstate_t</span> stuff... see
    116       the <a class="link" href="facets.html#std.localization.facet.codecvt" title="codecvt"><code class="code">codecvt</code>
    117       notes</a> for what does exist.
    118    </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
    119       implementation will be described under
    120       <a class="link" href="localization.html#std.localization.locales.locale" title="locale">Localization</a>.
    121    </p><p><span class="emphasis"><em>[23.*]</em></span> All of the containers in this clause
    122      define <span class="type">size_type</span> as <span class="type">std::size_t</span> and
    123      <span class="type">difference_type</span> as <span class="type">std::ptrdiff_t</span>.
    124    </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
    125       <code class="code">complex&lt;T&gt;</code>'s <code class="code">pow(0,0)</code> returns.
    126    </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
    127       <code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
    128       performed on the standard stream objects will
    129       flush the buffers, and 
    130       destroy and recreate the underlying buffer instances.  Whether or not
    131       the previously-written I/O is destroyed in this process depends mostly
    132       on the <code class="code">--enable-libio</code> choice:  for stdio, if the written
    133       data is already in the stdio buffer, the data may be completely safe!
    134    </p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
    135       <span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
    136       additional work than the minimum required.  We are not currently taking
    137       advantage of this yet.
    138    </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
    139       <span class="emphasis"><em>[27.8.1.4]/10</em></span>
    140       The effects of <code class="code">pubsetbuf/setbuf</code> are described in the
    141       <a class="link" href="io.html" title="Chapter13. Input and Output">Input and Output</a> chapter.
    142    </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
    143       a get area exists will... whatever <code class="code">fflush()</code> does, I think.
    144    </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2011"></a>C++ 2011</h3></div></div></div><p>
    145 <a id="status.iso.200x"></a> 
    146 This table is based on the table of contents of ISO/IEC
    147 JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11
    148 Final Draft International Standard, Standard for Programming Language C++
    149 </p><p>
    150 In this implementation the <code class="literal">-std=gnu++11</code> or
    151 <code class="literal">-std=c++11</code> flag must be used to enable language
    152 and library
    153 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
    154 options. The pre-defined symbol
    155 <code class="constant">__cplusplus</code> is used to check for the
    156 presence of the required flag.
    157 GCC 5.1 was the first release with non-experimental C++11 support,
    158 so the API and ABI of features added in C++11 is only stable
    159 since that release.
    160 </p><p>
    161 This status table is based on the table of contents of ISO/IEC 14882:2011.
    162 </p><p>
    163 This section describes the C++11 support in
    164 the GCC 14 release series.
    165 </p><div class="table"><a id="table.cxx11_status"></a><p class="title"><strong>Table1.2.C++ 2011 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
    166 	<span class="emphasis"><em>18</em></span>
    167       </td><td colspan="3" align="left">
    168 	<span class="emphasis"><em>Language support</em></span>
    169       </td></tr><tr><td align="left">18.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.2</td><td align="left">Types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3</td><td align="left">Implementation properties</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.3.2</td><td align="left">Numeric Limits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.3.2.3</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3.2.4</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.2.5</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.2.6</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">18.3.2.7</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3.3</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.4</td><td align="left">Integer types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.4.1</td><td align="left">Header <code class="code">&lt;cstdint&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">18.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td align="left">18.6</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7</td><td align="left">Type identification</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.7.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7.2</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7.3</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8</td><td align="left">Exception handling</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.8.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.2</td><td align="left">Class bad_exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.5</td><td align="left">Exception Propagation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.6</td><td align="left"><code class="code">nested_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9</td><td align="left">Initializer lists</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.9.1</td><td align="left">Initializer list constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9.2</td><td align="left">Initializer list access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9.3</td><td align="left">Initializer list range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    170 	<span class="emphasis"><em>19</em></span>
    171       </td><td colspan="3" align="left">
    172 	<span class="emphasis"><em>Diagnostics</em></span>
    173       </td></tr><tr><td align="left">19.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">19.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5</td><td align="left">System error support</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">19.5.1</td><td align="left">Class <code class="code">error_category</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.2</td><td align="left">Class <code class="code">error_code</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.3</td><td align="left">Class <code class="code">error_condition</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.4</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.5</td><td align="left">Class <code class="code">system_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    174 	<span class="emphasis"><em>20</em></span>
    175       </td><td colspan="3" align="left">
    176 	<span class="emphasis"><em>General utilities</em></span>
    177       </td></tr><tr><td align="left">20.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.2</td><td align="left">Utility components</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.2</td><td align="left">swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.3</td><td align="left">forward/move helpers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.4</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3</td><td align="left">Pairs</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.3.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.3.2</td><td align="left">Class template <code class="code">pair</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.3</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.4</td><td align="left">Tuple-like access to <code class="code">pair</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3.5</td><td align="left">Piecewise construction</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4</td><td align="left">Tuples</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.4.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.4.2</td><td align="left">Class template <code class="code">tuple</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.4.2.1</td><td align="left">Construction</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.2</td><td align="left">Assignment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.3</td><td align="left">Swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.4</td><td align="left">Tuple creation functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.5</td><td align="left">Tuple helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.6</td><td align="left">Element access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.7</td><td align="left">Relational operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.8</td><td align="left">Tuple traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4.2.9</td><td align="left">Tuple specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5.1</td><td align="left"><code class="code">bitset</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5.2</td><td align="left"><code class="code">bitset</code> members</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5.3</td><td align="left"><code class="code">bitset</code> hash support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5.4</td><td align="left"><code class="code">bitset</code> operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6</td><td align="left">Memory</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.6.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.6.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.6.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.10</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.11</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.12</td><td align="left">Specialized algorithms</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.6.12.1</td><td align="left"><code class="code">addressof</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.12.2</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.12.3</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.12.4</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6.13</td><td align="left">C library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7</td><td align="left">Smart pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.7.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7.2</td><td align="left">Shared-ownership pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.7.2.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7.2.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left">
    178 	  Uses code from
    179 	  <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
    180       </td></tr><tr><td align="left">20.7.2.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7.2.4</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7.2.5</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7.2.6</td><td align="left">Smart pointer hash support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8</td><td align="left">Function objects</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.1</td><td align="left">Definitions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.2</td><td align="left">Requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.3</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.4</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.5</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.6</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.7</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.8</td><td align="left">Negators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.9</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.10</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.11</td><td align="left">Polymorphic function wrappers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.11.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.11.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Partial</td><td align="left">Missing allocator support</td></tr><tr><td align="left">20.8.12</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9</td><td align="left">Metaprogramming and type traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.4.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7</td><td align="left">Transformations between types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7.6</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10</td><td align="left">Compile-time rational arithmetic</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.10.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code">&lt;ratio&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.4</td><td align="left">Arithmetic on <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.5</td><td align="left">Comparison of <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.6</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11</td><td align="left">Time utilities</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.11.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.4</td><td align="left">Time-related traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.11.4.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.4.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.4.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.7</td><td align="left">Clocks</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.11.7.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.7.2</td><td align="left">Class <code class="code">steady_clock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.7.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12</td><td align="left">Scoped allocator adaptor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.1</td><td align="left">Header <code class="code">&lt;scoped_allocator&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.12.2</td><td align="left">Scoped allocator adaptor member types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.3</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.4</td><td align="left">Scoped allocator adaptor members</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.5</td><td align="left">Scoped allocator operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.13</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    181 	<span class="emphasis"><em>21</em></span>
    182       </td><td colspan="3" align="left">
    183 	<span class="emphasis"><em>Strings</em></span>
    184       </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2</td><td align="left">Character traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.2.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2.2</td><td align="left">traits typedefs</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.2.3.1</td><td align="left">struct <code class="code">char_traits&lt;char&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2.3.2</td><td align="left">struct <code class="code">char_traits&lt;char16_t&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2.3.3</td><td align="left">struct <code class="code">char_traits&lt;char32_t&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2.3.4</td><td align="left">struct <code class="code">char_traits&lt;wchar_t&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.4</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.5</td><td align="left">Numeric Conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.6</td><td align="left">Hash support</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">21.7</td><td align="left">Null-terminated sequence utilities</td><td align="left">Partial</td><td align="left">C library dependency. </td></tr><tr><td align="left">
    185       	<span class="emphasis"><em>22</em></span>
    186       </td><td colspan="3" align="left">
    187 	<span class="emphasis"><em>Localization</em></span>
    188       </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2</td><td align="left">Header <code class="code">&lt;locale&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3</td><td align="left">Locales</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.3.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3.3</td><td align="left">Convenience interfaces</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.3.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3.3.2</td><td align="left">Conversions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.3.3.2.1</td><td align="left">Character conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3.3.2.2</td><td align="left"><code class="code">string</code> conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3.3.2.3</td><td align="left">Buffer conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4</td><td align="left">Standard <code class="code">locale</code> categories</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.4.1</td><td align="left">The <code class="code">ctype</code> category</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.2</td><td align="left">The numeric category</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.4.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.3</td><td align="left">The numeric punctuation facet</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.4</td><td align="left">The collate category</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.5</td><td align="left">The time category</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.4.5.1</td><td align="left">Class template <code class="code">time_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.5.2</td><td align="left">Class template <code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.5.3</td><td align="left">Class template <code class="code">time_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.5.3</td><td align="left">Class template <code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.6</td><td align="left">The monetary category</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.4.6.1</td><td align="left">Class template <code class="code">money_get</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.6.2</td><td align="left">Class template <code class="code">money_put</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.6.3</td><td align="left">Class template <code class="code">money_punct</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.6.4</td><td align="left">Class template <code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.7</td><td align="left">The message retrieval category</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.5</td><td align="left">Standard code conversion facets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.6</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    189 	<span class="emphasis"><em>23</em></span>
    190       </td><td colspan="3" align="left">
    191 	<span class="emphasis"><em>Containers</em></span>
    192       </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2</td><td align="left">Container requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2.1</td><td align="left">General container requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.2</td><td align="left">Container data races</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.3</td><td align="left">Sequence containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.4</td><td align="left">Associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.5</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3</td><td align="left">Sequence containers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">forward_list</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.5</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.6</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3.7</td><td align="left">Class <code class="code">vector&lt;bool&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.4</td><td align="left">Associative containers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.4.5</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.4.6</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.4.7</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5</td><td align="left">Unordered associative containers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.5.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5.5</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5.6</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5.7</td><td align="left">Class template <code class="code">unordered_multiset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.6</td><td align="left">Container adaptors</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.6.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.6.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.6.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    193 	<span class="emphasis"><em>24</em></span>
    194       </td><td colspan="3" align="left">
    195 	<span class="emphasis"><em>Iterators</em></span>
    196       </td></tr><tr><td align="left">24.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.2</td><td align="left">Iterator requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.3</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5</td><td align="left">Iterator adaptors</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">24.5.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5.3</td><td align="left">Move iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6</td><td align="left">Stream iterators</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">24.6.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6.5</td><td align="left">range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    197 	<span class="emphasis"><em>25</em></span>
    198       </td><td colspan="3" align="left">
    199 	<span class="emphasis"><em>Algorithms</em></span>
    200       </td></tr><tr><td align="left">25.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">25.2</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.3</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.4</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.5</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    201       <span class="emphasis"><em>26</em></span>
    202       </td><td colspan="3" align="left">
    203 	<span class="emphasis"><em>Numerics</em></span>
    204       </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.1</td><td align="left">Requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engine class templates</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptor class templates</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.4.4</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distribution class templates</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.2</td><td align="left">Uniform distributions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.3</td><td align="left">Bernoulli distributions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.4</td><td align="left">Poisson distributions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5</td><td align="left">Normal distributions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.5.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.6</td><td align="left">Sampling distributions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.5.8.6.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.6.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5.8.6.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code">&lt;valarray&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.6</td><td align="left">The <code class="code">gslice</code> class</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6.10</td><td align="left"><code class="code">valarray</code> range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.7.1</td><td align="left">Header <code class="code">&lt;numeric&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7.2</td><td align="left">Accumulate&gt;</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7.3</td><td align="left">Inner product</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7.4</td><td align="left">Partial sum</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7.5</td><td align="left">Adjacent difference</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7.6</td><td align="left">Iota</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    205 	<span class="emphasis"><em>27</em></span>
    206       </td><td colspan="3" align="left">
    207 	<span class="emphasis"><em>Input/output library</em></span>
    208       </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">27.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"></td></tr><tr><td align="left">27.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4.1</td><td align="left">Overview</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4.2</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4.3</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    209 	<span class="emphasis"><em>28</em></span>
    210       </td><td colspan="3" align="left">
    211 	<span class="emphasis"><em>Regular expressions</em></span>
    212       </td></tr><tr><td align="left">28.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"><code class="code">transform_primary</code> is not correctly implemented</td></tr><tr><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    213 	<span class="emphasis"><em>29</em></span>
    214       </td><td colspan="3" align="left">
    215 	<span class="emphasis"><em>Atomic operations</em></span>
    216       </td></tr><tr><td align="left">29.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.2</td><td align="left">Header <code class="code">&lt;atomic&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.3</td><td align="left">Order and consistency</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.4</td><td align="left">Lock-free property</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.5</td><td align="left">Atomic types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.6</td><td align="left">Operations on atomic types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.7</td><td align="left">Flag Type and operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8</td><td align="left">Fences</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    217 	<span class="emphasis"><em>30</em></span>
    218       </td><td colspan="3" align="left">
    219 	<span class="emphasis"><em>Thread support</em></span>
    220       </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.3</td><td align="left">Threads</td><td align="left"></td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">30.3.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left"><code class="code">thread::id</code> comparisons not well-defined</td></tr><tr><td align="left">30.3.2</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4</td><td align="left">Mutual exclusion</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1</td><td align="left">Mutex requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.2</td><td align="left">Mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.2.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.2.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.3</td><td align="left">Timed mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.3.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.3.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.2</td><td align="left">Locks</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.2.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.2.2</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.3</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.4</td><td align="left">Call once</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.4.1</td><td align="left">Struct <code class="code">once_flag</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">30.4.4.2</td><td align="left">Function <code class="code">call_once</code></td><td align="left">Y</td><td align="left">Exception support is broken.
    221 	See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
    222 	66146</a>.
    223       </td></tr><tr><td align="left">30.5</td><td align="left">Condition variables</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6</td><td align="left">Futures</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.6.1</td><td align="left">Overview</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.6.2</td><td align="left">Error handling</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.3</td><td align="left">Class <code class="code">future_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.4</td><td align="left">Shared state</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.5</td><td align="left">Class template <code class="code">promise</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.6</td><td align="left">Class template <code class="code">future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.7</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.8</td><td align="left">Function template <code class="code">async</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.9</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    224       	<span class="emphasis"><em>Appendix D</em></span>
    225       </td><td colspan="3" align="left">
    226 	<span class="emphasis"><em>Compatibility features</em></span>
    227       </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with <code class="code">bool</code> operand</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">register</code> keyword</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.3</td><td align="left">Implicit declaration of copy functions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.4</td><td align="left">Dynamic exception specifications</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.7</td><td align="left"><code class="code">char*</code> streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.8</td><td align="left">Function objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.9</td><td align="left">Binders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.10</td><td align="left"><code class="code">auto_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.11</td><td align="left">Violating exception-specifications</td><td align="left">Y</td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2011.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is also specified by the 1998 and 2003 standards,
    228       see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
    229       Specific Behavior</a>. This section only documents behaviour which
    230       is new in the 2011 standard.
    231    </p><p>
    232       <span class="emphasis"><em>17.6.5.12 [res.on.exception.handling]</em></span>
    233       There are no implementation-defined exception classes, only standard
    234       exception classes (or classes derived from them) will be thrown.
    235    </p><p>
    236       <span class="emphasis"><em>17.6.5.14 [value.error.codes]</em></span>
    237       The <code class="classname">error_category</code> for errors originating outside
    238       the OS, and the possible error code values for each error category,
    239       should be documented here.
    240    </p><p>
    241       <span class="emphasis"><em>18.6.2.2 [new.badlength]</em></span>
    242       <code class="function">what()</code> returns
    243       <code class="literal">"std::bad_array_new_length"</code>.
    244    </p><p>
    245       <span class="emphasis"><em>20.6.9.1 [allocator.member]/5</em></span>
    246       Over-aligned types are not supported by
    247       <code class="classname">std::allocator</code>.
    248    </p><p>
    249       <span class="emphasis"><em>20.7.2.2.1 [util.smartptr.shared.const]</em></span>
    250       When a <code class="classname">shared_ptr</code> constructor fails
    251       <code class="classname">bad_alloc</code> (or types derived from it) will
    252       be thrown, or when an allocator is passed to the constructor then any
    253       exceptions thrown by the allocator.
    254    </p><p>
    255       <span class="emphasis"><em>20.7.2.0 [util.smartptr.weakptr]</em></span>
    256       <code class="code">what()</code> returns <code class="literal">"bad_weak_ptr"</code>.
    257    </p><p>
    258       <span class="emphasis"><em>20.8.9.1.3 [func.bind.place]/1</em></span> There are 29
    259       placeholders defined and the placeholder types are
    260       <code class="literal">CopyAssignable</code>.
    261    </p><p>
    262       <span class="emphasis"><em>20.11.7.1 [time.clock.system]/3, /4</em></span>
    263       Time point values are truncated to <code class="code">time_t</code> values.
    264       There is no loss of precision for conversions in the other direction.
    265    </p><p>
    266       <span class="emphasis"><em>20.15.7 [meta.trans]/2</em></span>
    267       <code class="classname">aligned_storage</code> does not support extended
    268       alignment.
    269    </p><p>
    270       <span class="emphasis"><em>21.2.3.2 [char.traits.specializations.char16_t]</em></span>,
    271       <span class="emphasis"><em>21.2.3.3 [char.traits.specializations.char32_t]</em></span>
    272       The types <code class="classname">u16streampos</code> and
    273       <code class="classname">u32streampos</code> are both synonyms for
    274       <code class="classname">fpos&lt;mbstate_t&gt;</code>.
    275       The function <code class="function">eof</code> returns <code class="code">int_type(-1)</code>.
    276       <code class="function">char_traits&lt;char16_t&gt;::to_int_type</code> will
    277       transform the "noncharacter" U+FFFF to U+FFFD (REPLACEMENT CHARACTER).
    278       This is done to ensure that <code class="function">to_int_type</code> never
    279       returns the same value as <code class="function">eof</code>, which is U+FFFF.
    280    </p><p>
    281       <span class="emphasis"><em>22.3.1 [locale]</em></span>
    282       There is one global locale for the whole program, not per-thread.
    283    </p><p>
    284       <span class="emphasis"><em>22.4.5.1.2 [locale.time.get.virtuals]</em></span>,
    285       <span class="emphasis"><em>22.4.5.3.2 [locale.time.put.virtuals]</em></span>
    286       Additional supported formats should be documented here.
    287    </p><p>
    288       <span class="emphasis"><em> 22.4.7.1.2 [locale.messages.virtuals]</em></span>
    289       The mapping should be documented here.
    290    </p><p>
    291       <span class="emphasis"><em>23.3.2.1 [array.overview]</em></span>
    292       <code class="classname">array&lt;T, N&gt;::iterator</code> is <code class="code">T*</code> and
    293       <code class="classname">array&lt;T, N&gt;::const_iterator</code> is
    294       <code class="code">const T*</code>.
    295    </p><p>
    296       <span class="emphasis"><em>23.5.4.2 [unord.map.cnstr]</em></span>,
    297       <span class="emphasis"><em>23.5.5.2 [unord.multimap.cnstr]</em></span>,
    298       <span class="emphasis"><em>23.5.6.2 [unord.set.cnstr]</em></span>,
    299       <span class="emphasis"><em>23.5.7.2 [unord.multiset.cnstr]</em></span>
    300       The default minimal bucket count is 0 for the default constructors, range
    301       constructors and initializer-list constructors.
    302    </p><p>
    303       <span class="emphasis"><em>25.3.12 [alg.random.shuffle]</em></span>
    304       The two-argument overload of <code class="function">random_shuffle</code>
    305       uses <code class="function">rand</code> as the source of randomness.
    306    </p><p>
    307       <span class="emphasis"><em>26.5.5 [rand.predef]</em></span>
    308       The type <code class="classname">default_random_engine</code> is a synonym for
    309       <code class="classname">minstd_rand0</code>.
    310    </p><p>
    311       <span class="emphasis"><em> 26.5.6 [rand.device] </em></span>
    312       The <code class="code">token</code> parameter of the
    313       <code class="classname">random_device</code> constructor can be used to select
    314       a specific source of random bytes. The valid token values are shown
    315       in the list below.
    316       The default constructor uses the token <code class="literal">"default"</code>.
    317       </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">"default"</code></span></dt><dd>
    318           Select the first available source from the other entries below.
    319           This is the only token that is always valid.
    320         </dd><dt><span class="term"><code class="literal">"rand_s"</code></span></dt><dd>
    321           Use the MSVCRT <code class="function">rand_s</code> function.
    322           This token is only valid for mingw-w64 targets.
    323         </dd><dt><span class="term"><code class="literal">"rdseed"</code>, </span><span class="term"><code class="literal">"rdrand"</code> or <code class="literal">"rdrnd"</code></span></dt><dd>
    324           Use the IA-32 <code class="literal">RDSEED</code> or <code class="literal">RDRAND</code>
    325           instruction to read from an on-chip hardware random number generator.
    326           These tokens are only valid for x86 and x86_64 targets when both
    327           the assembler and CPU support the corresponding instruction.
    328         </dd><dt><span class="term"><code class="literal">"darn"</code></span></dt><dd>
    329           Use the Power ISA-3.0 <code class="literal">DARN</code>
    330           ("Deliver A Random Number")
    331           instruction to read from an on-chip hardware random number generator.
    332           This token is only valid for 64-bit powerpc targets when both
    333           the assembler and CPU support the corresponding instruction.
    334         </dd><dt><span class="term"><code class="literal">"hw"</code>, </span><span class="term"><code class="literal">"hardware"</code></span></dt><dd>
    335           Use any available CPU
    336           instruction to read from an on-chip hardware random number generator.
    337           This is equivalent to trying each of the following and using the
    338           first that is supported:
    339           <code class="literal">"rdseed"</code><code class="literal">"rdrand"</code><code class="literal">"darn"</code></dd><dt><span class="term"><code class="literal">"arc4random"</code>, </span><span class="term"><code class="literal">"getentropy"</code></span></dt><dd>
    340           Use the named C library function, if available on the target.
    341         </dd><dt><span class="term"><code class="literal">"/dev/urandom"</code>, </span><span class="term"><code class="literal">"/dev/random"</code></span></dt><dd>
    342           Use the named character special file to read random bytes from.
    343           These tokens are only valid when the device files are present
    344           and readable by the current user.
    345         </dd><dt><span class="term"><code class="literal">"mt19937"</code>, </span><span class="term">seed value</span></dt><dd>
    346           When no source of nondeterministic random numbers is available a
    347           <code class="classname">mersenne_twister_engine</code> will be used.
    348           An integer seed value can be used as the token and will be converted
    349           to an <code class="code">unsigned long</code> using <code class="function">strtoul</code>.
    350           These tokens are only valid when no other source of random bytes
    351           is available.
    352         </dd></dl></div><p>
    353       An exception of type <code class="classname">runtime_error</code> will be
    354       thrown if a <code class="classname">random_device</code> object is constructed
    355       with an invalid token, or if it cannot open or read from the source
    356       of random bytes.
    357    </p><p>
    358       <span class="emphasis"><em>26.5.8.1 [rand.dist.general]</em></span>
    359       The algorithms used by the distributions should be documented here.
    360    </p><p>
    361       <span class="emphasis"><em>26.8 [c.math]</em></span> Whether the
    362       <code class="function">rand</code> function introduces data races depends on
    363       the C library as the function is not provided by libstdc++.
    364    </p><p>
    365       <span class="emphasis"><em>27.8.2.1 [stringbuf.cons]</em></span>
    366       Whether the sequence pointers are copied by the
    367       <code class="classname">basic_stringbuf</code> move constructor should be
    368       documented here.
    369    </p><p>
    370       <span class="emphasis"><em>27.9.1.2 [filebuf.cons]</em></span>
    371       Whether the sequence pointers are copied by the
    372       <code class="classname">basic_filebuf</code> move constructor should be
    373       documented here.
    374    </p><p>
    375       <span class="emphasis"><em>28.5.1 [re.synopt]</em></span>,
    376       <span class="emphasis"><em> 28.5.2 [re.matchflag] </em></span>,
    377       <span class="emphasis"><em> 28.5.3 [re.err] </em></span>
    378       <code class="code">syntax_option_type</code>, <code class="code">match_flag_type</code>
    379       and <code class="code">error_type</code> are unscoped enumeration types.
    380    </p><p>
    381       <span class="emphasis"><em>28.7 [re.traits]</em></span>
    382       The <code class="literal">blank</code> character class corresponds to the
    383       <code class="code">ctype_base::blank</code> mask.
    384    </p><p>
    385       <span class="emphasis"><em>29.4 [atomics.lockfree]</em></span>
    386       The values of the <code class="code">ATOMIC_xxx_LOCK_FREE</code> macros depend on
    387       the target and cannot be listed here.
    388    </p><p>
    389       <span class="emphasis"><em>30.2.3 [thread.req.native]/1</em></span>
    390       <code class="classname">native_handle_type</code> and
    391       <code class="methodname">native_handle</code> are provided. The handle types
    392       are defined in terms of the Gthreads abstraction layer, although this
    393       is subject to change at any time. Any use of
    394       <code class="classname">native_handle</code> is inherently non-portable and
    395       not guaranteed to work between major releases of GCC.
    396       </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="classname">thread</code></span></dt><dd>
    397             The native handle type is a typedef for <code class="code">__gthread_t</code>
    398             i.e. <code class="code">pthread_t</code> when GCC is configured with the
    399             <code class="literal">posix</code> thread model.
    400             The value of the native handle is undefined for a thread
    401             which is not joinable.
    402          </dd><dt><span class="term"><code class="classname">mutex</code>, </span><span class="term"><code class="classname">timed_mutex</code></span></dt><dd>
    403             The native handle type is <code class="code">__gthread_mutex_t*</code> i.e.
    404             <code class="code">pthread_mutex_t*</code> for the <code class="literal">posix</code>
    405             thread model.
    406          </dd><dt><span class="term"><code class="classname">recursive_mutex</code>, </span><span class="term"><code class="classname">recursive_timed_mutex</code></span></dt><dd>
    407             The native handle type is <code class="code">__gthread_recursive_mutex_t*</code>
    408             i.e. <code class="code">pthread_mutex_t*</code> for the <code class="literal">posix</code>
    409             thread model.
    410          </dd><dt><span class="term"><code class="classname">condition_variable</code></span></dt><dd>
    411             The native handle type is <code class="code">__gthread_cond_t*</code> i.e.
    412             <code class="code">pthread_cond_t*</code> for the <code class="literal">posix</code>
    413             thread model.
    414          </dd></dl></div><p>
    415    </p><p>
    416       <span class="emphasis"><em>30.6.1 [futures.overview]/2</em></span>
    417       <code class="code">launch</code> is a scoped enumeration type with
    418       overloaded operators to support bitmask operations. There are no
    419       additional bitmask elements defined.
    420    </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2014"></a>C++ 2014</h3></div></div></div><p>
    421 In this implementation the <code class="literal">-std=gnu++14</code> or
    422 <code class="literal">-std=c++14</code> flag must be used to enable language
    423 and library
    424 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
    425 options. The pre-defined symbol
    426 <code class="constant">__cplusplus</code> is used to check for the
    427 presence of the required flag.
    428 GCC 6.1 was the first release with non-experimental C++14 support,
    429 so the API and ABI of features added in C++14 is only stable
    430 since that release.
    431 </p><p>
    432 This status table is based on the table of contents of ISO/IEC 14882:2014.
    433 Some subclauses are not shown in the table where the content is unchanged
    434 since C++11 and the implementation is complete.
    435 </p><p>
    436 This section describes the C++14 and library TS support in
    437 the GCC 14 release series.
    438 </p><div class="table"><a id="table.cxx14_status"></a><p class="title"><strong>Table1.3.C++ 2014 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2014 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
    439 	<span class="emphasis"><em>18</em></span>
    440       </td><td colspan="3" align="left">
    441 	<span class="emphasis"><em>Language support</em></span>
    442       </td></tr><tr><td align="left">18.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.2</td><td align="left">Types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3</td><td align="left">Implementation properties</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.3.2</td><td align="left">Numeric Limits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.3.2.3</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3.2.4</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.2.5</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.2.6</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">18.3.2.7</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.3.3</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.4</td><td align="left">Integer types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.4.1</td><td align="left">Header <code class="code">&lt;cstdint&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">18.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td align="left">18.6</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7</td><td align="left">Type identification</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.7.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7.2</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.7.3</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8</td><td align="left">Exception handling</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.8.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.2</td><td align="left">Class bad_exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.5</td><td align="left">Exception Propagation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.8.6</td><td align="left"><code class="code">nested_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9</td><td align="left">Initializer lists</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">18.9.1</td><td align="left">Initializer list constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9.2</td><td align="left">Initializer list access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.9.3</td><td align="left">Initializer list range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">18.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    443 	<span class="emphasis"><em>19</em></span>
    444       </td><td colspan="3" align="left">
    445 	<span class="emphasis"><em>Diagnostics</em></span>
    446       </td></tr><tr><td align="left">19.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">19.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5</td><td align="left">System error support</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">19.5.1</td><td align="left">Class <code class="code">error_category</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.2</td><td align="left">Class <code class="code">error_code</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.3</td><td align="left">Class <code class="code">error_condition</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.4</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">19.5.5</td><td align="left">Class <code class="code">system_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    447 	<span class="emphasis"><em>20</em></span>
    448       </td><td colspan="3" align="left">
    449 	<span class="emphasis"><em>General utilities</em></span>
    450       </td></tr><tr><td align="left">20.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.2</td><td align="left">Utility components</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.2</td><td align="left">swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.3</td><td align="left">exchange</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.4</td><td align="left">forward/move helpers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.2.5</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.3</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.4</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5</td><td align="left">Compile-time integer sequences</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.5.2</td><td align="left">Class template <code class="code">integer_sequence</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.5.3</td><td align="left">Alias template <code class="code">make_integer_sequence</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.6</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.7</td><td align="left">Memory</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8</td><td align="left">Smart pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.1.1</td><td align="left">Default deleters</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.1.2</td><td align="left"><code class="code">unique_ptr</code> for single objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.1.3</td><td align="left"><code class="code">unique_ptr</code> for array objects with a runtime length</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.1.4</td><td align="left"><code class="code">unique_ptr</code> creation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.1.5</td><td align="left"><code class="code">unique_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2</td><td align="left">Shared-ownership pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.8.2.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left">
    451 	  Uses code from
    452 	  <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
    453       </td></tr><tr><td align="left">20.8.2.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2.4</td><td align="left">Class template <code class="code">owner_less</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2.6</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.2.7</td><td align="left">Smart pointer hash support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9</td><td align="left">Function objects</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.1</td><td align="left">Definitions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.2</td><td align="left">Requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.3</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.4</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.5</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.8.6</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.7</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.8</td><td align="left">Negators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.9</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.10</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.9.11</td><td align="left">Polymorphic function wrappers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.9.11.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">20.9.11.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Partial</td><td align="left">Missing allocator support</td></tr><tr><td align="left">20.9.12</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10</td><td align="left">Metaprogramming and type traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.10.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.10.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.10.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.11</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12</td><td align="left">Time utilities</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">20.12.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.5.8</td><td align="left">Suffixes for duration literals</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.12.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.13</td><td align="left">Scoped allocator adaptor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">20.14</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    454 	<span class="emphasis"><em>21</em></span>
    455       </td><td colspan="3" align="left">
    456 	<span class="emphasis"><em>Strings</em></span>
    457       </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.2</td><td align="left">Character traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.4</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.5</td><td align="left">Numeric Conversions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.6</td><td align="left">Hash support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.7</td><td align="left">Suffixes for <code class="code">basic_string</code> literals</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">21.7</td><td align="left">Null-terminated sequence utilities</td><td align="left">Partial</td><td align="left">C library dependency. </td></tr><tr><td align="left">
    458 	<span class="emphasis"><em>22</em></span>
    459       </td><td colspan="3" align="left">
    460 	<span class="emphasis"><em>Localization</em></span>
    461       </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.2</td><td align="left">Header <code class="code">&lt;locale&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3</td><td align="left">Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4</td><td align="left">Standard <code class="code">locale</code> categories</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.5</td><td align="left">Standard code conversion facets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.6</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    462 	<span class="emphasis"><em>23</em></span>
    463       </td><td colspan="3" align="left">
    464 	<span class="emphasis"><em>Containers</em></span>
    465       </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2</td><td align="left">Container requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.3</td><td align="left">Sequence containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.4</td><td align="left">Associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.6</td><td align="left">Container adaptors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    466 	<span class="emphasis"><em>24</em></span>
    467       </td><td colspan="3" align="left">
    468 	<span class="emphasis"><em>Iterators</em></span>
    469       </td></tr><tr><td align="left">24.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.2</td><td align="left">Iterator requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.3</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.5</td><td align="left">Iterator adaptors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.6</td><td align="left">Stream iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.7</td><td align="left">range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    470 	<span class="emphasis"><em>25</em></span>
    471       </td><td colspan="3" align="left">
    472 	<span class="emphasis"><em>Algorithms</em></span>
    473       </td></tr><tr><td align="left">25.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">25.2</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.3</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.4</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.5</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    474       <span class="emphasis"><em>26</em></span>
    475       </td><td colspan="3" align="left">
    476 	<span class="emphasis"><em>Numerics</em></span>
    477       </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4.10</td><td align="left">Suffixes for complex number literals</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    478 	<span class="emphasis"><em>27</em></span>
    479       </td><td colspan="3" align="left">
    480 	<span class="emphasis"><em>Input/output library</em></span>
    481       </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">27.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"></td></tr><tr><td align="left">27.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.7.6</td><td align="left">Quoted manipulators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    482 	<span class="emphasis"><em>28</em></span>
    483       </td><td colspan="3" align="left">
    484 	<span class="emphasis"><em>Regular expressions</em></span>
    485       </td></tr><tr><td align="left">28.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"><code class="code">transform_primary</code> is not correctly implemented</td></tr><tr><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    486 	<span class="emphasis"><em>29</em></span>
    487       </td><td colspan="3" align="left">
    488 	<span class="emphasis"><em>Atomic operations</em></span>
    489       </td></tr><tr><td align="left">29.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.2</td><td align="left">Header <code class="code">&lt;atomic&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.3</td><td align="left">Order and consistency</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.4</td><td align="left">Lock-free property</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.5</td><td align="left">Atomic types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.6</td><td align="left">Operations on atomic types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.7</td><td align="left">Flag Type and operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8</td><td align="left">Fences</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    490 	<span class="emphasis"><em>30</em></span>
    491       </td><td colspan="3" align="left">
    492 	<span class="emphasis"><em>Thread support</em></span>
    493       </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.3</td><td align="left">Threads</td><td align="left"></td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">30.3.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left"><code class="code">thread::id</code> comparisons not well-defined</td></tr><tr><td align="left">30.3.2</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4</td><td align="left">Mutual exclusion</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1</td><td align="left">Mutex requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.2</td><td align="left">Mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.2.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.2.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.3</td><td align="left">Timed mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.3.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.3.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.1.4</td><td align="left">Shared timed mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.1.4.1</td><td align="left">Class <code class="code">shared_timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.2</td><td align="left">Locks</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.2.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.2.2</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.2.3</td><td align="left">Class template <code class="code">shared_lock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.3</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4.4</td><td align="left">Call once</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.4.4.1</td><td align="left">Struct <code class="code">once_flag</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">30.4.4.2</td><td align="left">Function <code class="code">call_once</code></td><td align="left">Broken</td><td align="left">Exception support is broken.
    494 	See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
    495 	66146</a>.
    496       </td></tr><tr><td align="left">30.5</td><td align="left">Condition variables</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6</td><td align="left">Futures</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.6.1</td><td align="left">Overview</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">30.6.2</td><td align="left">Error handling</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.3</td><td align="left">Class <code class="code">future_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.4</td><td align="left">Shared state</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.5</td><td align="left">Class template <code class="code">promise</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.6</td><td align="left">Class template <code class="code">future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.7</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.8</td><td align="left">Function template <code class="code">async</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6.9</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    497 	<span class="emphasis"><em>Appendix D</em></span>
    498       </td><td colspan="3" align="left">
    499 	<span class="emphasis"><em>Compatibility features</em></span>
    500       </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with <code class="code">bool</code> operand</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">register</code> keyword</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.3</td><td align="left">Implicit declaration of copy functions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.4</td><td align="left">Dynamic exception specifications</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.7</td><td align="left"><code class="code">char*</code> streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.8</td><td align="left">Function objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.9</td><td align="left">Binders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.10</td><td align="left"><code class="code">auto_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.11</td><td align="left">Violating exception-specifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.12</td><td align="left">Random shuffle</td><td align="left">Y</td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.ts_status"></a><p class="title"><strong>Table1.4.C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr bgcolor="#C8B0B0"><td align="left">
    501 	<a class="link" href="https://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3662.html" target="_top">
    502 	  N3662
    503 	</a>
    504       </td><td align="left">C++ Dynamic Arrays</td><td align="left">N</td><td align="left">Array Extensions TS</td></tr><tr><td align="left">
    505 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3793.html" target="_top">
    506 	  N3793
    507 	</a>
    508       </td><td align="left">A proposal to add a utility class to represent optional objects</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    509 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3804.html" target="_top">
    510 	  N3804
    511 	</a>
    512       </td><td align="left">Any library proposal</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr bgcolor="#C8B0B0"><td align="left">
    513 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3866.html" target="_top">
    514 	  N3866
    515 	</a>
    516       </td><td align="left">Invocation type traits, but dropping function_call_operator.</td><td align="left">N</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    517 	<a class="link" href="" target="_top">
    518 	  N3905
    519 	</a>
    520       </td><td align="left">Faster string searching (Boyer-Moore et al.)</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    521 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3915.pdf" target="_top">
    522 	  N3915
    523 	</a>
    524       </td><td align="left">apply() call a function with arguments from a tuple</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr bgcolor="#B0B0B0"><td align="left">
    525 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3916.pdf" target="_top">
    526 	  N3916
    527 	</a>
    528       </td><td align="left">Polymorphic memory resources</td><td align="left">Partial (missing pool resource and buffer resource classes)</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    529 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3920.html" target="_top">
    530 	  N3920
    531 	</a>
    532       </td><td align="left">Extending shared_ptr to support arrays</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    533 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3921.html" target="_top">
    534 	  N3921
    535 	</a>
    536       </td><td align="left"><code class="code">string_view</code>: a non-owning reference to a string</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    537 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3925.pdf" target="_top">
    538 	  N3925
    539 	</a>
    540       </td><td align="left">A sample proposal</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    541 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3932.htm" target="_top">
    542 	  N3932
    543 	</a>
    544       </td><td align="left">Variable Templates For Type Traits</td><td align="left">Y</td><td align="left">Library Fundamentals TS</td></tr><tr><td align="left">
    545 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf" target="_top">
    546 	  N4100
    547 	</a>
    548       </td><td align="left">File System</td><td align="left">Y</td><td align="left">
    549 	Link with
    550 	<a class="link" href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental" title="Experimental Library Extensions">
    551 	<code class="option">-lstdc++fs</code></a>
    552       </td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2014.specific"></a>Implementation Specific Behavior</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="iso.2014.filesystemts"></a>Filesystem TS</h5></div></div></div><p>
    553       <span class="emphasis"><em>2.1 POSIX conformance [fs.conform.9945]</em></span>
    554       The behavior of the filesystem library implementation will depend on
    555       the target operating system. Some features will not be supported
    556       on some targets. Symbolic links and file permissions
    557       are not supported on Windows.
    558     </p><p>
    559       <span class="emphasis"><em>15.30 Rename [fs.op.rename]</em></span>
    560       On Windows, <code class="code">experimental::filesystem::rename</code>
    561       is implemented by calling <code class="code">MoveFileExW</code> and so
    562       does not meet the requirements of POSIX <code class="code">rename</code>
    563       when one or both of the paths resolves to an existing directory.
    564       Specifically, it is possible to rename a directory so it replaces
    565       a non-directory (POSIX requires an error in that case),
    566       and it is not possible to rename a directory to replace another
    567       directory (POSIX requires that to work if the directory being
    568       replaced is empty).
    569     </p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2017"></a>C++ 2017</h3></div></div></div><p>
    570 In this implementation the <code class="literal">-std=gnu++17</code> or
    571 <code class="literal">-std=c++17</code> flag must be used to enable language
    572 and library
    573 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
    574 options. The pre-defined symbol
    575 <code class="constant">__cplusplus</code> is used to check for the
    576 presence of the required flag.
    577 GCC 9.1 was the first release with non-experimental C++17 support,
    578 so the API and ABI of features added in C++17 is only stable
    579 since that release.
    580 </p><p>
    581 This section describes the C++17 and library TS support in
    582 the GCC 14 release series.
    583 </p><p>
    584 The following table lists new library features that are included in
    585 the C++17 standard. The "Proposal" column provides a link to the
    586 ISO C++ committee proposal that describes the feature, while the "Status"
    587 column indicates the first version of GCC that contains an implementation of
    588 this feature (if it has been implemented).
    589 The "SD-6 Feature Test" column shows the corresponding macro or header from
    590 <a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
    591 Feature-testing recommendations for C++</a>.
    592 </p><div class="table"><a id="table.cxx17_features"></a><p class="title"><strong>Table1.5.C++ 2017 Library Features</strong></p><div class="table-contents"><table class="table" summary="C++ 2017 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</th></tr></thead><tbody><tr><td align="left">
    593 	<code class="code">constexpr std::hardware_{constructive,destructive}_interference_size</code>
    594       </td><td align="left">
    595 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html" target="_top">
    596 	P0154R1
    597 	</a>
    598       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_hardware_interference_size &gt;= 201603</code> </td></tr><tr><td align="left"> Core Issue 1776: Replacement of class objects containing reference members</td><td align="left">
    599 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html" target="_top">
    600 	P0137R1
    601 	</a>
    602       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__cpp_lib_launder &gt;= 201606</code> </td></tr><tr><td align="left">Wording for <code class="code">std::uncaught_exceptions</code></td><td align="left">
    603 	<a class="link" href="https://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf" target="_top">
    604 	  N4259
    605 	</a>
    606       </td><td align="center">6.1</td><td align="left"><code class="code">__cpp_lib_uncaught_exceptions &gt;= 201411</code></td></tr><tr><td align="left"> C++17 should refer to C11 instead of C99 </td><td align="left">
    607 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html" target="_top">
    608 	P0063R3
    609 	</a>
    610       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td align="left"> Variant: a type-safe union for C++17 </td><td align="left">
    611 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html" target="_top">
    612 	P0088R3
    613 	</a>
    614       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;variant&gt;)</code>,
    615               <code class="code">__cpp_lib_variant &gt;= 201603</code>
    616               (since 7.3, see Note 1)
    617       </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">optional</code> </td><td align="left">
    618 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    619 	P0220R1
    620 	</a>
    621       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;optional&gt;)</code>,
    622               <code class="code">__cpp_lib_optional &gt;= 201603</code>
    623               (since 7.3, see Note 1)
    624       </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">any</code> </td><td align="left">
    625 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    626 	P0220R1
    627 	</a>
    628       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;any&gt;)</code>,
    629               <code class="code">__cpp_lib_any &gt;= 201603</code>
    630               (since 7.3, see Note 1)
    631       </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">string_view</code> </td><td align="left">
    632 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    633 	P0220R1
    634 	</a>
    635       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;string_view&gt;)</code>,
    636               <code class="code">__cpp_lib_string_view &gt;= 201603</code>
    637               (since 7.3, see Note 1)
    638       </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">memory_resource</code> </td><td align="left">
    639 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    640 	P0220R1
    641 	</a>
    642       </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__has_include(&lt;memory_resource&gt;)</code>,
    643               <code class="code">__cpp_lib_memory_resource &gt;= 201603</code>
    644       </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">apply</code> </td><td align="left">
    645 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    646 	P0220R1
    647 	</a>
    648       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__cpp_lib_apply &gt;= 201603</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">shared_ptr&lt;T[]&gt;</code> </td><td align="left">
    649 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    650 	P0220R1
    651 	</a>
    652       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__cpp_lib_shared_ptr_arrays &gt;= 201603</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: Searchers </td><td align="left">
    653 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    654 	P0220R1
    655 	</a>
    656       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__cpp_lib_boyer_moore_searcher &gt;= 201603</code> </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: Sampling </td><td align="left">
    657 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
    658 	P0220R1
    659 	</a>
    660       </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__cpp_lib_sample &gt;= 201603</code> </td></tr><tr><td align="left"> Constant View: A proposal for a <code class="code">std::as_const</code> helper function template	</td><td align="left">
    661 	<a class="link" href="" target="_top">
    662 	P0007R1
    663 	</a>
    664       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_as_const &gt;= 201510 </code></td></tr><tr><td align="left"> Improving pair and tuple </td><td align="left">
    665 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387" target="_top">
    666 	N4387
    667 	</a>
    668       </td><td align="center"> 6.1 </td><td align="left"> N/A </td></tr><tr><td align="left"> <code class="code">make_from_tuple</code>: apply for construction </td><td align="left">
    669 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf" target="_top">
    670 	P0209R2
    671 	</a>
    672       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_make_from_tuple &gt;= 201606 </code></td></tr><tr bgcolor="#C8B0B0"><td align="left">
    673         Removing <code class="code">auto_ptr</code>, <code class="code">random_shuffle()</code>,
    674         And Old <code class="code">&lt;functional&gt;</code> Stuff
    675       </td><td align="left">
    676 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm" target="_top">
    677 	  N4190
    678 	</a>
    679       </td><td align="center">No (kept for backwards compatibility)</td><td align="left"></td></tr><tr><td align="left"> Deprecating Vestigial Library Parts in C++17 </td><td align="left">
    680 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html" target="_top">
    681 	P0174R2
    682 	</a>
    683       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> Making <code class="code">std::owner_less</code> more flexible </td><td align="left">
    684 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html" target="_top">
    685 	P0074R0
    686 	</a>
    687       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_transparent_operators &gt;= 201510 </code></td></tr><tr><td align="left"> <code class="code">std::addressof</code> should be constexpr </td><td align="left">
    688 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296" target="_top">
    689 	LWG2296
    690 	</a>
    691       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_addressof_constexpr &gt;= 201603 </code></td></tr><tr><td align="left"> Safe conversions in <code class="code">unique_ptr&lt;T[]&gt;</code> </td><td align="left">
    692 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf" target="_top">
    693 	N4089
    694 	</a>
    695       </td><td align="center"> 6 </td><td align="left"></td></tr><tr><td align="left"> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </td><td align="left">
    696 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html" target="_top">
    697 	  N4366
    698 	</a>
    699       </td><td align="center"> 6 </td><td align="left"></td></tr><tr><td align="left"> Re-enabling <code class="code">shared_from_this</code></td><td align="left">
    700 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html" target="_top">
    701 	P0033R1
    702 	</a>
    703       </td><td align="center"> 7.1 </td><td align="left"><code class="code">__cpp_lib_enable_shared_from_this &gt;= 201603</code></td></tr><tr><td align="left"> A proposal to add <code class="code">invoke</code> function template </td><td align="left">
    704 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html" target="_top">
    705 	N4169
    706 	</a>
    707       </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_invoke &gt;= 201411 </code></td></tr><tr><td align="left">TriviallyCopyable <code class="code">reference_wrapper</code> </td><td align="left">
    708 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html" target="_top">
    709 	  N4277
    710 	</a>
    711       </td><td align="center"> 5.1 </td><td align="left"></td></tr><tr><td align="left"> Adopt <code class="code">not_fn</code> from Library Fundamentals 2 for C++17 </td><td align="left">
    712 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html" target="_top">
    713 	P0005R4
    714 	</a>
    715       </td><td align="center"> 7.1 </td><td align="left"><code class="code">__cpp_lib_not_fn &gt;= 201603</code></td></tr><tr><td align="left"> Fixes for <code class="code">not_fn</code> </td><td align="left">
    716 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html" target="_top">
    717 	P0358R1
    718 	</a>
    719       </td><td align="center"> 7.1 </td><td align="left"></td></tr><tr><td align="left"> Fixing a design mistake in the searchers interface in Library Fundamentals </td><td align="left">
    720 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf" target="_top">
    721 	P0253R1
    722 	</a>
    723       </td><td align="center"> 7.1 </td><td align="left"></td></tr><tr><td align="left"> Extending memory management tools </td><td align="left">
    724 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top">
    725 	P0040R3
    726 	</a>
    727       </td><td align="center"> 7.1 </td><td align="left"><code class="code">__cpp_lib_raw_memory_algorithms &gt;= 201606L</code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left">
    728 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top">
    729 	P0163R0
    730 	</a>
    731       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_shared_ptr_weak_type &gt;= 201606</code></td></tr><tr><td align="left">Transformation Trait Alias <code class="code">void_t</code></td><td align="left">
    732 	<a class="link" href="https://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf" target="_top">
    733 	  N3911
    734 	</a>
    735       </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_void_t &gt;= 201411</code></td></tr><tr><td align="left"> Wording for <code class="code">bool_constant</code>, revision 1 </td><td align="left">
    736 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html" target="_top">
    737 	  N4389
    738 	</a>
    739       </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_bool_constant &gt;= 201505</code></td></tr><tr><td align="left"> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</td><td align="left">
    740 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html" target="_top">
    741 	P0006R0
    742 	</a>
    743       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_type_trait_variable_templates &gt;= 201510 </code></td></tr><tr><td align="left"> Logical Operator Type Traits</td><td align="left">
    744 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html" target="_top">
    745 	P0013R1
    746 	</a>
    747       </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_logical_traits &gt;= 201510 </code></td></tr><tr><td align="left"> Adding [nothrow-]swappable traits </td><td align="left">
    748 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html" target="_top">
    749 	P0185R1
    750 	</a>
    751       </td><td align="center"> 7.1 (<code class="code">__is_swappable</code> available since 6.1)</td><td align="left"><code class="code"> __cpp_lib_is_swappable &gt;= 201603 </code></td></tr><tr><td align="left"> <code class="code">is_callable</code>, the missing INVOKE related trait</td><td align="left">
    752 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html" target="_top">
    753 	P0077R2
    754 	</a>
    755       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_is_invocable &gt;= 201703 </code></td></tr><tr><td align="left"> has_unique_object_representations </td><td align="left">
    756 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html" target="_top">
    757 	P0258R2
    758 	</a>
    759       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_has_unique_object_representations &gt;= 201606 </code></td></tr><tr><td align="left"> Polishing <code class="code">&lt;chrono&gt;</code> </td><td align="left">
    760 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html" target="_top">
    761 	P0092R1
    762 	</a>
    763       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_chrono &gt;= 201510 </code></td></tr><tr><td align="left"> Adding more constexpr to <code class="code">&lt;chrono&gt;</code> </td><td align="left">
    764 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html" target="_top">
    765 	P0505R0
    766 	</a>
    767       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_chrono &gt;= 201611 </code>
    768              (since 7.3, see Note 2)
    769       </td></tr><tr><td align="left"> Constexpr for <code class="code">std::char_traits</code> </td><td align="left">
    770 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html" target="_top">
    771 	P0426R1
    772 	</a>
    773       </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __cpp_lib_constexpr_string &gt;= 201611 </code></td></tr><tr><td align="left"> Integrating <code class="code">std::string_view</code> and <code class="code">std::string</code> </td><td align="left">
    774 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf" target="_top">
    775 	P0254R2
    776 	</a>
    777       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left"> Give 'std::string' a non-const '.data()' member function </td><td align="left">
    778 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html" target="_top">
    779 	P0272R1
    780 	</a>
    781       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left">Cleaning-up noexcept in the Library</td><td align="left">
    782 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf" target="_top">
    783 	  N4258
    784 	</a>
    785       </td><td align="center">6.1</td><td align="left"><code class="code"> __cpp_lib_allocator_traits_is_always_equal &gt;= 201411 </code></td></tr><tr><td align="left">Contiguous Iterators </td><td align="left">
    786 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html" target="_top">
    787 	  N4284
    788 	</a>
    789       </td><td align="center">N/A</td><td align="left"></td></tr><tr><td align="left"> Minimal incomplete type support for standard containers </td><td align="left">
    790 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html" target="_top">
    791 	N4510
    792 	</a>
    793       </td><td align="center"> 3.0 </td><td align="left"><code class="code"> __cpp_lib_incomplete_container_elements &gt;= 201505 </code>
    794 	     (since 6.2, see Note 2)
    795       </td></tr><tr><td align="left"> Emplace return type </td><td align="left">
    796 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf" target="_top">
    797 	P0084R2
    798 	</a>
    799       </td><td align="center"> 7.1 </td><td align="left"></td></tr><tr><td align="left">Improved insertion interface for unique-key maps</td><td align="left">
    800 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html" target="_top">
    801 	  N4279
    802 	</a>
    803       </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_map_try_emplace &gt;= 201411</code>,
    804 	     <code class="code"> __cpp_lib_unordered_map_try_emplace &gt;= 201411</code>
    805       </td></tr><tr><td align="left"> Splicing Maps and Sets </td><td align="left">
    806 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf" target="_top">
    807 	P0083R3
    808 	</a>
    809       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_node_extract &gt;= 201606 </code></td></tr><tr><td align="left">Non-member <code class="code">size()</code> and more</td><td align="left">
    810 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf" target="_top">
    811 	  N4280
    812 	</a>
    813       </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_nonmember_container_access &gt;= 201411 </code></td></tr><tr><td align="left"> A Proposal to Add Constexpr Modifiers to <code class="code">reverse_iterator</code>, <code class="code">move_iterator</code>, <code class="code">array</code> and Range Access </td><td align="left">
    814 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html" target="_top">
    815 	P0031R0
    816 	</a>
    817       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_array_constexpr &gt;= 201603 </code></td></tr><tr bgcolor="#B0B0B0"><td align="left"> The Parallelism TS Should be Standardized	 </td><td align="left">
    818 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html" target="_top">
    819 	P0024R2
    820 	</a>
    821       </td><td align="center"> 9.1 </td><td align="left"><code class="code"> __has_include(&lt;execution&gt;)</code>,
    822 	     <code class="code"> __cpp_lib_execution &gt;= 201603 </code>,
    823 	     <code class="code"> __cpp_lib_parallel_algorithm &gt;= 201603 </code>
    824              (requires linking with <code class="code">-ltbb</code>, see Note 3)
    825       </td></tr><tr><td align="left"> An algorithm to "clamp" a value between a pair of boundary values </td><td align="left">
    826 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html" target="_top">
    827 	P0025R0
    828 	</a>
    829       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_clamp &gt;= 201603 </code></td></tr><tr><td align="left"> Adopt Selected Library Fundamentals V2 Components for C++17 </td><td align="left">
    830 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf" target="_top">
    831 	P0295R0
    832 	</a>
    833       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_gcd_lcm &gt;= 201606 </code></td></tr><tr><td align="left"> Proposal to Introduce a 3-Argument Overload to <code class="code">std::hypot</code> </td><td align="left">
    834 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf" target="_top">
    835 	P0030R1
    836 	</a>
    837       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_hypot &gt;= 201603 </code></td></tr><tr><td align="left"> Mathematical Special Functions for C++17 </td><td align="left">
    838 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf" target="_top">
    839 	P0226R1
    840 	</a>
    841       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_math_special_functions &gt;= 201603 </code>
    842 	     (see Note 4)
    843       </td></tr><tr><td align="left">Adopt the File System TS for C++17	 </td><td align="left">
    844 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html" target="_top">
    845 	P0218R1
    846 	</a>
    847       </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __has_include(&lt;filesystem&gt;)</code>,
    848 	     <code class="code"> __cpp_lib_filesystem &gt;= 201603 </code>
    849 	     (GCC 8.x requires linking with <code class="code">-lstdc++fs</code>)
    850       </td></tr><tr><td align="left"> Relative Paths for Filesystem</td><td align="left">
    851 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html" target="_top">
    852 	P0219R1
    853 	</a>
    854       </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __cpp_lib_filesystem &gt;= 201606 </code></td></tr><tr><td align="left"> Adapting string_view by filesystem paths </td><td align="left">
    855 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf" target="_top">
    856 	P0392R0
    857 	</a>
    858       </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __cpp_lib_filesystem &gt;= 201606 </code></td></tr><tr><td align="left"> Directory Entry Caching for Filesystem </td><td align="left">
    859        <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html" target="_top">
    860        P0317R1
    861        </a>
    862       </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __cpp_lib_filesystem &gt;= 201703 </code></td></tr><tr><td align="left"> constexpr <code class="code">atomic&lt;T&gt;::is_always_lock_free</code>	 </td><td align="left">
    863 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html" target="_top">
    864 	P0152R1
    865 	</a>
    866       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_atomic_is_always_lock_free &gt;= 201603 </code></td></tr><tr><td align="left">A proposal to add <code class="code">shared_mutex</code> (untimed) (Revision 4)</td><td align="left">
    867 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html" target="_top">
    868 	  N4508
    869 	</a>
    870       </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_shared_mutex &gt;= 201505 </code></td></tr><tr><td align="left"> Variadic <code class="code">lock_guard</code> (Rev. 5) </td><td align="left">
    871 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html" target="_top">
    872 	P0156R2
    873 	</a>
    874       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_scoped_lock &gt;= 201703 </code></td></tr><tr><td align="left"> A byte type definition </td><td align="left">
    875 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf" target="_top">
    876 	P0298R3
    877 	</a>
    878       </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_byte &gt;= 201603 </code> (since 7.3, see Note 2)
    879       </td></tr><tr><td align="left"> Elementary string conversions </td><td align="left">
    880 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html" target="_top">
    881 	P0067R5
    882 	</a>
    883       </td><td align="center"> 11.1 (integral types supported since 8.1) </td><td align="left"><code class="code"> __has_include(&lt;charconv&gt;)</code>,
    884              <code class="code"> __cpp_lib_to_chars &gt;= 201611 </code></td></tr><tr><td align="left"> Homogeneous interface for variant, any and optional </td><td align="left">
    885 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf" target="_top">
    886 	P0032R3
    887 	</a>
    888       </td><td align="center"> 7.1  </td><td align="left">
    889              <code class="code"> __cpp_lib_any &gt;= 201606 </code>,
    890              <code class="code"> __cpp_lib_optional &gt;= 201606 </code>,
    891              <code class="code"> __cpp_lib_variant &gt;= 201606 </code>
    892       </td></tr><tr><td align="left"> Making Optional Greater Equal Again </td><td align="left">
    893 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf" target="_top">
    894 	P0307R2
    895 	</a>
    896       </td><td align="center"> 7.1  </td><td align="left"> <code class="code"> __cpp_lib_optional &gt;= 201606 </code> </td></tr></tbody></table></div></div><br class="table-break" /><p>
    897 Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
    898 <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the
    899 header is included without using <code class="option">-std</code> to enable C++17 support.
    900 </p><p>
    901 Note 2: This feature is supported in older releases but the
    902 <code class="code">__cpp_lib</code> macro is not defined to the right value
    903 (or not defined at all) until the version shown in parentheses.
    904 </p><p>
    905 Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018
    906 or later. If the <code class="filename">&lt;execution&gt;</code>
    907 header is included then <code class="code">-ltbb</code> must be used to link to TBB.
    908 </p><p>
    909 Note 4: The mathematical special functions are enabled in C++17 mode from
    910 GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define
    911 <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
    912 and test for <code class="code">__STDCPP_MATH_SPEC_FUNCS__ &gt;= 201003L</code>.
    913 </p><p>
    914 The following status table is based on the table of contents of
    915 ISO/IEC 14882:2017.
    916 Some subclauses are not shown in the table where the content is unchanged
    917 since C++14 and the implementation is complete.
    918 </p><div class="table"><a id="table.cxx17_status"></a><p class="title"><strong>Table1.6.C++ 2017 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2017 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
    919 	<span class="emphasis"><em>21</em></span>
    920       </td><td colspan="3" align="left">
    921 	<span class="emphasis"><em>Language support</em></span>
    922       </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.2</td><td align="left">Common definitions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.3</td><td align="left">Implementation properties</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.3.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.3.2</td><td align="left">Header <code class="code">&lt;limits&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.3.3</td><td align="left">Floating-point type properties</td><td align="left"></td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">21.3.3.1</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">21.3.3.2</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">21.3.4</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.3.5</td><td align="left">Header <code class="code">&lt;climits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.3.6</td><td align="left">Header <code class="code">&lt;cfloat&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.4</td><td align="left">Integer types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.4.1</td><td align="left">Header <code class="code">&lt;cstdint&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">21.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td align="left">21.6</td><td align="left">Dynamic memory management</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.6.1</td><td align="left">Header <code class="code">&lt;new&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.6.2</td><td align="left">Storage allocation and deallocation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.6.3</td><td align="left">Storage allocation errors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.6.4</td><td align="left">Pointer optimization barrier</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.6.5</td><td align="left">Hardware interference size</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.7</td><td align="left">Type identification</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8</td><td align="left">Exception handling</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.8.1</td><td align="left">Header <code class="code">&lt;exception&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">21.8.2</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8.3</td><td align="left">Class bad_exception</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8.4</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8.5</td><td align="left"><code class="code">uncaught_exceptions</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8.6</td><td align="left">Exception Propagation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.8.7</td><td align="left"><code class="code">nested_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.9</td><td align="left">Initializer lists</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">21.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    923 	<span class="emphasis"><em>22</em></span>
    924       </td><td colspan="3" align="left">
    925 	<span class="emphasis"><em>Diagnostics</em></span>
    926       </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">22.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">22.5</td><td align="left">System error support</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">
    927 	<span class="emphasis"><em>23</em></span>
    928       </td><td colspan="3" align="left">
    929 	<span class="emphasis"><em>General utilities</em></span>
    930       </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2</td><td align="left">Utility components</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.2.2</td><td align="left">Operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.3</td><td align="left"><code class="code">swap</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.4</td><td align="left"><code class="code">exchange</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.5</td><td align="left">Forward/move helpers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.6</td><td align="left">Function template <code class="code">as_const</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.7</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Partial</td><td align="left"></td></tr><tr><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Partial</td><td align="left"></td></tr><tr><td align="left">23.3</td><td align="left">Compile-time integer sequences</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.5</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.6</td><td align="left">Optional objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.7</td><td align="left">Variants</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.8</td><td align="left">Storage for any type</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.9</td><td align="left">Bitsets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10</td><td align="left">Memory</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.10.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.10</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.10.11</td><td align="left">C library memory allocation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.11</td><td align="left">Smart pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.11.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.11.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12</td><td align="left">Memory resources</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.12.1</td><td align="left">Header <code class="code">&lt;memory_resource&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12.2</td><td align="left">Class <code class="code">memory_resource</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12.3</td><td align="left">Class template <code class="code">polymorphic_allocator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12.4</td><td align="left">Access to program-wide <code class="code">memory_resource</code> objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12.5</td><td align="left">Pool resource classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.12.6</td><td align="left">Class <code class="code">monotonic_buffer_resource</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.13</td><td align="left">Class template <code class="code">scoped_allocator_adaptor</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14</td><td align="left">Function objects</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.14.1</td><td align="left">Header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.14.2</td><td align="left">Definitions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.14.3</td><td align="left">Requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.14.4</td><td align="left">Function template <code class="code">invoke</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.6</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.7</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.8</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.9</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.10</td><td align="left">Function template <code class="code">not_fn</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.11</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.12</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.13</td><td align="left">Polymorphic function wrappers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.14</td><td align="left">Searchers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.14.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15</td><td align="left">Metaprogramming and type traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.15.1</td><td align="left">Requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.15.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.15.8</td><td align="left">Logical operator traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.16</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.17.2</td><td align="left">Header <code class="code">&lt;chrono&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.17</td><td align="left">Time utilities</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.17.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.17.8</td><td align="left">Header <code class="code">&lt;ctime&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.18</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.19</td><td align="left">Execution policies</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.19.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.19.2</td><td align="left">Header <code class="code">&lt;execution&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">23.19.3</td><td align="left">Execution policy type trait</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.19.4</td><td align="left">Sequenced execution policy</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.19.5</td><td align="left">Parallel execution policy</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.19.6</td><td align="left">Parallel and unsequenced execution policy</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">23.19.7</td><td align="left">Execution policy objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    931 	<span class="emphasis"><em>24</em></span>
    932       </td><td colspan="3" align="left">
    933 	<span class="emphasis"><em>Strings</em></span>
    934       </td></tr><tr><td align="left">24.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">24.2</td><td align="left">Character traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4</td><td align="left">String view classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.1</td><td align="left">Header <code class="code">&lt;string_view&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.2</td><td align="left">Class template <code class="code">basic_string_view</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.3</td><td align="left">Non-member comparison functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.4</td><td align="left">Inserters and extractors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.5</td><td align="left">Hash support</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">24.4.6</td><td align="left">Suffix for <code class="code">basic_string_view</code> literals</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">24.5</td><td align="left">Null-terminated sequence utilities</td><td align="left">Partial</td><td align="left">C library dependency. </td></tr><tr><td align="left">
    935 	<span class="emphasis"><em>25</em></span>
    936       </td><td colspan="3" align="left">
    937 	<span class="emphasis"><em>Localization</em></span>
    938       </td></tr><tr><td align="left">25.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.2</td><td align="left">Header <code class="code">&lt;locale&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.3</td><td align="left">Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.4</td><td align="left">Standard <code class="code">locale</code> categories</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">25.5</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    939 	<span class="emphasis"><em>26</em></span>
    940       </td><td colspan="3" align="left">
    941 	<span class="emphasis"><em>Containers</em></span>
    942       </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">26.2</td><td align="left">Container requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.3</td><td align="left">Sequence containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.4</td><td align="left">Associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.5</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">26.6</td><td align="left">Container adaptors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    943 	<span class="emphasis"><em>27</em></span>
    944       </td><td colspan="3" align="left">
    945 	<span class="emphasis"><em>Iterators</em></span>
    946       </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.2</td><td align="left">Iterator requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.3</td><td align="left">Header <code class="code">&lt;iterator&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.4</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.5</td><td align="left">Iterator adaptors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.6</td><td align="left">Stream iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.7</td><td align="left">Range access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">27.8</td><td align="left">Container access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    947 	<span class="emphasis"><em>28</em></span>
    948       </td><td colspan="3" align="left">
    949 	<span class="emphasis"><em>Algorithms</em></span>
    950       </td></tr><tr><td align="left">28.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">28.2</td><td align="left">Header <code class="code">&lt;algorithm&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">28.3</td><td align="left">Algorithms requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">28.4</td><td align="left">Parallel algorithms</td><td align="left"></td><td align="left">Using <a class="link" href="https://github.com/llvm/llvm-project/tree/main/pstl" target="_top">PSTL</a></td></tr><tr><td align="left">28.5</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.6</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.7</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">28.8</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    951       <span class="emphasis"><em>29</em></span>
    952       </td><td colspan="3" align="left">
    953 	<span class="emphasis"><em>Numerics</em></span>
    954       </td></tr><tr><td align="left">29.1</td><td align="left">General</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.2</td><td align="left">Definitions</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.3</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.4</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.5</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.6</td><td align="left">Random number generation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.7</td><td align="left">Numeric arrays</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8</td><td align="left">Generalized numeric operations</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.8.1</td><td align="left">Header <code class="code">&lt;numeric&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.8.2</td><td align="left">Accumulate</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.3</td><td align="left">Reduce</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.4</td><td align="left">Inner product</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.5</td><td align="left">Transform reduce</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.6</td><td align="left">Partial sum</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.7</td><td align="left">Exclusive scan</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.8</td><td align="left">Inclusive scan</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.9</td><td align="left">Transform exclusive scan</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.10</td><td align="left">Transform inclusive scan</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.11</td><td align="left">Adjacent difference</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.12</td><td align="left">Iota</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.13</td><td align="left">Greatest common divisor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.8.14</td><td align="left">Least common multiple</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.9</td><td align="left">Mathematical functions for floating-point types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.9.1</td><td align="left">Header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">29.9.2</td><td align="left">Absolute values</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.9.3</td><td align="left">Three-dimensional hypotenuse</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.9.4</td><td align="left">Classification / comparison functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">29.9.5</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    955 	<span class="emphasis"><em>30</em></span>
    956       </td><td colspan="3" align="left">
    957 	<span class="emphasis"><em>Input/output library</em></span>
    958       </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">30.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"></td></tr><tr><td align="left">30.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.10</td><td align="left">File systemss</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">30.11</td><td align="left">C library files</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    959 	<span class="emphasis"><em>31</em></span>
    960       </td><td colspan="3" align="left">
    961 	<span class="emphasis"><em>Regular expressions</em></span>
    962       </td></tr><tr><td align="left">31.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.5</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">31.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"><code class="code">transform_primary</code> is not correctly implemented</td></tr><tr><td align="left">31.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.11</td><td align="left">Regular expression algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.12</td><td align="left">Regular expression Iterators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">31.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    963 	<span class="emphasis"><em>32</em></span>
    964       </td><td colspan="3" align="left">
    965 	<span class="emphasis"><em>Atomic operations</em></span>
    966       </td></tr><tr><td align="left">32.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.2</td><td align="left">Header <code class="code">&lt;atomic&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.3</td><td align="left">Type aliases</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.4</td><td align="left">Order and consistency</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.5</td><td align="left">Lock-free property</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.6</td><td align="left">Class template <code class="code">&lt;atomic&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.7</td><td align="left">Non-member functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.8</td><td align="left">Flag Type and operations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">32.9</td><td align="left">Fences</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    967 	<span class="emphasis"><em>33</em></span>
    968       </td><td colspan="3" align="left">
    969 	<span class="emphasis"><em>Thread support</em></span>
    970       </td></tr><tr><td align="left">33.1</td><td align="left">General</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.3</td><td align="left">Threads</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.3.1</td><td align="left">Header <code class="code">thread</code> synopsis</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.3.2</td><td align="left">Class <code class="code">thread</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">33.3.2.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left"><code class="code">thread::id</code> comparisons not well-defined</td></tr><tr><td align="left">33.3.3</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4</td><td align="left">Mutual exclusion</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3</td><td align="left">Mutex requirements</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.1</td><td align="left">In general</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.2</td><td align="left">Mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.2.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.3.2.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.3.3</td><td align="left">Timed mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.3.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.3.3.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.3.4</td><td align="left">Shared mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.4.1</td><td align="left">Class <code class="code">shared_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.3.5</td><td align="left">Shared timed mutex types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.3.5.1</td><td align="left">Class <code class="code">shared_timed_mutex</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.4</td><td align="left">Locks</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.4.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.4.2</td><td align="left">Class template <code class="code">scoped_guard</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.4.3</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.4.4</td><td align="left">Class template <code class="code">shared_lock</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.5</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.4.6</td><td align="left">Call once</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.4.6.1</td><td align="left">Struct <code class="code">once_flag</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">33.4.6.2</td><td align="left">Function <code class="code">call_once</code></td><td align="left">Y</td><td align="left">Exception support is broken.
    971 	See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
    972 	66146</a>.
    973       </td></tr><tr><td align="left">33.5</td><td align="left">Condition variables</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6</td><td align="left">Futures</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.6.1</td><td align="left">Overview</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.6.2</td><td align="left">Header <code class="code">&lt;future&gt;</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">33.6.3</td><td align="left">Error handling</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.4</td><td align="left">Class <code class="code">future_error</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.5</td><td align="left">Shared state</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.6</td><td align="left">Class template <code class="code">promise</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.7</td><td align="left">Class template <code class="code">future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.8</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.9</td><td align="left">Function template <code class="code">async</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">33.6.10</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">
    974 	<span class="emphasis"><em>Appendix D</em></span>
    975       </td><td colspan="3" align="left">
    976 	<span class="emphasis"><em>Compatibility features</em></span>
    977       </td></tr><tr><td align="left">D.4</td><td align="left">C++ standard library headers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.4.1</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.4.1</td><td align="left">Header <code class="code">&lt;cstdalign&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.4.1</td><td align="left">Header <code class="code">&lt;cstdbool&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.4.1</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.6</td><td align="left"><code class="code">char*</code> streams</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.7</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.8</td><td align="left">Old adaptable function bindings</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.10</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.11</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.12</td><td align="left">Deprecated type traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.13</td><td align="left">Deprecated iterator primitives</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.14</td><td align="left">Deprecated <code class="code">shared_ptr</code> observers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.15</td><td align="left">Deprecated standard code conversion facets</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">D.16</td><td align="left">Deprecated convenience conversion interfaces</td><td align="left">Y</td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table.cxx17_ts_status"></a><p class="title"><strong>Table1.7.C++ Technical Specifications Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ Technical Specifications Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Paper</th><th align="left">Title</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
    978 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html" target="_top">
    979 	  N4076
    980 	</a>
    981       </td><td align="left">A generalized callable negator</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
    982 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm" target="_top">
    983 	  N4273
    984 	</a>
    985       </td><td align="left">Uniform Container Erasure</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
    986 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf" target="_top">
    987 	  N4061
    988 	</a>
    989       </td><td align="left">Greatest Common Divisor and Least Common Multiple</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
    990 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm" target="_top">
    991 	  N4066
    992 	</a>
    993       </td><td align="left">Delimited iterators</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
    994 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf" target="_top">
    995 	  N4282
    996 	</a>
    997       </td><td align="left">The World's Dumbest Smart Pointer</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
    998 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html" target="_top">
    999 	  N4388
   1000 	</a>
   1001       </td><td align="left">Const-Propagating Wrapper</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1002 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html" target="_top">
   1003 	  N4391
   1004 	</a>
   1005       </td><td align="left"> <code class="code">make_array</code>, revision 4 </td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1006 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf" target="_top">
   1007 	  N4502
   1008 	</a>
   1009       </td><td align="left"> Support for the C++ Detection Idiom, V2 </td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1010 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf" target="_top">
   1011 	  N4519
   1012 	</a>
   1013       </td><td align="left"> Source-Code Information Capture </td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1014 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html" target="_top">
   1015 	  N4521
   1016 	</a>
   1017       </td><td align="left"> Merge Fundamentals V1 into V2 </td><td align="left">
   1018         N (components from V1 are still in namespace
   1019         <code class="code">fundamentals_v1</code>)
   1020       </td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1021 	<a class="link" href="https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html" target="_top">
   1022 	  P0013R1
   1023 	</a>
   1024       </td><td align="left">Logical Operator Type Traits (revision 1)</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1025 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4531.html" target="_top">
   1026 	  N4531
   1027 	</a>
   1028       </td><td align="left">std::rand replacement, revision 3</td><td align="left">Y</td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
   1029 	<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0214r9.pdf" target="_top">
   1030 	  P0214R9
   1031 	</a>
   1032       </td><td align="left">Data-Parallel Types</td><td align="left">Y</td><td align="left">Parallelism 2 TS</td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2017.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is also specified by previous standards,
   1033       see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
   1034       Specific Behavior</a> and <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
   1035       2011 Implementation Specific Behavior</a>. This section only
   1036       documents behaviour which is new in the 2017 standard.
   1037    </p><p>
   1038       <span class="emphasis"><em>20.5.1.2 [headers]</em></span>
   1039       Whether names from Annex K are declared by C++ headers depends on
   1040       whether the underlying C library supports Annex K and declares the
   1041       names. For the GNU C library, there is no Annex K support and so
   1042       none of its names are declared by C++ headers.
   1043    </p><p>
   1044       <span class="emphasis"><em>23.6.5 [optional.bad_optional_access]</em></span>
   1045       <code class="code">what()</code> returns <code class="literal">"bad optional access"</code>.
   1046    </p><p>
   1047       <span class="emphasis"><em>23.7.3 [variant.variant]</em></span>
   1048       <code class="classname">variant</code> supports over-aligned types.
   1049    </p><p>
   1050       <span class="emphasis"><em>23.7.10 [variant.bad.access]</em></span>
   1051       <code class="code">what()</code> returns one of the strings
   1052       <code class="literal">"std::get: variant is valueless"</code>,
   1053       <code class="literal">"std::get: wrong index for variant"</code>,
   1054       <code class="literal">"std::visit: variant is valueless"</code>,
   1055       or <code class="literal">"std::visit&lt;R&gt;: variant is valueless"</code>.
   1056    </p><p>
   1057       <span class="emphasis"><em>23.12.5.2 [memory.resource.pool.options]</em></span>
   1058       Let S equal <code class="code">numeric_limits&lt;size_t&gt;::digits</code>.
   1059       The limit for maximum number of blocks in a chunk is given by
   1060       <span class="mathphrase">2<sup>N</sup>-1</span>,
   1061       where N is <span class="mathphrase">min(19, 3 + S/2)</span>.
   1062       The largest allocation size that will be allocated from a pool is
   1063       <span class="mathphrase">2<sup>22</sup></span>
   1064       when <span class="mathphrase">S &gt; 20</span>,
   1065       otherwise 3072 when <span class="mathphrase">S &gt; 16</span>,
   1066       otherwise 768.
   1067    </p><p>
   1068       <span class="emphasis"><em>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</em></span>
   1069       The default <code class="code">next_buffer_size</code> is <code class="code">128 * sizeof(void*)</code>.
   1070       The default growth factor is <code class="code">1.5</code>.
   1071    </p><p>
   1072       <span class="emphasis"><em>23.15.4.3 [meta.unary.prop]</em></span>
   1073       The predicate condition for
   1074       <code class="code">has_unique_object_representations</code> is true for all scalar
   1075       types except floating point types.
   1076    </p><p>
   1077       <span class="emphasis"><em>23.19.3 [execpol.type],
   1078       28.4.3 [algorithms.parallel.exec]</em></span>
   1079       There are no implementation-defined execution policies.
   1080    </p><p>
   1081       <span class="emphasis"><em>24.4.2 [string.view.template]</em></span>
   1082       <code class="classname">basic_string_view&lt;C, T&gt;::iterator</code> is
   1083       <code class="code">C*</code> and
   1084       <code class="classname">basic_string_view&lt;C, T&gt;::const_iterator</code> is
   1085       <code class="code">const C*</code>.
   1086    </p><p>
   1087       <span class="emphasis"><em>28.4.3 [algorithms.parallel.exec]</em></span>
   1088       Threads of execution created by <code class="classname">std::thread</code>
   1089       provide concurrent forward progress guarantees, so threads of execution
   1090       implicitly created by the library will provide parallel forward
   1091       progress guarantees.
   1092    </p><p>
   1093       <span class="emphasis"><em>29.4.1 [cfenv.syn]</em></span>
   1094       The effects of the <code class="filename">&lt;cfenv&gt;</code> functions
   1095       depends on whether the <code class="code">FENV_ACCESS</code> pragma is supported,
   1096       and on the C library that provides the header.
   1097    </p><p>
   1098       <span class="emphasis"><em>29.6.9 [c.math.rand]</em></span>
   1099       Whether the <code class="function">rand</code> function may introduce data
   1100       races depends on the target C library that provides the function.
   1101    </p><p>
   1102       <span class="emphasis"><em>29.9.5 [sf.cmath]</em></span>
   1103       The effect of calling the mathematical special functions with large
   1104       inputs should be documented here.
   1105    </p><p>
   1106       <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>
   1107       The behavior of the filesystem library implementation will depend on
   1108       the target operating system. Some features will not be supported
   1109       on some targets. Symbolic links and file permissions
   1110       are not supported on Windows.
   1111    </p><p>
   1112       <span class="emphasis"><em>30.10.5 [fs.filesystem.syn]</em></span>
   1113       The clock used for file times is an unspecified type
   1114       with a signed 64-bit representation, capable of representing
   1115       timestamps with nanosecond resolution. The clock's epoch is
   1116       unspecified, but is not the same as the system clock's epoch.
   1117    </p><p>
   1118       <span class="emphasis"><em>30.10.7.1 [fs.path.generic]</em></span>
   1119       dot-dot in the root-directory refers to the root-directory itself.
   1120       On Windows, a drive specifier such as <code class="code">"C:"</code> or
   1121       <code class="code">"z:"</code> is treated as a root-name. On Cygwin, a path
   1122       that begins with two successive directory separators is a
   1123       root-name. Otherwise (for POSIX-like systems other than Cygwin),
   1124       the implementation-defined root-name is an unspecified string
   1125       which does not appear in any pathnames.
   1126    </p><p>
   1127       <span class="emphasis"><em>30.10.10.1 [fs.enum.path.format]</em></span>
   1128       The character sequence is always interpreted in the native pathname
   1129       format.
   1130    </p><p>
   1131       <span class="emphasis"><em>30.10.15.4 [fs.op.file_size]</em></span>
   1132       If <code class="code">!is_regular_file(p)</code>, an error is reported.
   1133    </p><p>
   1134       <span class="emphasis"><em>30.10.15.32 [fs.op.rename]</em></span>
   1135       On Windows, <code class="code">filesystem::rename</code>
   1136       is implemented by calling <code class="code">MoveFileExW</code> and so
   1137       does not meet the requirements of POSIX <code class="code">rename</code>
   1138       when one or both of the paths resolves to an existing directory.
   1139       Specifically, it is not possible to rename a directory to replace another
   1140       directory (POSIX requires that to work if the directory being
   1141       replaced is empty).
   1142     </p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="iso.2017.par2ts"></a>Parallelism 2 TS</h5></div></div></div><p>
   1143         <span class="emphasis"><em>9.3 [parallel.simd.abi]</em></span>
   1144         <code class="code">max_fixed_size&lt;T&gt;</code> is 32, except when targetting
   1145         AVX512BW and <code class="code">sizeof(T)</code> is 1.
   1146      </p><p>
   1147         When targeting 32-bit x86,
   1148         <code class="classname">simd_abi::compatible&lt;T&gt;</code> is an alias for
   1149         <code class="classname">simd_abi::scalar</code>.
   1150         When targeting 64-bit x86 (including x32) or Aarch64,
   1151         <code class="classname">simd_abi::compatible&lt;T&gt;</code> is an alias for
   1152         <code class="classname">simd_abi::_VecBuiltin&lt;16&gt;</code>,
   1153         unless <code class="code">T</code> is <code class="code">long double</code>, in which case it is
   1154         an alias for <code class="classname">simd_abi::scalar</code>.
   1155         When targeting ARM (but not Aarch64) with NEON support,
   1156         <code class="classname">simd_abi::compatible&lt;T&gt;</code> is an alias for
   1157         <code class="classname">simd_abi::_VecBuiltin&lt;16&gt;</code>,
   1158         unless <code class="code">sizeof(T) &gt; 4</code>, in which case it is
   1159         an alias for <code class="classname">simd_abi::scalar</code>. Additionally,
   1160         <code class="classname">simd_abi::compatible&lt;float&gt;</code> is an alias for
   1161         <code class="classname">simd_abi::scalar</code> unless compiling with
   1162         -ffast-math.
   1163      </p><p>
   1164         When targeting x86 (both 32-bit and 64-bit),
   1165         <code class="classname">simd_abi::native&lt;T&gt;</code> is an alias for one of
   1166         <code class="classname">simd_abi::scalar</code>,
   1167         <code class="classname">simd_abi::_VecBuiltin&lt;16&gt;</code>,
   1168         <code class="classname">simd_abi::_VecBuiltin&lt;32&gt;</code>, or
   1169         <code class="classname">simd_abi::_VecBltnBtmsk&lt;64&gt;</code>, depending on
   1170         <code class="code">T</code> and the machine options the compiler was invoked with.
   1171      </p><p>
   1172         When targeting ARM/Aarch64 or POWER,
   1173         <code class="classname">simd_abi::native&lt;T&gt;</code> is an alias for
   1174         <code class="classname">simd_abi::scalar</code> or
   1175         <code class="classname">simd_abi::_VecBuiltin&lt;16&gt;</code>, depending on
   1176         <code class="code">T</code> and the machine options the compiler was invoked with.
   1177      </p><p>
   1178         For any other targeted machine
   1179         <code class="classname">simd_abi::compatible&lt;T&gt;</code> and
   1180         <code class="classname">simd_abi::native&lt;T&gt;</code> are aliases for
   1181         <code class="classname">simd_abi::scalar</code>. (subject to change)
   1182      </p><p>
   1183         The extended ABI tag types defined in the
   1184         <code class="code">std::experimental::parallelism_v2::simd_abi</code> namespace are:
   1185         <code class="classname">simd_abi::_VecBuiltin&lt;Bytes&gt;</code>, and
   1186         <code class="classname">simd_abi::_VecBltnBtmsk&lt;Bytes&gt;</code>.
   1187      </p><p>
   1188         <code class="classname">simd_abi::deduce&lt;T, N, Abis...&gt;::type</code>,
   1189         with <code class="code">N &gt; 1</code> is an alias for an extended ABI tag, if a
   1190         supported extended ABI tag exists. Otherwise it is an alias for
   1191         <code class="classname">simd_abi::fixed_size&lt;N&gt;</code>. The <code class="classname">
   1192         simd_abi::_VecBltnBtmsk</code> ABI tag is preferred over
   1193         <code class="classname">simd_abi::_VecBuiltin</code>.
   1194      </p><p>
   1195         <span class="emphasis"><em>9.4 [parallel.simd.traits]</em></span>
   1196         <code class="classname">memory_alignment&lt;T, U&gt;::value</code> is
   1197         <code class="code">sizeof(U) * T::size()</code> rounded up to the next power-of-two
   1198         value.
   1199      </p><p>
   1200         <span class="emphasis"><em>9.6.1 [parallel.simd.overview]</em></span>
   1201         On ARM, <code class="classname">simd&lt;T, _VecBuiltin&lt;Bytes&gt;&gt;</code>
   1202         is supported if <code class="code">__ARM_NEON</code> is defined and
   1203         <code class="code">sizeof(T) &lt;= 4</code>. Additionally,
   1204         <code class="code">sizeof(T) == 8</code> with integral <code class="code">T</code> is supported if
   1205         <code class="code">__ARM_ARCH &gt;= 8</code>, and <code class="code">double</code> is supported if
   1206         <code class="code">__aarch64__</code> is defined.
   1207 
   1208         On POWER, <code class="classname">simd&lt;T, _VecBuiltin&lt;Bytes&gt;&gt;</code>
   1209         is supported if <code class="code">__ALTIVEC__</code> is defined and <code class="code">sizeof(T)
   1210         &lt; 8</code>. Additionally, <code class="code">double</code> is supported if
   1211         <code class="code">__VSX__</code> is defined, and any <code class="code">T</code> with <code class="code">
   1212         sizeof(T) &lt;= 8</code> is supported if <code class="code">__POWER8_VECTOR__</code>
   1213         is defined.
   1214 
   1215         On x86, given an extended ABI tag <code class="code">Abi</code>,
   1216         <code class="classname">simd&lt;T, Abi&gt;</code> is supported according to the
   1217         following table:
   1218         </p><div class="table"><a id="table.par2ts_simd_support"></a><p class="title"><strong>Table1.8.Support for Extended ABI Tags</strong></p><div class="table-contents"><table class="table" summary="Support for Extended ABI Tags" 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">ABI tag <code class="code">Abi</code></th><th align="left">value type <code class="code">T</code></th><th align="left">values for <code class="code">Bytes</code></th><th align="left">required machine option</th></tr></thead><tbody><tr><td rowspan="6" align="left">
   1219                   <code class="classname">_VecBuiltin&lt;Bytes&gt;</code>
   1220                 </td><td rowspan="2" align="left"><code class="code">float</code></td><td align="left">8, 12, 16</td><td align="left">"-msse"</td></tr><tr><td align="left">20, 24, 28, 32</td><td align="left">"-mavx"</td></tr><tr><td rowspan="2" align="left"><code class="code">double</code></td><td align="left">16</td><td align="left">"-msse2"</td></tr><tr><td align="left">24, 32</td><td align="left">"-mavx"</td></tr><tr><td rowspan="2" align="left">
   1221                   integral types other than <code class="code">bool</code>
   1222                 </td><td align="left">
   1223                   <code class="code">Bytes</code>  16 and <code class="code">Bytes</code> divisible by
   1224                   <code class="code">sizeof(T)</code>
   1225                 </td><td align="left">"-msse2"</td></tr><tr><td align="left">
   1226                   16 &lt; <code class="code">Bytes</code>  32 and <code class="code">Bytes</code>
   1227                   divisible by <code class="code">sizeof(T)</code>
   1228                 </td><td align="left">"-mavx2"</td></tr><tr><td rowspan="2" align="left">
   1229                   <code class="classname">_VecBuiltin&lt;Bytes&gt;</code> and
   1230                   <code class="classname">_VecBltnBtmsk&lt;Bytes&gt;</code>
   1231                 </td><td align="left">
   1232                   vectorizable types with <code class="code">sizeof(T)</code>  4
   1233                 </td><td rowspan="2" align="left">
   1234                   32 &lt; <code class="code">Bytes</code>  64 and <code class="code">Bytes</code>
   1235                   divisible by <code class="code">sizeof(T)</code>
   1236                 </td><td align="left">"-mavx512f"</td></tr><tr><td align="left">
   1237                   vectorizable types with <code class="code">sizeof(T)</code> &lt; 4
   1238                 </td><td align="left">"-mavx512bw"</td></tr><tr><td rowspan="2" align="left">
   1239                   <code class="classname">_VecBltnBtmsk&lt;Bytes&gt;</code>
   1240                 </td><td align="left">
   1241                   vectorizable types with <code class="code">sizeof(T)</code>  4
   1242                 </td><td rowspan="2" align="left">
   1243                   <code class="code">Bytes</code>  32 and <code class="code">Bytes</code> divisible by
   1244                   <code class="code">sizeof(T)</code>
   1245                 </td><td align="left">"-mavx512vl"</td></tr><tr><td align="left">
   1246                   vectorizable types with <code class="code">sizeof(T)</code> &lt; 4
   1247                 </td><td align="left">"-mavx512bw" and "-mavx512vl"</td></tr></tbody></table></div></div><p><br class="table-break" />
   1248      </p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2020"></a>C++ 2020</h3></div></div></div><p>
   1249 In this implementation the <code class="literal">-std=gnu++20</code> or
   1250 <code class="literal">-std=c++20</code> flag must be used to enable language
   1251 and library
   1252 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
   1253 options. The pre-defined symbol
   1254 <code class="constant">__cplusplus</code> is used to check for the
   1255 presence of the required flag.
   1256 </p><p>
   1257 This section describes the C++20 and library TS support in
   1258 the GCC 14 release series.
   1259 </p><p>
   1260 The following table lists new library features that are included in
   1261 the C++20 standard. The "Proposal" column provides a link to the
   1262 ISO C++ committee proposal that describes the feature, while the "Status"
   1263 column indicates the first version of GCC that contains an implementation of
   1264 this feature (if it has been implemented).
   1265 A dash () in the status column indicates that the changes in the proposal
   1266 either do not affect the code in libstdc++, or the changes are not required for conformance.
   1267 The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
   1268 <a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
   1269 Feature-testing recommendations for C++</a> (where applicable)
   1270 or any notes about the implementation.
   1271 </p><div class="table"><a id="table.cxx20_features"></a><p class="title"><strong>Table1.9.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">
   1272         <span class="bold"><strong>Compile-time programming</strong></span>
   1273       </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">
   1274         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html" target="_top">
   1275         P0202R3 </a>
   1276       </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">
   1277         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html" target="_top">
   1278         P0879R0 </a>
   1279       </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">
   1280         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html" target="_top">
   1281         P0415R1 </a>
   1282       </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">  <code class="code">std::is_constant_evaluated()</code> </td><td align="left">
   1283         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html" target="_top">
   1284         P0595R2 </a>
   1285       </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">
   1286         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html" target="_top">
   1287         P0784R7 </a>
   1288       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_dynamic_alloc &gt;= 201907L</code> </td></tr><tr><td align="left">  Making <code class="code">std::string</code> constexpr </td><td align="left">
   1289         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf" target="_top">
   1290         P0980R1 </a>
   1291       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_string &gt;= 201907L</code> </td></tr><tr><td align="left">  Making <code class="code">std::vector</code> constexpr </td><td align="left">
   1292         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1004r2.pdf" target="_top">
   1293         P1004R2 </a>
   1294       </td><td align="center"> 12.1 </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">
   1295         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf" target="_top">
   1296         P1006R1 </a>
   1297       </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">
   1298         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1645r1.html" target="_top">
   1299         P1645R1 </a>
   1300       </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">
   1301         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html" target="_top">
   1302         P0858R0 </a>
   1303       </td><td align="center"> 9.1 </td><td align="left">
   1304         <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>
   1305       </td></tr><tr><td align="left">  <code class="code">constexpr</code> comparison operators for <code class="code">std::array</code> </td><td align="left">
   1306         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf" target="_top">
   1307         P1023R0 </a>
   1308       </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">
   1309         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html" target="_top">
   1310         P1032R1 </a>
   1311       </td><td align="center"> 10.1 </td><td align="left">
   1312         <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>
   1313       </td></tr><tr><td align="left">  <code class="code">constexpr <span class="emphasis"><em>INVOKE</em></span></code> </td><td align="left">
   1314         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html" target="_top">
   1315         P1065R2 </a>
   1316       </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">
   1317         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf" target="_top">
   1318         P0550R2 </a>
   1319       </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">
   1320         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html" target="_top">
   1321         P0758R1 </a>
   1322       </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">
   1323         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf" target="_top">
   1324         P0887R1 </a>
   1325       </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">
   1326         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf" target="_top">
   1327         P0318R1 </a>
   1328       </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><td align="left">  Improving Completeness Requirements for Type Traits </td><td align="left">
   1329         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf" target="_top">
   1330         P1285R0 </a>
   1331       </td><td align="center">  </td><td align="left"> Most misuses are diagnosed, but not all. </td></tr><tr><td align="left">  Missing feature test macros </td><td align="left">
   1332         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html" target="_top">
   1333         P1353R0 </a>
   1334       </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">
   1335         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html" target="_top">
   1336         P0340R3 </a>
   1337       </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">
   1338         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf" target="_top">
   1339         P1357R1 </a>
   1340       </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_bounded_array_traits &gt;= 201902L</code> </td></tr><tr><td align="left"> Layout-compatibility and pointer-interconvertibility traits </td><td align="left">
   1341         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0466r5.pdf" target="_top">
   1342         P0466R5 </a>
   1343       </td><td align="center"> 12.1 </td><td align="left">
   1344         <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>
   1345       </td></tr><tr><td align="left">  Integrating feature-test macros into the C++ WD </td><td align="left">
   1346         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html" target="_top">
   1347         P0941R2 </a>
   1348       </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">
   1349         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf" target="_top">
   1350         P0754R2 </a>
   1351       </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">
   1352         <span class="bold"><strong>Synchronization</strong></span>
   1353       </td></tr><tr><td align="left">  Atomic Ref </td><td align="left">
   1354         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html" target="_top">
   1355         P0019R8 </a>
   1356       </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">
   1357         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html" target="_top">
   1358         P0020R6 </a>
   1359       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_atomic_float &gt;= 201711L</code> </td></tr><tr><td align="left">  C++ Synchronized Buffered Ostream </td><td align="left">
   1360         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf" target="_top">
   1361         P0053R7 </a>
   1362       </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_syncbuf &gt;= 201711L</code> </td></tr><tr><td align="left">  Manipulators for C++ Synchronized Buffered Ostream </td><td align="left">
   1363         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0753r2.pdf" target="_top">
   1364         P0753R2 </a>
   1365       </td><td align="center"> 11.1 </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">
   1366         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0439r0.html" target="_top">
   1367         P0439R0 </a>
   1368       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td align="left">  The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </td><td align="left">
   1369         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html" target="_top">
   1370         P0528R3 </a>
   1371       </td><td align="center"> 13.1 </td><td align="left"></td></tr><tr><td align="left">  Atomic <code class="code">shared_ptr</code> </td><td align="left">
   1372         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html" target="_top">
   1373         P0718R2 </a>
   1374       </td><td align="center"> 12.1 </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">
   1375         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf" target="_top">
   1376         P0660R10 </a>
   1377       </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">
   1378         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html" target="_top">
   1379         P1869R1 </a>
   1380       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread &gt;= 201911L</code> </td></tr><tr><td align="left"> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </td><td align="left">
   1381         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html" target="_top">
   1382         P1135R6 </a>
   1383       </td><td align="center"> 11.1 </td><td align="left">
   1384         <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>
   1385       </td></tr><tr><td align="left"> Fixing Atomic Initialization </td><td align="left">
   1386         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf" target="_top">
   1387         P0883R2 </a>
   1388       </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">
   1389         <span class="bold"><strong>Ranges and Concepts</strong></span>
   1390       </td></tr><tr><td align="left">  Standard Library Concepts </td><td align="left">
   1391         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf" target="_top">
   1392         P0898R3 </a>
   1393       </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">
   1394         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf" target="_top">
   1395         P1754R1 </a>
   1396       </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">
   1397         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html" target="_top">
   1398         P1964R2 </a>
   1399       </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">
   1400         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf" target="_top">
   1401         P0896R4 </a>
   1402       </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">
   1403         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf" target="_top">
   1404         P1035R7 </a>
   1405       </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">
   1406         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html" target="_top">
   1407         P1716R3 </a>
   1408       </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">
   1409         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html" target="_top">
   1410         P1248R1 </a>
   1411       </td><td align="center"> 10.1 </td><td align="left"></td></tr><tr><td align="left"> Ranges Design Cleanup </td><td align="left">
   1412         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf" target="_top">
   1413         P1252R2 </a>
   1414       </td><td align="center"> 10.1 </td><td align="left"></td></tr><tr><td align="left"> Avoid template bloat for <code class="code">safe_ranges</code> in combination with subrange-y view adaptors.</td><td align="left">
   1415         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html" target="_top">
   1416         P1739R4 </a>
   1417       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1418         <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
   1419       </td></tr><tr><td align="left">  Extending chrono to Calendars and Time Zones </td><td align="left">
   1420         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html" target="_top">
   1421         P0355R7 </a>
   1422       </td><td align="left"> 14.1 (see Note 2) </td><td align="left"> <code class="code">__cpp_lib_chrono &gt;= 201803L</code> </td></tr><tr><td align="left"> Miscellaneous minor fixes for chrono </td><td align="left">
   1423         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html" target="_top">
   1424         P1466R3 </a>
   1425       </td><td align="left"> 11.1 (see Note 2) </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">
   1426         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf" target="_top">
   1427         P0972R0 </a>
   1428       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1429         <span class="bold"><strong>Three-way comparison</strong></span>
   1430       </td></tr><tr><td align="left">  Library Support for the Spaceship (Comparison) Operator </td><td align="left">
   1431         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf" target="_top">
   1432         P0768R1 </a>
   1433       </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">
   1434         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html" target="_top">
   1435         P0905R1 </a>
   1436       </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">
   1437         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html" target="_top">
   1438         P1614R2 </a>
   1439       </td><td align="center"> 10.1 </td><td align="left">
   1440         <code class="code">__cpp_lib_three_way_comparison &gt;= 201907L</code>
   1441       </td></tr><tr><td colspan="4" align="left">
   1442         <span class="bold"><strong>Strings and text</strong></span>
   1443       </td></tr><tr><td align="left">  <code class="code">string::reserve</code> Should Not Shrink </td><td align="left">
   1444         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html" target="_top">
   1445         P0966R1 </a>
   1446       </td><td align="center"> 11.1 </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">
   1447         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html" target="_top">
   1448         P0482R6 </a>
   1449       </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">
   1450         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html" target="_top">
   1451         P1423R3 </a>
   1452       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_char8_t &gt;= 201907L</code> </td></tr><tr><td align="left"> Text formatting </td><td align="left">
   1453         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html" target="_top">
   1454         P0645R10 </a>
   1455       </td><td align="center"> 13.1 </td><td align="left">
   1456         <code class="code">__cpp_lib_format &gt;= 201907L</code>
   1457       </td></tr><tr><td align="left"> Integration of chrono with text formatting </td><td align="left">
   1458         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf" target="_top">
   1459         P1361R2 </a>
   1460       </td><td align="center"> 13.1 </td><td align="left">
   1461         <code class="code">__cpp_lib_format &gt;= 201907L</code>
   1462       </td></tr><tr><td align="left"> Printf corner cases in <code class="code">std::format</code> </td><td align="left">
   1463         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html" target="_top">
   1464         P1652R1 </a>
   1465       </td><td align="center"> 13.1 </td><td align="left">
   1466         <code class="code">__cpp_lib_format &gt;= 201907L</code>
   1467       </td></tr><tr><td align="left">  String Prefix and Suffix Checking </td><td align="left">
   1468         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html" target="_top">
   1469         P0457R2 </a>
   1470       </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><td align="left">  Update The Reference To The Unicode Standard </td><td align="left">
   1471         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html" target="_top">
   1472         P1025R1 </a>
   1473       </td><td align="center"> </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1474         <span class="bold"><strong>Containers</strong></span>
   1475       </td></tr><tr><td align="left"> span: bounds-safe views for sequences of objects </td><td align="left">
   1476         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf" target="_top">
   1477         P0122R7 </a>
   1478       </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">
   1479         Usability Enhancements for <code class="classname">std::span</code>
   1480       </td><td align="left">
   1481         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf" target="_top">
   1482         P1024R3 </a>
   1483       </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">
   1484         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md" target="_top">
   1485         P1085R2 </a>
   1486       </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">
   1487         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html" target="_top">
   1488         P1976R2 </a>
   1489       </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">
   1490         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html" target="_top">
   1491         P0325R4 </a>
   1492       </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">
   1493         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html" target="_top">
   1494         P0458R2 </a>
   1495       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td align="left">  Comparing Unordered Containers </td><td align="left">
   1496         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf" target="_top">
   1497         P0809R0 </a>
   1498       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">  Heterogeneous lookup for unordered containers </td><td align="left">
   1499         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html" target="_top">
   1500         P0919R3 </a>
   1501       </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </td></tr><tr><td align="left"> Refinement Proposal for P0919 </td><td align="left">
   1502         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html" target="_top">
   1503         P1690R1 </a>
   1504       </td><td align="center"> 11.1 </td><td align="left"></td></tr><tr><td align="left">  Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </td><td align="left">
   1505         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html" target="_top">
   1506         P1209R0 </a>
   1507       </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">
   1508         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf" target="_top">
   1509         P0646R1 </a>
   1510       </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">
   1511         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf" target="_top">
   1512         P1115R3 </a>
   1513       </td><td align="center"> 9.1 </td><td align="left">
   1514         <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>
   1515       </td></tr><tr><td align="left"> Signed ssize() functions, unsigned size() functions </td><td align="left">
   1516         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html" target="_top">
   1517         P1227R2 </a>
   1518       </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">
   1519         <span class="bold"><strong>Memory management</strong></span>
   1520       </td></tr><tr><td align="left">  Utility to convert a pointer to a raw pointer </td><td align="left">
   1521         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html" target="_top">
   1522         P0653R2 </a>
   1523       </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><td align="left">  Extending <code class="code">make_shared</code> to Support Arrays </td><td align="left">
   1524         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html" target="_top">
   1525         P0674R1 </a>
   1526       </td><td align="center"> 12.1 </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">
   1527         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html" target="_top">
   1528         P0722R3 </a>
   1529       </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">
   1530         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf" target="_top">
   1531         P0591R4 </a>
   1532       </td><td align="center"> 9.1 </td><td align="left">
   1533         <code class="code">std::scoped_allocator_adaptor</code> changes missing in 9.1.0
   1534       </td></tr><tr><td align="left">  <code class="code">std::assume_aligned</code> </td><td align="left">
   1535         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf" target="_top">
   1536         P1007R3 </a>
   1537       </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><td align="left">  Smart pointer creation with default initialization </td><td align="left">
   1538         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html" target="_top">
   1539         P1020R1 </a>
   1540       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </td></tr><tr><td align="left">  Rename "default_init" Functions </td><td align="left">
   1541         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1973r1.pdf" target="_top">
   1542         P1973R1 </a>
   1543       </td><td align="center"> 12.1 </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">
   1544         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html" target="_top">
   1545         P1165R1 </a>
   1546       </td><td align="center"> 10.1 </td><td align="left"></td></tr><tr><td align="left">
   1547         <code class="classname">polymorphic_allocator&lt;&gt;</code> as a vocabulary type
   1548       </td><td align="left">
   1549         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf" target="_top">
   1550         P0339R6 </a>
   1551       </td><td align="center"> 9.1 </td><td align="left">
   1552       <code class="code">__cpp_lib_polymorphic_allocator &gt;= 201902L</code> (since 9.4, see Note 1)
   1553       </td></tr><tr><td align="left">  LWG 2511: guaranteed copy elision for piecewise construction </td><td align="left">
   1554         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0475r1.html" target="_top">
   1555         P0475R1 </a>
   1556       </td><td align="center"> 7.1 </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1557         <span class="bold"><strong>Miscellaneous</strong></span>
   1558       </td></tr><tr><td align="left">  <code class="code">nodiscard</code> in the Library </td><td align="left">
   1559         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf" target="_top">
   1560         P0600R1 </a>
   1561       </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">
   1562         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf" target="_top">
   1563         P0616R0 </a>
   1564       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td align="left">  Deprecate POD </td><td align="left">
   1565         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html" target="_top">
   1566         P0767R1 </a>
   1567       </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">
   1568         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf" target="_top">
   1569         P0777R1 </a>
   1570       </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">
   1571         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf" target="_top">
   1572         P0551R3 </a>
   1573       </td><td align="center"> </td><td align="left">These changes will not be implemented.</td></tr><tr><td align="left">  Bit-casting object representations </td><td align="left">
   1574         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html" target="_top">
   1575         P0476R2 </a>
   1576       </td><td align="center"> 11.1 </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">
   1577         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html" target="_top">
   1578         P0556R3 </a>
   1579       </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">
   1580         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf" target="_top">
   1581         P1956R1 </a>
   1582       </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">
   1583         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html" target="_top">
   1584         P0586R2 </a>
   1585       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_integer_comparison_functions &gt;= 202002L</code> </td></tr><tr><td align="left">  Reviewing Deprecated Facilities of C++17 for C++20 </td><td align="left">
   1586         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html" target="_top">
   1587         P0619R4 </a>
   1588       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left">  <code class="code">fpos</code> Requirements </td><td align="left">
   1589         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html" target="_top">
   1590         P0759R1 </a>
   1591       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">  Add <code class="code">shift</code> to <code class="code">&lt;algorithm&gt;</code> </td><td align="left">
   1592         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf" target="_top">
   1593         P0769R2 </a>
   1594       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_shift &gt;= 201806L</code> </td></tr><tr><td align="left">  Standard Library Specification in a Concepts and Contracts World </td><td align="left">
   1595         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf" target="_top">
   1596         P0788R3 </a>
   1597       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">  <code class="code">explicit(bool)</code> </td><td align="left">
   1598         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html" target="_top">
   1599         P0892R2 </a>
   1600       </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">
   1601         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html" target="_top">
   1602         P0935R0 </a>
   1603       </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">
   1604         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf" target="_top">
   1605         P0771R1 </a>
   1606       </td><td align="center"> 7.2 </td><td align="left"></td></tr><tr><td align="left">  Simplified partial function application </td><td align="left">
   1607         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html" target="_top">
   1608         P0356R5 </a>
   1609       </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">
   1610         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html" target="_top">
   1611         P1651R0 </a>
   1612       </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">
   1613         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html" target="_top">
   1614         P0357R3 </a>
   1615       </td><td align="center"> 9.1 </td><td align="left"></td></tr><tr><td align="left">  Fixing <code class="code">operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </td><td align="left">
   1616         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html" target="_top">
   1617         P0487R1 </a>
   1618       </td><td align="center"> 11.1 </td><td align="left"></td></tr><tr><td align="left">  <code class="code">variant</code> and <code class="code">optional</code> should propagate copy/move triviality </td><td align="left">
   1619         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html" target="_top">
   1620         P0602R4 </a>
   1621       </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">
   1622         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html" target="_top">
   1623         P0608R3 </a>
   1624       </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">
   1625         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf" target="_top">
   1626         P0655R1 </a>
   1627       </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">
   1628         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html" target="_top">
   1629         P0899R1 </a>
   1630       </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">
   1631         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html" target="_top">
   1632         P1123R0 </a>
   1633       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">  Cleaning up Clause 20 </td><td align="left">
   1634         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf" target="_top">
   1635         P1148R0 </a>
   1636       </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">
   1637         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html" target="_top">
   1638         P1210R0 </a>
   1639       </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">
   1640         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html" target="_top">
   1641         P1236R1 </a>
   1642       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">
   1643         I Stream, You Stream, We All Stream for
   1644         <code class="classname">istream_iterator</code>
   1645       </td><td align="left">
   1646         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html" target="_top">
   1647         P0738R2 </a>
   1648       </td><td align="center"> 10.1 </td><td align="left"></td></tr><tr><td align="left">
   1649         Mandating the Standard Library:
   1650         Clause 16 - Language support library
   1651       </td><td align="left">
   1652         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
   1653         P1458R1 </a>
   1654       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">
   1655         Mandating the Standard Library:
   1656         Clause 18 - Diagnostics library
   1657       </td><td align="left">
   1658         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
   1659         P1459R1 </a>
   1660       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">
   1661         Mandating the Standard Library:
   1662         Clause 20 - Strings library
   1663       </td><td align="left">
   1664         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html" target="_top">
   1665         P1462R1 </a>
   1666       </td><td align="center">  </td><td align="left"></td></tr><tr><td align="left">
   1667         Mandating the Standard Library:
   1668         Clause 21 - Containers library
   1669       </td><td align="left">
   1670         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf" target="_top">
   1671         P1463R1 </a>
   1672       </td><td align="center"> 10.1 </td><td align="left"></td></tr><tr><td align="left">
   1673         Mandating the Standard Library:
   1674         Clause 22 - Iterators library
   1675       </td><td align="left">
   1676         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf" target="_top">
   1677         P1464R1 </a>
   1678       </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">
   1679         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf" target="_top">
   1680         P1164R1
   1681   </a>
   1682       </td><td align="center"> 8.3 </td><td align="left"> Treated as a DR for C++17 </td></tr><tr><td align="left">
   1683         Target Vectorization Policies from Parallelism V2 TS to C++20
   1684       </td><td align="left">
   1685         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html" target="_top">
   1686         P1001R2 </a>
   1687       </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">
   1688         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html" target="_top">
   1689         P0912R5 </a>
   1690       </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">
   1691         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html" target="_top">
   1692         P0463R1 </a>
   1693       </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">
   1694         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html" target="_top">
   1695         P0553R4 </a>
   1696       </td><td align="center"> 9.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">
   1697         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html" target="_top">
   1698         P0811R3 </a>
   1699       </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">
   1700         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf" target="_top">
   1701         P0631R8 </a>
   1702       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_math_constants &gt;= 201907L</code> </td></tr><tr><td align="left"> std::source_location </td><td align="left">
   1703         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf" target="_top">
   1704         P1208R6 </a>
   1705       </td><td align="center"> 11.1 </td><td align="left">
   1706         <code class="code">__cpp_lib_source_location &gt;= 201907L</code>
   1707       </td></tr><tr><td align="left"> Efficient access to std::basic_stringbuf's Buffer </td><td align="left">
   1708         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf" target="_top">
   1709         P0408R7 </a>
   1710       </td><td align="center"> 11.1 </td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /><p>
   1711 Note 1: This feature is supported in older releases but the
   1712 <code class="code">__cpp_lib</code> macro is not defined to the right value
   1713 (or not defined at all) until the version shown in parentheses.
   1714 </p><p>
   1715 Note 2: The C++20 calendar types are supported since 11.1,
   1716 time zones and UTC are supported since 13.1,
   1717 and <code class="function">chrono::parse</code> is supported since 14.1.
   1718 </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
   1719 In this implementation the <code class="literal">-std=gnu++23</code> or
   1720 <code class="literal">-std=c++23</code> flag must be used to enable language
   1721 and library
   1722 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
   1723 options. The pre-defined symbol
   1724 <code class="constant">__cplusplus</code> is used to check for the
   1725 presence of the required flag.
   1726 </p><p>
   1727 This section describes the C++23 and library TS support in
   1728 the GCC 14 release series.
   1729 </p><p>
   1730 The following table lists new library features that have been accepted into
   1731 the C++23 working draft. The "Proposal" column provides a link to the
   1732 ISO C++ committee proposal that describes the feature, while the "Status"
   1733 column indicates the first version of GCC that contains an implementation of
   1734 this feature (if it has been implemented).
   1735 A dash () in the status column indicates that the changes in the proposal
   1736 either do not affect the code in libstdc++, or the changes are not required for conformance.
   1737 The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
   1738 <a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
   1739 Feature-testing recommendations for C++</a> (where applicable)
   1740 or any notes about the implementation.
   1741 </p><div class="table"><a id="table.cxx23_features"></a><p class="title"><strong>Table1.10.C++ 2023 Library Features</strong></p><div class="table-contents"><table class="table" summary="C++ 2023 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">
   1742         <span class="bold"><strong>Ranges and Views</strong></span>
   1743       </td></tr><tr><td align="left"> Range constructor for std::string_view </td><td align="left">
   1744         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1989r2.pdf" target="_top">
   1745         P1989R2
   1746         </a>
   1747       </td><td align="center"> 11.1 </td><td align="left"></td></tr><tr><td align="left"> <code class="code">join_view</code> should join all views of ranges </td><td align="left">
   1748         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2328r1.html" target="_top">
   1749         P2328R1
   1750         </a>
   1751       </td><td align="center"> 11.2 </td><td align="left"></td></tr><tr><td align="left"> Clarifying range adaptor objects </td><td align="left">
   1752         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2281r1.html" target="_top">
   1753         P2281R1
   1754         </a>
   1755       </td><td align="center"> 11.1 </td><td align="left"></td></tr><tr><td align="left"> Views should not be required to be default constructible </td><td align="left">
   1756         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2325r3.html" target="_top">
   1757         P2325R3
   1758         </a>
   1759       </td><td align="center"> 11.3 </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202106L</code> </td></tr><tr><td align="left"> Conditionally borrowed ranges </td><td align="left">
   1760         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2017r1.html" target="_top">
   1761         P2017R1
   1762         </a>
   1763       </td><td align="center"> 11.1 </td><td align="left"></td></tr><tr><td align="left"> Require <code class="code">span</code> &amp; <code class="code">basic_string_view</code> to be Trivially Copyable </td><td align="left">
   1764         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2251r1.pdf" target="_top">
   1765         P2251R1
   1766         </a>
   1767       </td><td align="center"> Yes </td><td align="left"></td></tr><tr><td align="left"> Repairing input range adaptors and counted_iterator </td><td align="left">
   1768         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2259r1.html" target="_top">
   1769         P2259R1
   1770         </a>
   1771       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> Superior String Splitting </td><td align="left">
   1772         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2210r2.html" target="_top">
   1773         P2210R2
   1774         </a>
   1775       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> What is a <code class="code">view</code>? </td><td align="left">
   1776         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2415r2.html" target="_top">
   1777         P2415R2
   1778         </a>
   1779       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202110L</code> </td></tr><tr><td align="left"> Fix istream_view </td><td align="left">
   1780         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2432r1.pdf" target="_top">
   1781         P2432R1
   1782         </a>
   1783       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">starts_with</code> and <code class="code">ends_with</code> </td><td align="left">
   1784         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html" target="_top">
   1785         P1659R3
   1786         </a>
   1787       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_ranges_starts_ends_with &gt;= 202106L</code> </td></tr><tr><td align="left"> <code class="code">zip</code> </td><td align="left">
   1788         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2321r2.html" target="_top">
   1789         P2321R2
   1790         </a>
   1791       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_zip &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">views::repeat</code> </td><td align="left">
   1792         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2474r2.html" target="_top">
   1793         P2474R2
   1794         </a>
   1795       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_repeat &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">views::enumerate</code> </td><td align="left">
   1796         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2164r9.pdf" target="_top">
   1797         P2164R9
   1798         </a>
   1799       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_enumerate &gt;= 202302L</code> </td></tr><tr><td align="left"> <code class="code">views::join_with</code> </td><td align="left">
   1800         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2441r2.html" target="_top">
   1801         P2441R2
   1802         </a>
   1803       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_join_with &gt;= 202202L</code> </td></tr><tr><td align="left">
   1804 	Windowing range adaptors: <code class="code">views::chunk</code>
   1805 	and <code class="code">views::slide</code> </td><td align="left">
   1806         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2442r1.html" target="_top">
   1807         P2442R1
   1808         </a>
   1809       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_slide &gt;= 202202L</code> </td></tr><tr><td align="left"> <code class="code">views::chunk_by</code> </td><td align="left">
   1810         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2443r1.html" target="_top">
   1811         P2443R1
   1812         </a>
   1813       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_chunk_by &gt;= 202202L</code> </td></tr><tr><td align="left"> <code class="code">views::stride</code> </td><td align="left">
   1814         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1899r3.html" target="_top">
   1815         P1899R3
   1816         </a>
   1817       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_stride &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">views::cartesian_product</code> </td><td align="left">
   1818         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2374r4.html" target="_top">
   1819         P2374R4
   1820         </a>
   1821       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_cartesian_product &gt;= 202207L</code> </td></tr><tr><td align="left"> Empty Product for certain Views </td><td align="left">
   1822         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2540r1.html" target="_top">
   1823         P2540R1
   1824         </a>
   1825       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_cartesian_product &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">views::as_rvalue</code> </td><td align="left">
   1826         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2446r2.html" target="_top">
   1827         P2446R2
   1828         </a>
   1829       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_rvalue &gt;= 202207L</code> </td></tr><tr><td align="left">
   1830 	<code class="code">cbegin</code> should always return a constant iterator
   1831       </td><td align="left">
   1832         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html" target="_top">
   1833         P2278R4
   1834         </a>
   1835       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_const &gt;= 202207L</code> </td></tr><tr bgcolor="#B0B0B0"><td align="left"> <code class="code">ranges::to</code> </td><td align="left">
   1836         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf" target="_top">
   1837         P1206R7
   1838         </a>
   1839       </td><td align="center"> 14.1 (<code class="code">ranges::to</code> function) </td><td align="left">
   1840 	<code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>,
   1841 	<code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>
   1842       </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
   1843         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
   1844         P2408R5
   1845         </a>
   1846       </td><td align="center"> </td><td align="left">
   1847 	<code class="code">__cpp_lib_algorithm_iterator_requirements &gt;= 202207L</code>
   1848       </td></tr><tr><td align="left"> Pipe support for user-defined range adaptors </td><td align="left">
   1849         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2387r3.html" target="_top">
   1850         P2387R3
   1851         </a>
   1852       </td><td align="center"> 13.1 </td><td align="left">
   1853 	<code class="code">__cpp_lib_bind_pack &gt;= 202202L</code>,
   1854 	<code class="code">__cpp_lib_ranges &gt;= 202202L</code>
   1855       </td></tr><tr bgcolor="#B0B0B0"><td align="left">
   1856 	<code class="code">ranges::iota</code>, <code class="code">ranges::shift_left</code>,
   1857         and <code class="code">ranges::shift_right</code>
   1858       </td><td align="left">
   1859         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html" target="_top">
   1860         P2440R1
   1861         </a>
   1862       </td><td align="center"> 13.1 (<code class="code">ranges::iota</code>) </td><td align="left">
   1863 	<code class="code">__cpp_lib_ranges_iota &gt;= 202202L</code>,
   1864 	<code class="code">__cpp_lib_shift &gt;= 202202L</code>
   1865       </td></tr><tr><td align="left"> <code class="code">ranges::find_last</code> </td><td align="left">
   1866         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1223r5.pdf" target="_top">
   1867         P1223R5
   1868         </a>
   1869       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_find_last &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">ranges::contains</code> </td><td align="left">
   1870         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2302r4.html" target="_top">
   1871         P2302R4
   1872         </a>
   1873       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_contains &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making multi-param constructors of views explicit </td><td align="left">
   1874         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html" target="_top">
   1875         P2711R1
   1876         </a>
   1877       </td><td align="center"> </td><td align="left"></td></tr><tr><td align="left"> <code class="code">ranges::fold</code> </td><td align="left">
   1878         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
   1879         P2322R6
   1880         </a>
   1881       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_fold &gt;= 202207L</code> </td></tr><tr><td align="left"> Relaxing Ranges Just A Smidge</td><td align="left">
   1882         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html" target="_top">
   1883         P2609R3
   1884         </a>
   1885       </td><td align="center"> 14.3 </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202302L</code> </td></tr><tr><td colspan="4" align="left">
   1886         <span class="bold"><strong>Compile-time programming</strong></span>
   1887       </td></tr><tr><td align="left"> A proposal for a type trait to detect scoped enumerations </td><td align="left">
   1888         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1048r1.pdf" target="_top">
   1889         P1048R1
   1890         </a>
   1891       </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_is_scoped_enum &gt;= 202011L</code> </td></tr><tr><td align="left"> std::to_underlying for enumerations </td><td align="left">
   1892         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1682r3.html" target="_top">
   1893         P1682R3
   1894         </a>
   1895       </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_to_underlying &gt;= 202102L</code> </td></tr><tr><td align="left"> Missing constexpr in std::optional and std::variant </td><td align="left">
   1896         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2231r1.html" target="_top">
   1897         P2231R1
   1898         </a>
   1899       </td><td align="center">
   1900 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 11.3 (<code class="code">optional</code>) </td></tr><tr><td> 12.1 (<code class="code">variant</code>) </td></tr></tbody></table></div>
   1901       </td><td align="left">
   1902 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_constexpr_optional &gt;= 202106L</code> </td></tr><tr><td> <code class="code">__cpp_lib_variant &gt;= 202106L</code> </td></tr></tbody></table></div>
   1903       </td></tr><tr><td align="left"> Making <code class="code">std::unique_ptr</code> constexpr </td><td align="left">
   1904         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2273r3.pdf" target="_top">
   1905         P2273R3
   1906         </a>
   1907       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_memory &gt;= 202202L</code> </td></tr><tr><td align="left"> Making <code class="code">std::type_info::operator==</code> constexpr </td><td align="left">
   1908         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1328r1.html" target="_top">
   1909         P1328R1
   1910         </a>
   1911       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_typeinfo &gt;= 202106L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> constexpr for <code class="code">&lt;cmath&gt;</code> and <code class="code">&lt;cstdlib&gt;</code> </td><td align="left">
   1912         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf" target="_top">
   1913         P0533R9
   1914         </a>
   1915       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_cmath &gt;= 202202L</code> </td></tr><tr><td align="left"> Deprecate std::aligned_storage and std::aligned_union </td><td align="left">
   1916         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf" target="_top">
   1917         P1413R3
   1918         </a>
   1919       </td><td align="center"> 13.1 </td><td align="left"></td></tr><tr><td align="left"> A type trait to detect reference binding to temporary </td><td align="left">
   1920         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html" target="_top">
   1921         P2255R2
   1922         </a>
   1923       </td><td align="center">
   1924 	<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 13.1 (missing changes to <code class="code">std::tuple</code>) </td></tr><tr><td> 14.1 (complete) </td></tr></tbody></table></div>
   1925       </td><td align="left"> <code class="code">__cpp_lib_reference_from_temporary &gt;= 202202L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1926         Move-only types for equality_comparable_with, totally_ordered_with,
   1927 	and three_way_comparable_with
   1928       </td><td align="left">
   1929         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2404r3.pdf" target="_top">
   1930         P2404R3
   1931         </a>
   1932       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_concepts &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> A trait for implicit lifetime types </td><td align="left">
   1933         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf" target="_top">
   1934         P2674R1
   1935         </a>
   1936       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_is_implicit_lifetime &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1937 	<code class="code">common_reference_t</code> of <code class="code">reference_wrapper</code>
   1938 	Should Be a Reference Type
   1939       </td><td align="left">
   1940         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2655r3.html" target="_top">
   1941         P2655R3
   1942         </a>
   1943       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_common_reference &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate <code class="code">numeric_limits::has_denorm</code> </td><td align="left">
   1944         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2614r2.pdf" target="_top">
   1945         P2614R2
   1946         </a>
   1947       </td><td align="center"> </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1948         <span class="bold"><strong>Containers</strong></span>
   1949       </td></tr><tr><td align="left"> Iterator pair constructors for stack and queue </td><td align="left">
   1950         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1425r4.pdf" target="_top">
   1951         P1425R4
   1952         </a>
   1953       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_adaptor_iterator_pair_constructor &gt;= 202106L</code> </td></tr><tr><td align="left"> Stop overconstraining allocators in container deduction guides </td><td align="left">
   1954         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1518r2.html" target="_top">
   1955         P1518R2
   1956         </a>
   1957       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous erasure overloads for associative containers </td><td align="left">
   1958         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
   1959         P2077R3
   1960         </a>
   1961       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
   1962         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
   1963         P0429R9
   1964         </a>
   1965       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_map &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_set&gt;</code> </td><td align="left">
   1966         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
   1967         P1222R4
   1968         </a>
   1969       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
   1970         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
   1971         P0009R18
   1972         </a>
   1973       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1974 	<code class="code">index_type</code> &amp; <code class="code">size_type</code>
   1975 	in <code class="code">mdspan</code>
   1976       </td><td align="left">
   1977         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf" target="_top">
   1978         P2599R2
   1979         </a>
   1980       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1981 	<code class="code">mdspan</code>: rename <code class="code">pointer</code> and
   1982 	<code class="code">contiguous</code>
   1983       </td><td align="left">
   1984         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2604r0.html" target="_top">
   1985         P2604R0
   1986         </a>
   1987       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add the missing <code class="code">empty</code> to <code class="code">mdspan</code> </td><td align="left">
   1988         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html" target="_top">
   1989         P2613R1
   1990         </a>
   1991       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_mdspan &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   1992 	<code class="code">layout_stride</code> static extents default constructor fix
   1993       </td><td align="left">
   1994         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2763r1.html" target="_top">
   1995         P2763R1
   1996         </a>
   1997       </td><td align="center"> </td><td align="left"></td></tr><tr><td colspan="4" align="left">
   1998         <span class="bold"><strong>Strings and text</strong></span>
   1999       </td></tr><tr><td align="left"> string contains function </td><td align="left">
   2000         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1679r3.html" target="_top">
   2001         P1679R3
   2002         </a>
   2003       </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_string_contains &gt;= 202011L</code> </td></tr><tr><td align="left"> Prohibit std::basic_string and std::basic_string_view construction from nullptr </td><td align="left">
   2004         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2166r1.html" target="_top">
   2005         P2166R1
   2006         </a>
   2007       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> basic_string::resize_and_overwrite </td><td align="left">
   2008         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1072r10.html" target="_top">
   2009         P1072R10
   2010         </a>
   2011       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_resize_and_overwrite &gt;= 202110L</code> </td></tr><tr><td align="left"> A strstream replacement using span&lt;charT&gt; as buffer </td><td align="left">
   2012         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0448r4.pdf" target="_top">
   2013         P0448R4
   2014         </a>
   2015       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_spanstream &gt;= 202106L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code"> std::string::substr() &amp;&amp; </code> </td><td align="left">
   2016         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html" target="_top">
   2017         P2438R2
   2018         </a>
   2019       </td><td align="center"> </td><td align="left"></td></tr><tr><td align="left"> std::format improvements </td><td align="left">
   2020         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html" target="_top">
   2021         P2216R3
   2022         </a>
   2023       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202106L</code> </td></tr><tr><td align="left">
   2024 	Add support for <code class="code">std::generator</code>-like types to
   2025 	<code class="code">std::format</code>
   2026       </td><td align="left">
   2027         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2418r2.html" target="_top">
   2028         P2418R2
   2029         </a>
   2030       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202110L</code> </td></tr><tr><td align="left">
   2031 	Expose <code class="code">std::<span class="emphasis"><em>basic-format-string</em></span>&lt;charT, Args...&gt;</code>
   2032       </td><td align="left">
   2033         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2508r1.html" target="_top">
   2034         P2508R1
   2035         </a>
   2036       </td><td align="center"> 13.1 (feature test macro not updated)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   2037 	Clarify handling of encodings in localized formatting of chrono types
   2038       </td><td align="left">
   2039         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2419r2.html" target="_top">
   2040         P2419R2
   2041         </a>
   2042       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
   2043 	Formatting pointers
   2044       </td><td align="left">
   2045         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf" target="_top">
   2046         P2510R3
   2047         </a>
   2048       </td><td align="center"> 13.2 (feature test macro not defined)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Formatting Ranges </td><td align="left">
   2049         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html" target="_top">
   2050         P2286R8
   2051         </a>
   2052       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Improve default container formatting </td><td align="left">
   2053         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html" target="_top">
   2054         P2585R1
   2055         </a>
   2056       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatted output </td><td align="left">
   2057         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2093r14.html" target="_top">
   2058         P2093R14
   2059         </a>
   2060       </td><td align="center"> 14.1 </td><td align="left"> <code class="code">__cpp_lib_print &gt;= 202207L</code> </td></tr><tr><td align="left">
   2061 	Should the output of std::print to a terminal be synchronized with
   2062 	the underlying stream?
   2063       </td><td align="left">
   2064         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2539r3.html" target="_top">
   2065         P2539R3
   2066         </a>
   2067       </td><td align="center"> 14.1 </td><td align="left"></td></tr><tr><td align="left">
   2068 	Formatting <code class="code">thread::id</code> and <code class="code">stacktrace</code>
   2069       </td><td align="left">
   2070         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2693r1.pdf" target="_top">
   2071         P2693R1
   2072         </a>
   2073       </td><td align="center"> 14.1 </td><td align="left"> <code class="code">__cpp_lib_formatters &gt;= 202302L</code> </td></tr><tr><td align="left">
   2074 	Add Constexpr Modifiers to Functions <code class="code">to_chars</code> and
   2075 	<code class="code">from_chars</code> for Integral Types in
   2076 	<code class="code">&lt;charconv&gt;</code> Header
   2077       </td><td align="left">
   2078         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2291r3.pdf" target="_top">
   2079         P2291R3
   2080         </a>
   2081       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_charconv &gt;= 202207L</code> </td></tr><tr><td colspan="4" align="left">
   2082         <span class="bold"><strong>Miscellaneous</strong></span>
   2083       </td></tr><tr><td align="left"> Inheriting from <code class="code">std::variant</code> </td><td align="left">
   2084         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2162r2.html" target="_top">
   2085         P2162R2
   2086         </a>
   2087       </td><td align="center"> 11.3 </td><td align="left"> <code class="code">__cpp_lib_variant &gt;= 202102L</code> </td></tr><tr><td align="left"> Printing <code class="code">volatile</code> Pointers </td><td align="left">
   2088         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1147r1.html" target="_top">
   2089         P1147R1
   2090         </a>
   2091       </td><td align="center"> 11.3 </td><td align="left"></td></tr><tr><td align="left"> A Proposal to add stacktrace library </td><td align="left">
   2092         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0881r7.html" target="_top">
   2093         P0881R7
   2094         </a>
   2095       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_stacktrace &gt;= 202011L</code> </td></tr><tr><td align="left"> Add a pmr alias for std::stacktrace </td><td align="left">
   2096         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2301r1.html" target="_top">
   2097         P2301R1
   2098         </a>
   2099       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> <code class="code">std::expected</code> </td><td align="left">
   2100         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html" target="_top">
   2101         P0323R12
   2102         </a>
   2103       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_expected &gt;= 202202L</code> </td></tr><tr><td align="left"> Monadic operations for std::expected </td><td align="left">
   2104         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html" target="_top">
   2105         P2505R5
   2106         </a>
   2107       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_expected &gt;= 202211L</code> </td></tr><tr><td align="left"> Monadic operations for std::optional </td><td align="left">
   2108         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0798r8.html" target="_top">
   2109         P0798R8
   2110         </a>
   2111       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_optional &gt;= 202110L</code> </td></tr><tr><td align="left">
   2112 	Compatibility between <code class="code">tuple</code>, <code class="code">pair</code>
   2113 	and <span class="emphasis"><em>tuple-like</em></span> objects </td><td align="left">
   2114         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2165r4.pdf" target="_top">
   2115         P2165R4
   2116         </a>
   2117       </td><td align="center"> 14.1 </td><td align="left"> <code class="code">__cpp_lib_tuple_like &gt;= 202207L</code> </td></tr><tr><td align="left">
   2118 	Default Arguments for <code class="code">pair</code>'s Forwarding Constructor
   2119       </td><td align="left">
   2120         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1951r1.html" target="_top">
   2121         P1951R1
   2122         </a>
   2123       </td><td align="center"> 14.1 </td><td align="left"></td></tr><tr><td align="left"> <code class="code">move_only_function</code> </td><td align="left">
   2124         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0288r9.html" target="_top">
   2125         P0288R9
   2126         </a>
   2127       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_move_only_function &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">invoke_r</code> </td><td align="left">
   2128         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2136r3.html" target="_top">
   2129         P2136R3
   2130         </a>
   2131       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_invoke_r &gt;= 202106L</code> </td></tr><tr><td align="left"> Byteswapping for fun&amp;&amp;nuf </td><td align="left">
   2132         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1272r4.html" target="_top">
   2133         P1272R4
   2134         </a>
   2135       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_byteswap &gt;= 202110L</code> </td></tr><tr><td align="left"> Function to mark unreachable code </td><td align="left">
   2136         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0627r6.pdf" target="_top">
   2137         P0627R6
   2138         </a>
   2139       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_unreachable &gt;= 202202L</code> </td></tr><tr><td align="left"> Add a conditional noexcept specification to std::exchange </td><td align="left">
   2140         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2401r0.html" target="_top">
   2141         P2401R0
   2142         </a>
   2143       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> A more constexpr bitset </td><td align="left">
   2144         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2417r2.pdf" target="_top">
   2145         P2417R2
   2146         </a>
   2147       </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_bitset &gt;= 202207L</code> </td></tr><tr><td align="left"> Extended floating-point types and standard names </td><td align="left">
   2148         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1467r9.html" target="_top">
   2149         P1467R9
   2150         </a>
   2151       </td><td align="center"> 13.1 </td><td align="left"></td></tr><tr><td align="left"> Support C atomics in C++ </td><td align="left">
   2152         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0943r6.html" target="_top">
   2153         P0943R6
   2154         </a>
   2155       </td><td align="center"> 12.1 </td><td align="left"> <code class="code">__cpp_lib_stdatomic_h &gt;= 202011L</code> </td></tr><tr><td align="left"> Clarifying the status of the "C headers" </td><td align="left">
   2156         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2340r1.html" target="_top">
   2157         P2340R1
   2158         </a>
   2159       </td><td align="center"> Yes </td><td align="left"></td></tr><tr><td align="left"> Relax Requirements for time_point::clock </td><td align="left">
   2160         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2212r2.html" target="_top">
   2161         P2212R2
   2162         </a>
   2163       </td><td align="center"> Yes </td><td align="left"></td></tr><tr><td align="left"> Removing Garbage Collection Support </td><td align="left">
   2164         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2186r2.html" target="_top">
   2165         P2186R2
   2166         </a>
   2167       </td><td align="center"> 12.1 </td><td align="left"></td></tr><tr><td align="left"> Easy [utilities], [ranges], and [iterators] </td><td align="left">
   2168         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1642r11.html" target="_top">
   2169         P1642R11
   2170         </a>
   2171       </td><td align="center"> 13.1 </td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Providing size feedback in the Allocator interface </td><td align="left">
   2172         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html" target="_top">
   2173         P0401R6
   2174         </a>
   2175       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_allocate_at_least &gt;= 202306L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   2176 	Disallow User Specialization of <code class="code">allocator_traits</code>
   2177       </td><td align="left">
   2178         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2652r2.html" target="_top">
   2179         P2652R2
   2180         </a>
   2181       </td><td align="center"> </td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left"> Explicit lifetime management </td><td align="left">
   2182         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf" target="_top">
   2183         P2590R2
   2184         </a>
   2185       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_start_lifetime_as &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   2186 	Fixing <code class="code">std::start_lifetime_as</code> and
   2187 	<code class="code">std::start_lifetime_as_array</code>
   2188       </td><td align="left">
   2189         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2679r2.pdf" target="_top">
   2190         P2679R2
   2191         </a>
   2192       </td><td align="center"> </td><td align="left"></td></tr><tr><td align="left"> out_ptr - a scalable output pointer abstraction </td><td align="left">
   2193         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1132r8.html" target="_top">
   2194         P1132R8
   2195         </a>
   2196       </td><td align="center"> 14.1 </td><td align="left"> <code class="code">__cpp_lib_out_ptr &gt;= 202106L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">barrier</code>'s phase completion guarantees </td><td align="left">
   2197         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2588r3.html" target="_top">
   2198         P2588R3
   2199         </a>
   2200       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_barrier &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
   2201         Standard Library Modules <code class="code">std</code> and <code class="code">std.compat</code>
   2202       </td><td align="left">
   2203         <a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf" target="_top">
   2204         P2465R3
   2205         </a>
   2206       </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_modules &gt;= 202207L</code> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
   2207 This table is based on the table of contents of ISO/IEC DTR 19768,
   2208 Doc No: N1836=05-0096, Date: 2005-06-24,
   2209 "Draft Technical Report on C++ Library Extensions".
   2210 </p><p>
   2211 In this implementation the header names are prefixed by
   2212 <code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
   2213 <code class="code">&lt;tr1/memory&gt;</code>, and so on.
   2214 </p><p>
   2215 This page describes the TR1 support in
   2216 the GCC 14 release series.
   2217 </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table1.11.C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"></td><td align="left">
   2218 	<p>
   2219 	  Uses code from
   2220 	  <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
   2221 	</p>
   2222       </td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code">&lt;functional&gt; synopsis</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">Y</td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code">&lt;unordered_set&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code">&lt;unordered_map&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.1</td><td align="left">Definitions</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.2</td><td align="left">Requirements</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"></td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">8.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr bgcolor="#C8B0B0"><td align="left">8.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">8.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">Y</td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.tr1.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is specified by the 1998 and 2003 standards,
   2223       see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
   2224       Specific Behavior</a>. This section documents behaviour which
   2225       is required by TR1.
   2226    </p><p>
   2227      <span class="emphasis"><em>3.6.4 [tr.func.bind.place]/1</em></span> There are 29
   2228      placeholders defined and the placeholder types are
   2229      <code class="literal">Assignable</code>.
   2230    </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr24733"></a>C++ TR 24733</h3></div></div></div><p>
   2231 This table is based on the table of contents of
   2232 ISO/IEC TR 24733:2011,
   2233 "Extensions for the programming language C++ to support
   2234 decimal floating-point arithmetic".
   2235 </p><p>
   2236 This page describes the TR 24733 support in
   2237 the GCC 14 release series.
   2238 </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table1.12.C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
   2239 	<span class="emphasis"><em>0</em></span>
   2240       </td><td colspan="3" align="left">
   2241 	<span class="emphasis"><em>Introduction</em></span>
   2242       </td></tr><tr><td align="left">
   2243 	<span class="emphasis"><em>1</em></span>
   2244       </td><td colspan="3" align="left">
   2245 	<span class="emphasis"><em>Normative references</em></span>
   2246       </td></tr><tr><td align="left">
   2247 	<span class="emphasis"><em>2</em></span>
   2248       </td><td colspan="3" align="left">
   2249 	<span class="emphasis"><em>Conventions</em></span>
   2250       </td></tr><tr><td align="left">
   2251 	<span class="emphasis"><em>3</em></span>
   2252       </td><td colspan="3" align="left">
   2253 	<span class="emphasis"><em>Decimal floating-point types</em></span>
   2254       </td></tr><tr><td align="left">3.1</td><td align="left">Characteristics of decimal floating-point types</td><td align="left"></td><td align="left"></td></tr><tr><td align="left">3.2</td><td align="left">Decimal Types</td><td align="left"></td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">3.2.1</td><td align="left">Class <code class="code">decimal</code> synopsis</td><td align="left">Partial</td><td align="left">Missing declarations for formatted input/output; non-conforming extension for functions converting to integral type</td></tr><tr bgcolor="#B0B0B0"><td align="left">3.2.2</td><td align="left">Class <code class="code">decimal32</code></td><td align="left">Partial</td><td align="left">Missing 3.2.2.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point</td></tr><tr bgcolor="#B0B0B0"><td align="left">3.2.3</td><td align="left">Class <code class="code">decimal64</code></td><td align="left">Partial</td><td align="left">Missing 3.2.3.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point</td></tr><tr bgcolor="#B0B0B0"><td align="left">3.2.4</td><td align="left">Class <code class="code">decimal128</code></td><td align="left">Partial</td><td align="left">Missing 3.2.4.5 conversion to integral type; conforming extension for conversion from scalar decimal floating-point</td></tr><tr><td align="left">3.2.5</td><td align="left">Initialization from coefficient and exponent</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.2.6</td><td align="left">Conversion to generic floating-point type</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.2.7</td><td align="left">Unary arithmetic operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.2.8</td><td align="left">Binary arithmetic operators</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.2.9</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.2.10</td><td align="left">Formatted input</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.2.11</td><td align="left">Formatted output</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.3</td><td align="left">Additions to header <code class="code">limits</code></td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">3.4</td><td align="left">Headers <code class="code">cfloat</code> and <code class="code">float.h</code></td><td align="left"></td><td align="left"></td></tr><tr><td align="left">3.4.2</td><td align="left">Additions to header <code class="code">cfloat</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">3.4.3</td><td align="left">Additions to header <code class="code">float.h</code> synopsis</td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">3.4.4</td><td align="left">Maximum finite value</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.4.5</td><td align="left">Epsilon</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.4.6</td><td align="left">Minimum positive normal value</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.4.7</td><td align="left">Minimum positive subnormal value</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">3.4.8</td><td align="left">Evaluation format</td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.5</td><td align="left">Additions to <code class="code">cfenv</code> and <code class="code">fenv.h</code></td><td align="left">Outside the scope of GCC</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.6</td><td align="left">Additions to <code class="code">cmath</code> and <code class="code">math.h</code></td><td align="left">Outside the scope of GCC</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.7</td><td align="left">Additions to <code class="code">cstdio</code> and <code class="code">stdio.h</code></td><td align="left">Outside the scope of GCC</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.8</td><td align="left">Additions to <code class="code">cstdlib</code> and <code class="code">stdlib.h</code></td><td align="left">Outside the scope of GCC</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.9</td><td align="left">Additions to <code class="code">cwchar</code> and <code class="code">wchar.h</code></td><td align="left">Outside the scope of GCC</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.10</td><td align="left">Facets</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.11</td><td align="left">Type traits</td><td align="left">N</td><td align="left"></td></tr><tr bgcolor="#C8B0B0"><td align="left">3.12</td><td align="left">Hash functions</td><td align="left">N</td><td align="left"></td></tr><tr><td align="left">
   2255 	<span class="emphasis"><em>4</em></span>
   2256       </td><td colspan="3" align="left">
   2257 	<span class="emphasis"><em>Notes on C compatibility</em></span>
   2258       </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.specfun"></a>C++ IS 29124</h3></div></div></div><p>
   2259 This table is based on the table of contents of ISO/IEC FDIS 29124,
   2260 Doc No: N3060, Date: 2010-03-06,
   2261 "Extensions to the C++ Library to support mathematical special functions".
   2262 </p><p>
   2263 Complete support for IS 29124 is in GCC 6.1 and later releases, when using
   2264 at least C++11 (for older releases or C++98/C++03 use TR1 instead).
   2265 For C++11 and C++14 the additions to the library are not declared by their
   2266 respective headers unless <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code>
   2267 is defined as a macro that expands to a non-zero integer constant.
   2268 For C++17 the special functions are always declared (since GCC 7.1).
   2269 </p><p>
   2270 When the special functions are declared the macro
   2271 <code class="code">__STDCPP_MATH_SPEC_FUNCS__</code> is defined to <code class="code">201003L</code>.
   2272 </p><p>
   2273 In addition to the special functions defined in IS 29124, for
   2274 non-strict modes (i.e. <code class="code">-std=gnu++NN</code> modes) the
   2275 hypergeometric functions and confluent hypergeometric functions
   2276 from TR1 are also provided, defined in namespace
   2277 <code class="code">__gnu_cxx</code>.
   2278 </p><div class="table"><a id="table.specfun_status"></a><p class="title"><strong>Table1.13.C++ Special Functions Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ Special Functions Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr bgcolor="#B0B0B0"><td align="left">7</td><td align="left">Macro names</td><td align="left">Partial</td><td align="left">No diagnostic for inconsistent definitions of
   2279              <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code></td></tr><tr><td align="left">8</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.2</td><td align="left">associated Legendre functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.3</td><td align="left">beta function</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.7</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.8</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.9</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.10</td><td align="left">cylindrical Neumann functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.11</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.12</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.13</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.14</td><td align="left">exponential integral</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.15</td><td align="left">Hermite polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.16</td><td align="left">Laguerre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.17</td><td align="left">Legendre polynomials</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.18</td><td align="left">Riemann zeta function</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.19</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.20</td><td align="left">spherical associated Legendre functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.1.21</td><td align="left">spherical Neumann functions</td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left">8.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">Y</td><td align="left"></td></tr><tr bgcolor="#B0B0B0"><td align="left">8.3</td><td align="left">The header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">Partial</td><td align="left">Conflicts with C++ 2011 requirements.</td></tr><tr bgcolor="#C8B0B0"><td align="left">8.4</td><td align="left">The header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">N</td><td align="left">Conflicts with C++ 2011 requirements.</td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.specfun.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is specified by the 2011 standard,
   2280       see <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++ 2011 Implementation
   2281       Specific Behavior</a>. This section documents behaviour which
   2282       is required by IS 29124.
   2283    </p><p>
   2284      <span class="emphasis"><em>7.2 [macro.user]/3 /4</em></span> The functions declared in
   2285      Clause 8 are only declared when
   2286      <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__ == 1</code>
   2287      (or in C++17 mode, for GCC 7.1 and later).
   2288    </p><p>
   2289      <span class="emphasis"><em>8.1.1 [sf.cmath.Lnm]/1</em></span> The effect of calling
   2290      these functions with <code class="code">n &gt;= 128</code> or <code class="code">m &gt;= 128</code>
   2291      should be described here.
   2292    </p><p>
   2293      <span class="emphasis"><em>8.1.2 [sf.cmath.Plm]/3</em></span> The effect of calling
   2294      these functions with <code class="code">l &gt;= 128</code> should be described here.
   2295    </p><p>
   2296      <span class="emphasis"><em>8.1.3 [sf.cmath.I]/3</em></span> The effect of calling
   2297      these functions with <code class="code">nu &gt;= 128</code> should be described here.
   2298    </p><p>
   2299      <span class="emphasis"><em>8.1.8 [sf.cmath.J]/3</em></span> The effect of calling
   2300      these functions with <code class="code">nu &gt;= 128</code> should be described here.
   2301    </p><p>
   2302      <span class="emphasis"><em>8.1.9 [sf.cmath.K]/3</em></span> The effect of calling
   2303      these functions with <code class="code">nu &gt;= 128</code> should be described here.
   2304    </p><p>
   2305      <span class="emphasis"><em>8.1.10 [sf.cmath.N]/3</em></span> The effect of calling
   2306      these functions with <code class="code">nu &gt;= 128</code> should be described here.
   2307    </p><p>
   2308      <span class="emphasis"><em>8.1.15 [sf.cmath.Hn]/3</em></span> The effect of calling
   2309      these functions with <code class="code">n &gt;= 128</code> should be described here.
   2310    </p><p>
   2311      <span class="emphasis"><em>8.1.16 [sf.cmath.Ln]/3</em></span> The effect of calling
   2312      these functions with <code class="code">n &gt;= 128</code> should be described here.
   2313    </p><p>
   2314      <span class="emphasis"><em>8.1.17 [sf.cmath.Pl]/3</em></span> The effect of calling
   2315      these functions with <code class="code">l &gt;= 128</code> should be described here.
   2316    </p><p>
   2317      <span class="emphasis"><em>8.1.19 [sf.cmath.j]/3</em></span> The effect of calling
   2318      these functions with <code class="code">n &gt;= 128</code> should be described here.
   2319    </p><p>
   2320      <span class="emphasis"><em>8.1.20 [sf.cmath.Ylm]/3</em></span> The effect of calling
   2321      these functions with <code class="code">l &gt;= 128</code> should be described here.
   2322    </p><p>
   2323      <span class="emphasis"><em>8.1.21 [sf.cmath.n]/3</em></span> The effect of calling
   2324      these functions with <code class="code">n &gt;= 128</code> should be described here.
   2325    </p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a></td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"><a accesskey="n" href="license.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">PartI.
   2326   Introduction
   2327   
   2328 </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top">License</td></tr></table></div></body></html>