]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/doc/html/manual/status.html
libstdc++: ParallelSTL is now part of oneAPI DPC++ Library
[thirdparty/gcc.git] / libstdc++-v3 / doc / html / manual / status.html
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>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="intro.html" title="Part I.  Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. 
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>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</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 mainline GCC, not in any
9 particular release.
10 </p><div class="table"><a id="table.cxx98_status"></a><p class="title"><strong>Table 1.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="Chapter 28. 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="Chapter 13.  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 </p><p>
158 This status table is based on the table of contents of ISO/IEC 14882:2011.
159 </p><p>
160 This section describes the C++11 support in mainline GCC, not in any
161 particular release.
162 </p><div class="table"><a id="table.cxx11_status"></a><p class="title"><strong>Table 1.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">
163 <span class="emphasis"><em>18</em></span>
164 </td><td colspan="3" align="left">
165 <span class="emphasis"><em>Language support</em></span>
166 </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">
167 <span class="emphasis"><em>19</em></span>
168 </td><td colspan="3" align="left">
169 <span class="emphasis"><em>Diagnostics</em></span>
170 </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">
171 <span class="emphasis"><em>20</em></span>
172 </td><td colspan="3" align="left">
173 <span class="emphasis"><em>General utilities</em></span>
174 </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">
175 Uses code from
176 <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
177 </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">
178 <span class="emphasis"><em>21</em></span>
179 </td><td colspan="3" align="left">
180 <span class="emphasis"><em>Strings</em></span>
181 </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">
182 <span class="emphasis"><em>22</em></span>
183 </td><td colspan="3" align="left">
184 <span class="emphasis"><em>Localization</em></span>
185 </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">
186 <span class="emphasis"><em>23</em></span>
187 </td><td colspan="3" align="left">
188 <span class="emphasis"><em>Containers</em></span>
189 </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">
190 <span class="emphasis"><em>24</em></span>
191 </td><td colspan="3" align="left">
192 <span class="emphasis"><em>Iterators</em></span>
193 </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">
194 <span class="emphasis"><em>25</em></span>
195 </td><td colspan="3" align="left">
196 <span class="emphasis"><em>Algorithms</em></span>
197 </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">
198 <span class="emphasis"><em>26</em></span>
199 </td><td colspan="3" align="left">
200 <span class="emphasis"><em>Numerics</em></span>
201 </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">
202 <span class="emphasis"><em>27</em></span>
203 </td><td colspan="3" align="left">
204 <span class="emphasis"><em>Input/output library</em></span>
205 </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">
206 <span class="emphasis"><em>28</em></span>
207 </td><td colspan="3" align="left">
208 <span class="emphasis"><em>Regular expressions</em></span>
209 </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><td align="left"> </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">
210 <span class="emphasis"><em>29</em></span>
211 </td><td colspan="3" align="left">
212 <span class="emphasis"><em>Atomic operations</em></span>
213 </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">
214 <span class="emphasis"><em>30</em></span>
215 </td><td colspan="3" align="left">
216 <span class="emphasis"><em>Thread support</em></span>
217 </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">Broken</td><td align="left">See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
218 66146</a>
219 </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">
220 <span class="emphasis"><em>Appendix D</em></span>
221 </td><td colspan="3" align="left">
222 <span class="emphasis"><em>Compatibility features</em></span>
223 </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,
224 see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
225 Specific Behavior</a>. This section only documents behaviour which
226 is new in the 2011 standard.
227 </p><p>
228 <span class="emphasis"><em>17.6.5.12 [res.on.exception.handling]</em></span>
229 There are no implementation-defined exception classes, only standard
230 exception classes (or classes derived from them) will be thrown.
231 </p><p>
232 <span class="emphasis"><em>17.6.5.14 [value.error.codes]</em></span>
233 The <code class="classname">error_category</code> for errors originating outside
234 the OS, and the possible error code values for each error category,
235 should be documented here.
236 </p><p>
237 <span class="emphasis"><em>18.6.2.2 [new.badlength]</em></span>
238 <code class="function">what()</code> returns
239 <code class="literal">"std::bad_array_new_length"</code>.
240 </p><p>
241 <span class="emphasis"><em>20.6.9.1 [allocator.member]/5</em></span>
242 Over-aligned types are not supported by
243 <code class="classname">std::allocator</code>.
244 </p><p>
245 <span class="emphasis"><em>20.7.2.2.1 [util.smartptr.shared.const]</em></span>
246 When a <code class="classname">shared_ptr</code> constructor fails
247 <code class="classname">bad_alloc</code> (or types derived from it) will
248 be thrown, or when an allocator is passed to the constructor then any
249 exceptions thrown by the allocator.
250 </p><p>
251 <span class="emphasis"><em>20.7.2.0 [util.smartptr.weakptr]</em></span>
252 <code class="code">what()</code> returns <code class="literal">"bad_weak_ptr"</code>.
253 </p><p>
254 <span class="emphasis"><em>20.8.9.1.3 [func.bind.place]/1</em></span> There are 29
255 placeholders defined and the placeholder types are
256 <code class="literal">CopyAssignable</code>.
257 </p><p>
258 <span class="emphasis"><em>20.11.7.1 [time.clock.system]/3, /4</em></span>
259 Time point values are truncated to <code class="code">time_t</code> values.
260 There is no loss of precision for conversions in the other direction.
261 </p><p>
262 <span class="emphasis"><em>20.15.7 [meta.trans]/2</em></span>
263 <code class="classname">aligned_storage</code> does not support extended
264 alignment.
265 </p><p>
266 <span class="emphasis"><em>21.2.3.2 [char.traits.specializations.char16_t]</em></span>,
267 <span class="emphasis"><em>21.2.3.3 [char.traits.specializations.char32_t]</em></span>
268 The types <code class="classname">u16streampos</code> and
269 <code class="classname">u32streampos</code> are both synonyms for
270 <code class="classname">fpos&lt;mbstate_t&gt;</code>.
271 The function <code class="function">eof</code> returns <code class="code">int_type(-1)</code>.
272 <code class="function">char_traits&lt;char16_t&gt;::to_int_type</code> will
273 transform the "noncharacter" U+FFFF to U+FFFD (REPLACEMENT CHARACTER).
274 This is done to ensure that <code class="function">to_int_type</code> never
275 returns the same value as <code class="function">eof</code>, which is U+FFFF.
276 </p><p>
277 <span class="emphasis"><em>22.3.1 [locale]</em></span>
278 There is one global locale for the whole program, not per-thread.
279 </p><p>
280 <span class="emphasis"><em>22.4.5.1.2 [locale.time.get.virtuals]</em></span>,
281 <span class="emphasis"><em>22.4.5.3.2 [locale.time.put.virtuals]</em></span>
282 Additional supported formats should be documented here.
283 </p><p>
284 <span class="emphasis"><em> 22.4.7.1.2 [locale.messages.virtuals]</em></span>
285 The mapping should be documented here.
286 </p><p>
287 <span class="emphasis"><em>23.3.2.1 [array.overview]</em></span>
288 <code class="classname">array&lt;T, N&gt;::iterator</code> is <code class="code">T*</code> and
289 <code class="classname">array&lt;T, N&gt;::const_iterator</code> is
290 <code class="code">const T*</code>.
291 </p><p>
292 <span class="emphasis"><em>23.5.4.2 [unord.map.cnstr]</em></span>,
293 <span class="emphasis"><em>23.5.5.2 [unord.multimap.cnstr]</em></span>,
294 <span class="emphasis"><em>23.5.6.2 [unord.set.cnstr]</em></span>,
295 <span class="emphasis"><em>23.5.7.2 [unord.multiset.cnstr]</em></span>
296 The default minimal bucket count is 0 for the default constructors, range
297 constructors and initializer-list constructors.
298 </p><p>
299 <span class="emphasis"><em>25.3.12 [alg.random.shuffle]</em></span>
300 The two-argument overload of <code class="function">random_shuffle</code>
301 uses <code class="function">rand</code> as the source of randomness.
302 </p><p>
303 <span class="emphasis"><em>26.5.5 [rand.predef]</em></span>
304 The type <code class="classname">default_random_engine</code> is a synonym for
305 <code class="classname">minstd_rand0</code>.
306 </p><p>
307 <span class="emphasis"><em> 26.5.6 [rand.device] </em></span>
308 The <code class="code">token</code> parameter of the
309 <code class="classname">random_device</code> constructor can be used to select
310 a specific source of random bytes. The valid token values are shown
311 in the list below.
312 The default constructor uses the token <code class="literal">"default"</code>.
313 </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">"default"</code></span></dt><dd>
314 Select the first available source from the other entries below.
315 This is the only token that is always valid.
316 </dd><dt><span class="term"><code class="literal">"rand_s"</code></span></dt><dd>
317 Use the MSVCRT <code class="function">rand_s</code> function.
318 This token is only valid for mingw-w64 targets.
319 </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>
320 Use the IA-32 <code class="literal">RDSEED</code> or <code class="literal">RDRAND</code>
321 instruction to read from an on-chip hardware random number generator.
322 These tokens are only valid for x86 and x86_64 targets when both
323 the assembler and CPU support the corresponding instruction.
324 </dd><dt><span class="term"><code class="literal">"/dev/urandom"</code>, </span><span class="term"><code class="literal">"/dev/random"</code></span></dt><dd>
325 Use the named character special file to read random bytes from.
326 These tokens are only valid when the device files are present
327 and readable by the current user.
328 </dd><dt><span class="term"><code class="literal">"mt19937"</code>, </span><span class="term">seed value</span></dt><dd>
329 When no source of nondeterministic random numbers is available a
330 <code class="classname">mersenne_twister_engine</code> will be used.
331 An integer seed value can be used as the token and will be converted
332 to an <code class="code">unsigned long</code> using <code class="function">strtoul</code>.
333 These tokens are only valid when no other source of random bytes
334 is available.
335 </dd></dl></div><p>
336 An exception of type <code class="classname">runtime_error</code> will be
337 thrown if a <code class="classname">random_device</code> object is constructed
338 with an invalid token, or if it cannot open or read from the source
339 of random bytes.
340 </p><p>
341 <span class="emphasis"><em>26.5.8.1 [rand.dist.general]</em></span>
342 The algorithms used by the distributions should be documented here.
343 </p><p>
344 <span class="emphasis"><em>26.8 [c.math]</em></span> Whether the
345 <code class="function">rand</code> function introduces data races depends on
346 the C library as the function is not provided by libstdc++.
347 </p><p>
348 <span class="emphasis"><em>27.8.2.1 [stringbuf.cons]</em></span>
349 Whether the sequence pointers are copied by the
350 <code class="classname">basic_stringbuf</code> move constructor should be
351 documented here.
352 </p><p>
353 <span class="emphasis"><em>27.9.1.2 [filebuf.cons]</em></span>
354 Whether the sequence pointers are copied by the
355 <code class="classname">basic_filebuf</code> move constructor should be
356 documented here.
357 </p><p>
358 <span class="emphasis"><em>28.5.1 [re.synopt]</em></span>,
359 <span class="emphasis"><em> 28.5.2 [re.matchflag] </em></span>,
360 <span class="emphasis"><em> 28.5.3 [re.err] </em></span>
361 <code class="code">syntax_option_type</code>, <code class="code">match_flag_type</code>
362 and <code class="code">error_type</code> are unscoped enumeration types.
363 </p><p>
364 <span class="emphasis"><em>28.7 [re.traits]</em></span>
365 The <code class="literal">blank</code> character class corresponds to the
366 <code class="code">ctype_base::blank</code> mask.
367 </p><p>
368 <span class="emphasis"><em>29.4 [atomics.lockfree]</em></span>
369 The values of the <code class="code">ATOMIC_xxx_LOCK_FREE</code> macros depend on
370 the target and cannot be listed here.
371 </p><p>
372 <span class="emphasis"><em>30.2.3 [thread.req.native]/1</em></span>
373 <code class="classname">native_handle_type</code> and
374 <code class="methodname">native_handle</code> are provided. The handle types
375 are defined in terms of the Gthreads abstraction layer, although this
376 is subject to change at any time. Any use of
377 <code class="classname">native_handle</code> is inherently non-portable and
378 not guaranteed to work between major releases of GCC.
379 </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="classname">thread</code></span></dt><dd>
380 The native handle type is a typedef for <code class="code">__gthread_t</code>
381 i.e. <code class="code">pthread_t</code> when GCC is configured with the
382 <code class="literal">posix</code> thread model.
383 The value of the native handle is undefined for a thread
384 which is not joinable.
385 </dd><dt><span class="term"><code class="classname">mutex</code>, </span><span class="term"><code class="classname">timed_mutex</code></span></dt><dd>
386 The native handle type is <code class="code">__gthread_mutex_t*</code> i.e.
387 <code class="code">pthread_mutex_t*</code> for the <code class="literal">posix</code>
388 thread model.
389 </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>
390 The native handle type is <code class="code">__gthread_recursive_mutex_t*</code>
391 i.e. <code class="code">pthread_mutex_t*</code> for the <code class="literal">posix</code>
392 thread model.
393 </dd><dt><span class="term"><code class="classname">condition_variable</code></span></dt><dd>
394 The native handle type is <code class="code">__gthread_cond_t*</code> i.e.
395 <code class="code">pthread_cond_t*</code> for the <code class="literal">posix</code>
396 thread model.
397 </dd></dl></div><p>
398 </p><p>
399 <span class="emphasis"><em>30.6.1 [futures.overview]/2</em></span>
400 <code class="code">launch</code> is a scoped enumeration type with
401 overloaded operators to support bitmask operations. There are no
402 additional bitmask elements defined.
403 </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>
404 In this implementation the <code class="literal">-std=gnu++14</code> or
405 <code class="literal">-std=c++14</code> flag must be used to enable language
406 and library
407 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
408 options. The pre-defined symbol
409 <code class="constant">__cplusplus</code> is used to check for the
410 presence of the required flag.
411 </p><p>
412 This status table is based on the table of contents of ISO/IEC 14882:2014.
413 Some subclauses are not shown in the table where the content is unchanged
414 since C++11 and the implementation is complete.
415 </p><p>
416 This section describes the C++14 and library TS support in mainline GCC,
417 not in any particular release.
418 </p><div class="table"><a id="table.cxx14_status"></a><p class="title"><strong>Table 1.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">
419 <span class="emphasis"><em>18</em></span>
420 </td><td colspan="3" align="left">
421 <span class="emphasis"><em>Language support</em></span>
422 </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">
423 <span class="emphasis"><em>19</em></span>
424 </td><td colspan="3" align="left">
425 <span class="emphasis"><em>Diagnostics</em></span>
426 </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">
427 <span class="emphasis"><em>20</em></span>
428 </td><td colspan="3" align="left">
429 <span class="emphasis"><em>General utilities</em></span>
430 </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">
431 Uses code from
432 <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
433 </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">
434 <span class="emphasis"><em>21</em></span>
435 </td><td colspan="3" align="left">
436 <span class="emphasis"><em>Strings</em></span>
437 </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">
438 <span class="emphasis"><em>22</em></span>
439 </td><td colspan="3" align="left">
440 <span class="emphasis"><em>Localization</em></span>
441 </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">
442 <span class="emphasis"><em>23</em></span>
443 </td><td colspan="3" align="left">
444 <span class="emphasis"><em>Containers</em></span>
445 </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">
446 <span class="emphasis"><em>24</em></span>
447 </td><td colspan="3" align="left">
448 <span class="emphasis"><em>Iterators</em></span>
449 </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">
450 <span class="emphasis"><em>25</em></span>
451 </td><td colspan="3" align="left">
452 <span class="emphasis"><em>Algorithms</em></span>
453 </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">
454 <span class="emphasis"><em>26</em></span>
455 </td><td colspan="3" align="left">
456 <span class="emphasis"><em>Numerics</em></span>
457 </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">
458 <span class="emphasis"><em>27</em></span>
459 </td><td colspan="3" align="left">
460 <span class="emphasis"><em>Input/output library</em></span>
461 </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">
462 <span class="emphasis"><em>28</em></span>
463 </td><td colspan="3" align="left">
464 <span class="emphasis"><em>Regular expressions</em></span>
465 </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><td align="left"> </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">
466 <span class="emphasis"><em>29</em></span>
467 </td><td colspan="3" align="left">
468 <span class="emphasis"><em>Atomic operations</em></span>
469 </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">
470 <span class="emphasis"><em>30</em></span>
471 </td><td colspan="3" align="left">
472 <span class="emphasis"><em>Thread support</em></span>
473 </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">See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
474 66146</a>
475 </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">
476 <span class="emphasis"><em>Appendix D</em></span>
477 </td><td colspan="3" align="left">
478 <span class="emphasis"><em>Compatibility features</em></span>
479 </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>Table 1.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">
480 <a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3662.html" target="_top">
481 N3662
482 </a>
483 </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">
484 <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3793.html" target="_top">
485 N3793
486 </a>
487 </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">
488 <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3804.html" target="_top">
489 N3804
490 </a>
491 </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">
492 <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3866.html" target="_top">
493 N3866
494 </a>
495 </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">
496 <a class="link" href="" target="_top">
497 N3905
498 </a>
499 </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">
500 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3915.pdf" target="_top">
501 N3915
502 </a>
503 </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">
504 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3916.pdf" target="_top">
505 N3916
506 </a>
507 </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">
508 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3920.html" target="_top">
509 N3920
510 </a>
511 </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">
512 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3921.html" target="_top">
513 N3921
514 </a>
515 </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">
516 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3925.pdf" target="_top">
517 N3925
518 </a>
519 </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">
520 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3932.htm" target="_top">
521 N3932
522 </a>
523 </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">
524 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf" target="_top">
525 N4100
526 </a>
527 </td><td align="left">File System</td><td align="left">Y</td><td align="left">
528 Link with
529 <a class="link" href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental" title="Experimental Library Extensions">
530 <code class="option">-lstdc++fs</code></a>
531 </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.2017"></a>C++ 2017</h3></div></div></div><p>
532 In this implementation the <code class="literal">-std=gnu++17</code> or
533 <code class="literal">-std=c++17</code> flag must be used to enable language
534 and library
535 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
536 options. The pre-defined symbol
537 <code class="constant">__cplusplus</code> is used to check for the
538 presence of the required flag.
539 </p><p>
540 This section describes the C++17 and library TS support in mainline GCC,
541 not in any particular release.
542 </p><p>
543 The following table lists new library features that are included in
544 the C++17 standard. The "Proposal" column provides a link to the
545 ISO C++ committee proposal that describes the feature, while the "Status"
546 column indicates the first version of GCC that contains an implementation of
547 this feature (if it has been implemented).
548 The "SD-6 Feature Test" column shows the corresponding macro or header from
549 <a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
550 Feature-testing recommendations for C++</a>.
551 </p><div class="table"><a id="table.cxx17_features"></a><p class="title"><strong>Table 1.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 bgcolor="#C8B0B0"><td align="left">
552 <code class="code">constexpr std::hardware_{constructive,destructive}_interference_size</code>
553 </td><td align="left">
554 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html" target="_top">
555 P0154R1
556 </a>
557 </td><td align="center"> No </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">
558 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html" target="_top">
559 P0137R1
560 </a>
561 </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">
562 <a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf" target="_top">
563 N4259
564 </a>
565 </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">
566 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html" target="_top">
567 P0063R3
568 </a>
569 </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">
570 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html" target="_top">
571 P0088R3
572 </a>
573 </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;variant&gt;)</code>,
574 <code class="code">__cpp_lib_variant &gt;= 201603</code>
575 (since 7.3, see Note 1)
576 </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">optional</code> </td><td align="left">
577 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
578 P0220R1
579 </a>
580 </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;optional&gt;)</code>,
581 <code class="code">__cpp_lib_optional &gt;= 201603</code>
582 (since 7.3, see Note 1)
583 </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">any</code> </td><td align="left">
584 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
585 P0220R1
586 </a>
587 </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;any&gt;)</code>,
588 <code class="code">__cpp_lib_any &gt;= 201603</code>
589 (since 7.3, see Note 1)
590 </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">string_view</code> </td><td align="left">
591 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
592 P0220R1
593 </a>
594 </td><td align="center"> 7.1 </td><td align="left"> <code class="code">__has_include(&lt;string_view&gt;)</code>,
595 <code class="code">__cpp_lib_string_view &gt;= 201603</code>
596 (since 7.3, see Note 1)
597 </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">memory_resource</code> </td><td align="left">
598 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
599 P0220R1
600 </a>
601 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__has_include(&lt;memory_resource&gt;)</code>,
602 <code class="code">__cpp_lib_memory_resource &gt;= 201603</code>
603 </td></tr><tr><td align="left"> Library Fundamentals V1 TS Components: <code class="code">apply</code> </td><td align="left">
604 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
605 P0220R1
606 </a>
607 </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">
608 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
609 P0220R1
610 </a>
611 </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">
612 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
613 P0220R1
614 </a>
615 </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">
616 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html" target="_top">
617 P0220R1
618 </a>
619 </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">
620 <a class="link" href="" target="_top">
621 P0007R1
622 </a>
623 </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">
624 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387" target="_top">
625 N4387
626 </a>
627 </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">
628 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf" target="_top">
629 P0209R2
630 </a>
631 </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">
632 Removing <code class="code">auto_ptr</code>, <code class="code">random_shuffle()</code>,
633 And Old <code class="code">&lt;functional&gt;</code> Stuff
634 </td><td align="left">
635 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm" target="_top">
636 N4190
637 </a>
638 </td><td align="center">No (kept for backwards compatibility)</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecating Vestigial Library Parts in C++17 </td><td align="left">
639 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html" target="_top">
640 P0174R2
641 </a>
642 </td><td align="center"> No (kept for backwards compatibility)</td><td align="left"> </td></tr><tr><td align="left"> Making <code class="code">std::owner_less</code> more flexible </td><td align="left">
643 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html" target="_top">
644 P0074R0
645 </a>
646 </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">
647 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296" target="_top">
648 LWG2296
649 </a>
650 </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">
651 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf" target="_top">
652 N4089
653 </a>
654 </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">
655 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html" target="_top">
656 N4366
657 </a>
658 </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">
659 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html" target="_top">
660 P0033R1
661 </a>
662 </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">
663 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html" target="_top">
664 N4169
665 </a>
666 </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">
667 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html" target="_top">
668 N4277
669 </a>
670 </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">
671 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html" target="_top">
672 P0005R4
673 </a>
674 </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">
675 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html" target="_top">
676 P0358R1
677 </a>
678 </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">
679 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf" target="_top">
680 P0253R1
681 </a>
682 </td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr><td align="left"> Extending memory management tools </td><td align="left">
683 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top">
684 P0040R3
685 </a>
686 </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">
687 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top">
688 P0163R0
689 </a>
690 </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">
691 <a class="link" href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf" target="_top">
692 N3911
693 </a>
694 </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">
695 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html" target="_top">
696 N4389
697 </a>
698 </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">
699 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html" target="_top">
700 P0006R0
701 </a>
702 </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">
703 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html" target="_top">
704 P0013R1
705 </a>
706 </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">
707 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html" target="_top">
708 P0185R1
709 </a>
710 </td><td align="center"> 7 (<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">
711 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html" target="_top">
712 P0077R2
713 </a>
714 </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">
715 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html" target="_top">
716 P0258R2
717 </a>
718 </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">
719 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html" target="_top">
720 P0092R1
721 </a>
722 </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">
723 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html" target="_top">
724 P0505R0
725 </a>
726 </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_chrono &gt;= 201611 </code>
727 (since 7.3, see Note 2)
728 </td></tr><tr><td align="left"> Constexpr for <code class="code">std::char_traits</code> </td><td align="left">
729 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html" target="_top">
730 P0426R1
731 </a>
732 </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __cpp_lib_constexpr_char_traits &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">
733 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf" target="_top">
734 P0254R2
735 </a>
736 </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">
737 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html" target="_top">
738 P0272R1
739 </a>
740 </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">
741 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf" target="_top">
742 N4258
743 </a>
744 </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">
745 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html" target="_top">
746 N4284
747 </a>
748 </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">
749 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html" target="_top">
750 N4510
751 </a>
752 </td><td align="center"> 3.0 </td><td align="left"><code class="code"> __cpp_lib_incomplete_container_elements &gt;= 201505 </code>
753 (since 6.2, see Note 2)
754 </td></tr><tr><td align="left"> Emplace return type </td><td align="left">
755 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf" target="_top">
756 P0084R2
757 </a>
758 </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">
759 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html" target="_top">
760 N4279
761 </a>
762 </td><td align="center"> 6.1 </td><td align="left"><code class="code"> __cpp_lib_map_try_emplace &gt;= 201411</code>,
763 <code class="code"> __cpp_lib_unordered_map_try_emplace &gt;= 201411</code>
764 </td></tr><tr><td align="left"> Splicing Maps and Sets </td><td align="left">
765 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf" target="_top">
766 P0083R3
767 </a>
768 </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">
769 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf" target="_top">
770 N4280
771 </a>
772 </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">
773 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html" target="_top">
774 P0031R0
775 </a>
776 </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">
777 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html" target="_top">
778 P0024R2
779 </a>
780 </td><td align="center"> 9.1 </td><td align="left"><code class="code"> __has_include(&lt;execution&gt;) </code>,
781 <code class="code"> __cpp_lib_execution &gt;= 201603 </code>,
782 <code class="code"> __cpp_lib_parallel_algorithm &gt;= 201603 </code>
783 (requires linking with <code class="code">-ltbb</code>, see Note 3)
784 </td></tr><tr><td align="left"> An algorithm to "clamp" a value between a pair of boundary values </td><td align="left">
785 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html" target="_top">
786 P0025R0
787 </a>
788 </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">
789 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf" target="_top">
790 P0295R0
791 </a>
792 </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">
793 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf" target="_top">
794 P0030R1
795 </a>
796 </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">
797 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf" target="_top">
798 P0226R1
799 </a>
800 </td><td align="center"> 7.1 </td><td align="left"><code class="code"> __cpp_lib_math_special_functions &gt;= 201603 </code>
801 (see Note 4)
802 </td></tr><tr><td align="left">Adopt the File System TS for C++17 </td><td align="left">
803 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html" target="_top">
804 P0218R1
805 </a>
806 </td><td align="center"> 8.1 </td><td align="left"><code class="code"> __has_include(&lt;filesystem&gt;) </code>,
807 <code class="code"> __cpp_lib_filesystem &gt;= 201603 </code>
808 (GCC 8.x requires linking with <code class="code">-lstdc++fs</code>)
809 </td></tr><tr><td align="left"> Relative Paths for Filesystem</td><td align="left">
810 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html" target="_top">
811 P0219R1
812 </a>
813 </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">
814 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf" target="_top">
815 P0392R0
816 </a>
817 </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">
818 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html" target="_top">
819 P0317R1
820 </a>
821 </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">
822 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html" target="_top">
823 P0152R1
824 </a>
825 </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">
826 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html" target="_top">
827 N4508
828 </a>
829 </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">
830 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html" target="_top">
831 P0156R2
832 </a>
833 </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">
834 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf" target="_top">
835 P0298R3
836 </a>
837 </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)
838 </td></tr><tr bgcolor="#B0B0B0"><td align="left"> Elementary string conversions </td><td align="left">
839 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html" target="_top">
840 P0067R5
841 </a>
842 </td><td align="center"> 8.1 (only integral types supported) </td><td align="left"><code class="code"> __has_include(&lt;charconv&gt;) </code>
843 <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">
844 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf" target="_top">
845 P0032R3
846 </a>
847 </td><td align="center"> 7.1 </td><td align="left">
848 <code class="code"> __cpp_lib_any &gt;= 201606 </code>,
849 <code class="code"> __cpp_lib_optional &gt;= 201606 </code>,
850 <code class="code"> __cpp_lib_variant &gt;= 201606 </code>
851 </td></tr><tr><td align="left"> Making Optional Greater Equal Again </td><td align="left">
852 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf" target="_top">
853 P0307R2
854 </a>
855 </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>
856 Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
857 <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the
858 header is included without using <code class="option">-std</code> to enable C++17 support.
859 </p><p>
860 Note 2: This feature is supported in older releases but the
861 <code class="code">__cpp_lib</code> macro is not defined to the right value
862 (or not defined at all) until the version shown in parentheses.
863 </p><p>
864 Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018
865 or later. If the <code class="filename">&lt;execution&gt;</code>
866 header is included then <code class="code">-ltbb</code> must be used to link to TBB.
867 </p><p>
868 Note 4: The mathematical special functions are enabled in C++17 mode from
869 GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define
870 <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
871 and test for <code class="code">__STDCPP_MATH_SPEC_FUNCS__ &gt;= 201003L</code>.
872 </p><p>
873 The following status table is based on the table of contents of
874 ISO/IEC 14882:2017.
875 Some subclauses are not shown in the table where the content is unchanged
876 since C++14 and the implementation is complete.
877 </p><div class="table"><a id="table.cxx17_status"></a><p class="title"><strong>Table 1.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">
878 <span class="emphasis"><em>21</em></span>
879 </td><td colspan="3" align="left">
880 <span class="emphasis"><em>Language support</em></span>
881 </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 bgcolor="#C8B0B0"><td align="left">21.6.5</td><td align="left">Hardware interference size</td><td align="left">N</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">
882 <span class="emphasis"><em>22</em></span>
883 </td><td colspan="3" align="left">
884 <span class="emphasis"><em>Diagnostics</em></span>
885 </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">
886 <span class="emphasis"><em>23</em></span>
887 </td><td colspan="3" align="left">
888 <span class="emphasis"><em>General utilities</em></span>
889 </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 bgcolor="#B0B0B0"><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Partial</td><td align="left">Only integer types supported, not floating-point types</td></tr><tr bgcolor="#B0B0B0"><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Partial</td><td align="left">Only integer types supported, not floating-point types</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">
890 <span class="emphasis"><em>24</em></span>
891 </td><td colspan="3" align="left">
892 <span class="emphasis"><em>Strings</em></span>
893 </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">
894 <span class="emphasis"><em>25</em></span>
895 </td><td colspan="3" align="left">
896 <span class="emphasis"><em>Localization</em></span>
897 </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">
898 <span class="emphasis"><em>26</em></span>
899 </td><td colspan="3" align="left">
900 <span class="emphasis"><em>Containers</em></span>
901 </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">
902 <span class="emphasis"><em>27</em></span>
903 </td><td colspan="3" align="left">
904 <span class="emphasis"><em>Iterators</em></span>
905 </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">
906 <span class="emphasis"><em>28</em></span>
907 </td><td colspan="3" align="left">
908 <span class="emphasis"><em>Algorithms</em></span>
909 </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/oneapi-src/oneDPL" target="_top">oneAPI DPC++ Library</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">
910 <span class="emphasis"><em>29</em></span>
911 </td><td colspan="3" align="left">
912 <span class="emphasis"><em>Numerics</em></span>
913 </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">
914 <span class="emphasis"><em>30</em></span>
915 </td><td colspan="3" align="left">
916 <span class="emphasis"><em>Input/output library</em></span>
917 </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">
918 <span class="emphasis"><em>31</em></span>
919 </td><td colspan="3" align="left">
920 <span class="emphasis"><em>Regular expressions</em></span>
921 </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><td align="left"> </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">
922 <span class="emphasis"><em>32</em></span>
923 </td><td colspan="3" align="left">
924 <span class="emphasis"><em>Atomic operations</em></span>
925 </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">
926 <span class="emphasis"><em>33</em></span>
927 </td><td colspan="3" align="left">
928 <span class="emphasis"><em>Thread support</em></span>
929 </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">Broken</td><td align="left">See <a class="link" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146" target="_top">PR
930 66146</a>
931 </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">
932 <span class="emphasis"><em>Appendix D</em></span>
933 </td><td colspan="3" align="left">
934 <span class="emphasis"><em>Compatibility features</em></span>
935 </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>Table 1.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">
936 <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html" target="_top">
937 N4076
938 </a>
939 </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">
940 <a class="link" href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm" target="_top">
941 N4273
942 </a>
943 </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">
944 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf" target="_top">
945 N4061
946 </a>
947 </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">
948 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm" target="_top">
949 N4066
950 </a>
951 </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">
952 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf" target="_top">
953 N4282
954 </a>
955 </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">
956 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html" target="_top">
957 N4388
958 </a>
959 </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">
960 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html" target="_top">
961 N4391
962 </a>
963 </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">
964 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf" target="_top">
965 N4502
966 </a>
967 </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">
968 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf" target="_top">
969 N4519
970 </a>
971 </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">
972 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html" target="_top">
973 N4521
974 </a>
975 </td><td align="left"> Merge Fundamentals V1 into V2 </td><td align="left">
976 N (components from V1 are still in namespace
977 <code class="code">fundamentals_v1</code>)
978 </td><td align="left">Library Fundamentals 2 TS</td></tr><tr><td align="left">
979 <a class="link" href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html" target="_top">
980 P0013R1
981 </a>
982 </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">
983 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4531.html" target="_top">
984 N4531
985 </a>
986 </td><td align="left">std::rand replacement, revision 3</td><td align="left">Y</td><td align="left">Library Fundamentals 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,
987 see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
988 Specific Behavior</a> and <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
989 2011 Implementation Specific Behavior</a>. This section only
990 documents behaviour which is new in the 2017 standard.
991 </p><p>
992 <span class="emphasis"><em>20.5.1.2 [headers]</em></span>
993 Whether names from Annex K are declared by C++ headers depends on
994 whether the underlying C library supports Annex K and declares the
995 names. For the GNU C library, there is no Annex K support and so
996 none of its names are declared by C++ headers.
997 </p><p>
998 <span class="emphasis"><em>23.6.5 [optional.bad_optional_access]</em></span>
999 <code class="code">what()</code> returns <code class="literal">"bad optional access"</code>.
1000 </p><p>
1001 <span class="emphasis"><em>23.7.3 [variant.variant]</em></span>
1002 <code class="classname">variant</code> supports over-aligned types.
1003 </p><p>
1004 <span class="emphasis"><em>23.7.10 [variant.bad.access]</em></span>
1005 <code class="code">what()</code> returns one of the strings
1006 <code class="literal">"std::get: variant is valueless"</code>,
1007 <code class="literal">"std::get: wrong index for variant"</code>,
1008 <code class="literal">"std::visit: variant is valueless"</code>,
1009 or <code class="literal">"std::visit&lt;R&gt;: variant is valueless"</code>.
1010 </p><p>
1011 <span class="emphasis"><em>23.12.5.2 [memory.resource.pool.options]</em></span>
1012 Let S equal <code class="code">numeric_limits&lt;size_t&gt;::digits</code>.
1013 The limit for maximum number of blocks in a chunk is given by
1014 <span class="mathphrase">2<sup>N</sup>-1</span>,
1015 where N is <span class="mathphrase">min(19, 3 + S/2)</span>.
1016 The largest allocation size that will be allocated from a pool is
1017 <span class="mathphrase">2<sup>22</sup></span>
1018 when <span class="mathphrase">S &gt; 20</span>,
1019 otherwise 3072 when <span class="mathphrase">S &gt; 16</span>,
1020 otherwise 768.
1021 </p><p>
1022 <span class="emphasis"><em>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</em></span>
1023 The default <code class="code">next_buffer_size</code> is <code class="code">128 * sizeof(void*)</code>.
1024 The default growth factor is <code class="code">1.5</code>.
1025 </p><p>
1026 <span class="emphasis"><em>23.15.4.3 [meta.unary.prop]</em></span>
1027 The predicate condition for
1028 <code class="code">has_unique_object_representations</code> is true for all scalar
1029 types except floating point types.
1030 </p><p>
1031 <span class="emphasis"><em>23.19.3 [execpol.type],
1032 28.4.3 [algorithms.parallel.exec]</em></span>
1033 There are no implementation-defined execution policies.
1034 </p><p>
1035 <span class="emphasis"><em>24.4.2 [string.view.template]</em></span>
1036 <code class="classname">basic_string_view&lt;C, T&gt;::iterator</code> is
1037 <code class="code">C*</code> and
1038 <code class="classname">basic_string_view&lt;C, T&gt;::const_iterator</code> is
1039 <code class="code">const C*</code>.
1040 </p><p>
1041 <span class="emphasis"><em>28.4.3 [algorithms.parallel.exec]</em></span>
1042 Threads of execution created by <code class="classname">std::thread</code>
1043 provide concurrent forward progress guarantees, so threads of execution
1044 implicitly created by the library will provide parallel forward
1045 progress guarantees.
1046 </p><p>
1047 <span class="emphasis"><em>29.4.1 [cfenv.syn]</em></span>
1048 The effects of the <code class="filename">&lt;cfenv&gt;</code> functions
1049 depends on whether the <code class="code">FENV_ACCESS</code> pragma is supported,
1050 and on the C library that provides the header.
1051 </p><p>
1052 <span class="emphasis"><em>29.6.9 [c.math.rand]</em></span>
1053 Whether the <code class="function">rand</code> function may introduce data
1054 races depends on the target C library that provides the function.
1055 </p><p>
1056 <span class="emphasis"><em>29.9.5 [sf.cmath]</em></span>
1057 The effect of calling the mathematical special functions with large
1058 inputs should be documented here.
1059 </p><p>
1060 <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>
1061 The behavior of the filesystem library implementation will depend on
1062 the target operating system. Some features will not be supported
1063 on some targets.
1064 </p><p>
1065 <span class="emphasis"><em>30.10.5 [fs.filesystem.syn]</em></span>
1066 The clock used for file times is an unspecified type
1067 with a signed 64-bit representation, capable of representing
1068 timestamps with nanosecond resolution. The clock's epoch is
1069 unspecified, but is not the same as the system clock's epoch.
1070 </p><p>
1071 <span class="emphasis"><em>30.10.7.1 [fs.path.generic]</em></span>
1072 dot-dot in the root-directory refers to the root-directory itself.
1073 On Windows, a drive specifier such as <code class="code">"C:"</code> or
1074 <code class="code">"z:"</code> is treated as a root-name. On Cygwin, a path
1075 that begins with two successive directory separators is a
1076 root-name. Otherwise (for POSIX-like systems other than Cygwin),
1077 the implementation-defined root-name is an unspecified string
1078 which does not appear in any pathnames.
1079 </p><p>
1080 <span class="emphasis"><em>30.10.10.1 [fs.enum.path.format]</em></span>
1081 The character sequence is always interpreted in the native pathname
1082 format.
1083 </p><p>
1084 <span class="emphasis"><em>30.10.15.4 [fs.op.file_size]</em></span>
1085 If <code class="code">!is_regular_file(p)</code>, an error is reported.
1086 </p></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>
1087 In this implementation the <code class="literal">-std=gnu++2a</code> or
1088 <code class="literal">-std=c++2a</code> flag must be used to enable language
1089 and library
1090 features. See <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a>
1091 options. The pre-defined symbol
1092 <code class="constant">__cplusplus</code> is used to check for the
1093 presence of the required flag.
1094 </p><p>
1095 This section describes the C++20 and library TS support in mainline GCC,
1096 not in any particular release.
1097 </p><p>
1098 The following table lists new library features that have been accepted into
1099 the C++20 working draft. The "Proposal" column provides a link to the
1100 ISO C++ committee proposal that describes the feature, while the "Status"
1101 column indicates the first version of GCC that contains an implementation of
1102 this feature (if it has been implemented).
1103 A dash (—) in the status column indicates that the changes in the proposal
1104 either do not affect the code in libstdc++, or the changes are not required for conformance.
1105 The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
1106 <a class="link" href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations" target="_top">SD-6:
1107 Feature-testing recommendations for C++</a> (where applicable)
1108 or any notes about the implementation.
1109 </p><div class="table"><a id="table.cxx20_features"></a><p class="title"><strong>Table 1.8. C++ 2020 Library Features</strong></p><div class="table-contents"><table class="table" summary="C++ 2020 Library Features" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Library Feature</th><th align="left">Proposal</th><th align="left">Status</th><th align="left">SD-6 Feature Test / Notes</th></tr></thead><tbody><tr><td colspan="4" align="left">
1110 <span class="bold"><strong>Compile-time programming</strong></span>
1111 </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">
1112 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html" target="_top">
1113 P0202R3 </a>
1114 </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">
1115 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html" target="_top">
1116 P0879R0 </a>
1117 </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">
1118 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html" target="_top">
1119 P0415R1 </a>
1120 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_complex &gt;= 201711L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left"> P0595R2 <code class="code">std::is_constant_evaluated()</code> </td><td align="left">
1121 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html" target="_top">
1122 P0595R2 </a>
1123 </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">
1124 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html" target="_top">
1125 P0784R7 </a>
1126 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_constexpr_dynamic_alloc &gt;= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making <code class="code">std::string</code> constexpr </td><td align="left">
1127 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf" target="_top">
1128 P0980R1 </a>
1129 </td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_string &gt;= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Making <code class="code">std::vector</code> constexpr </td><td align="left">
1130 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1004r2.pdf" target="_top">
1131 P1004R2 </a>
1132 </td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_vector &gt;= 201907L</code> </td></tr><tr><td align="left"> Constexpr in <code class="code">std::pointer_traits</code> </td><td align="left">
1133 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf" target="_top">
1134 P1006R1 </a>
1135 </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">
1136 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1645r1.html" target="_top">
1137 P1645R1 </a>
1138 </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">
1139 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html" target="_top">
1140 P0858R0 </a>
1141 </td><td align="center"> 9.1 </td><td align="left">
1142 <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>
1143 </td></tr><tr><td align="left"> <code class="code">constexpr</code> comparison operators for <code class="code">std::array</code> </td><td align="left">
1144 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf" target="_top">
1145 P1023R0 </a>
1146 </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">
1147 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html" target="_top">
1148 P1032R1 </a>
1149 </td><td align="center"> 10.1 </td><td align="left">
1150 <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>
1151 </td></tr><tr><td align="left"> <code class="code">constexpr <span class="emphasis"><em>INVOKE</em></span></code> </td><td align="left">
1152 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html" target="_top">
1153 P1065R2 </a>
1154 </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">
1155 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf" target="_top">
1156 P0550R2 </a>
1157 </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">
1158 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html" target="_top">
1159 P0758R1 </a>
1160 </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">
1161 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf" target="_top">
1162 P0887R1 </a>
1163 </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">
1164 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf" target="_top">
1165 P0318R1 </a>
1166 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_unwrap_ref &gt;= 201811L</code> (since 9.4, see Note 1) </td></tr><tr bgcolor="#B0B0B0"><td align="left"> Improving Completeness Requirements for Type Traits </td><td align="left">
1167 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf" target="_top">
1168 P1285R0 </a>
1169 </td><td align="center"> Partial </td><td align="left"> </td></tr><tr><td align="left"> Missing feature test macros </td><td align="left">
1170 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html" target="_top">
1171 P1353R0 </a>
1172 </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">
1173 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html" target="_top">
1174 P0340R3 </a>
1175 </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">
1176 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf" target="_top">
1177 P1357R1 </a>
1178 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_bounded_array_traits &gt;= 201902L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Layout-compatibility and pointer-interconvertibility traits </td><td align="left">
1179 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0466r5.pdf" target="_top">
1180 P0466R5 </a>
1181 </td><td align="center"> </td><td align="left">
1182 <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>
1183 </td></tr><tr><td align="left"> Integrating feature-test macros into the C++ WD </td><td align="left">
1184 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html" target="_top">
1185 P0941R2 </a>
1186 </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">
1187 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf" target="_top">
1188 P0754R2 </a>
1189 </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">
1190 <span class="bold"><strong>Synchronization</strong></span>
1191 </td></tr><tr><td align="left"> Atomic Ref </td><td align="left">
1192 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html" target="_top">
1193 P0019R8 </a>
1194 </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">
1195 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html" target="_top">
1196 P0020R6 </a>
1197 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_atomic_float &gt;= 201711L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> C++ Synchronized Buffered Ostream </td><td align="left">
1198 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf" target="_top">
1199 P0053R7 </a>
1200 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_syncbuf &gt;= 201711L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Manipulators for C++ Synchronized Buffered Ostream </td><td align="left">
1201 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0753r2.pdf" target="_top">
1202 P0753R2 </a>
1203 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_syncbuf &gt;= 201803L</code> </td></tr><tr><td align="left"> Make <code class="code">std::memory_order</code> a scoped enumeration </td><td align="left">
1204 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0439r0.html" target="_top">
1205 P0439R0 </a>
1206 </td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </td><td align="left">
1207 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html" target="_top">
1208 P0528R3 </a>
1209 </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic <code class="code">shared_ptr</code> </td><td align="left">
1210 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html" target="_top">
1211 P0718R2 </a>
1212 </td><td align="center"> </td><td align="left"> <code class="code"> __cpp_lib_atomic_shared_ptr &gt;= 201711L</code> </td></tr><tr><td align="left"> std::stop_token and std::jthread </td><td align="left">
1213 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf" target="_top">
1214 P0660R10 </a>
1215 </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">
1216 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html" target="_top">
1217 P1869R1 </a>
1218 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread &gt;= 201911L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </td><td align="left">
1219 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html" target="_top">
1220 P1135R6 </a>
1221 </td><td align="center"> </td><td align="left">
1222 <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>
1223 </td></tr><tr><td align="left"> Fixing Atomic Initialization </td><td align="left">
1224 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf" target="_top">
1225 P0883R2 </a>
1226 </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">
1227 <span class="bold"><strong>Ranges and Concepts</strong></span>
1228 </td></tr><tr><td align="left"> Standard Library Concepts </td><td align="left">
1229 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf" target="_top">
1230 P0898R3 </a>
1231 </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">
1232 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf" target="_top">
1233 P1754R1 </a>
1234 </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">
1235 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html" target="_top">
1236 P1964R2 </a>
1237 </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">
1238 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf" target="_top">
1239 P0896R4 </a>
1240 </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">
1241 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf" target="_top">
1242 P1035R7 </a>
1243 </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">
1244 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html" target="_top">
1245 P1716R3 </a>
1246 </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">
1247 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html" target="_top">
1248 P1248R1 </a>
1249 </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Ranges Design Cleanup </td><td align="left">
1250 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf" target="_top">
1251 P1252R2 </a>
1252 </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
1253 <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
1254 </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Extending chrono to Calendars and Time Zones </td><td align="left">
1255 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html" target="_top">
1256 P0355R7 </a>
1257 </td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_chrono &gt;= 201803L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Miscellaneous minor fixes for chrono </td><td align="left">
1258 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html" target="_top">
1259 P1466R3 </a>
1260 </td><td align="left"> </td><td align="left"> <code class="code">__cpp_lib_chrono &gt;= 201907L</code> </td></tr><tr><td align="left"> <code class="code">&lt;chrono&gt;</code> <code class="code">zero()</code>, <code class="code">min()</code>, and <code class="code">max()</code> should be <code class="code">noexcept</code> </td><td align="left">
1261 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf" target="_top">
1262 P0972R0 </a>
1263 </td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
1264 <span class="bold"><strong>Three-way comparison</strong></span>
1265 </td></tr><tr><td align="left"> Library Support for the Spaceship (Comparison) Operator </td><td align="left">
1266 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf" target="_top">
1267 P0768R1 </a>
1268 </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">
1269 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html" target="_top">
1270 P0905R1 </a>
1271 </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">
1272 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html" target="_top">
1273 P1614R2 </a>
1274 </td><td align="center"> 10.1 </td><td align="left">
1275 <code class="code">__cpp_lib_three_way_comparison &gt;= 201907L</code>
1276 </td></tr><tr><td colspan="4" align="left">
1277 <span class="bold"><strong>Strings and text</strong></span>
1278 </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">string::reserve</code> Should Not Shrink </td><td align="left">
1279 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html" target="_top">
1280 P0966R1 </a>
1281 </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">char8_t</code>: A type for UTF-8 characters and strings </td><td align="left">
1282 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html" target="_top">
1283 P0482R6 </a>
1284 </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">
1285 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html" target="_top">
1286 P1423R3 </a>
1287 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_char8_t &gt;= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Text formatting </td><td align="left">
1288 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html" target="_top">
1289 P0645R10 </a>
1290 </td><td align="center"> </td><td align="left">
1291 <code class="code">__cpp_lib_format &gt;= 201907L</code>
1292 </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Integration of chrono with text formatting </td><td align="left">
1293 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf" target="_top">
1294 P1361R2 </a>
1295 </td><td align="center"> </td><td align="left">
1296 <code class="code">__cpp_lib_format &gt;= 201907L</code>
1297 </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Printf corner cases in <code class="code">std::format</code> </td><td align="left">
1298 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html" target="_top">
1299 P1652R1 </a>
1300 </td><td align="center"> </td><td align="left">
1301 <code class="code">__cpp_lib_format &gt;= 201907L</code>
1302 </td></tr><tr><td align="left"> String Prefix and Suffix Checking </td><td align="left">
1303 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html" target="_top">
1304 P0457R2 </a>
1305 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_starts_ends_with &gt;= 201711L</code> (since 9.4, see Note 1) </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Update The Reference To The Unicode Standard </td><td align="left">
1306 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html" target="_top">
1307 P1025R1 </a>
1308 </td><td align="center"> </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
1309 <span class="bold"><strong>Containers</strong></span>
1310 </td></tr><tr><td align="left"> span: bounds-safe views for sequences of objects </td><td align="left">
1311 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf" target="_top">
1312 P0122R7 </a>
1313 </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">
1314 Usability Enhancements for <code class="classname">std::span</code>
1315 </td><td align="left">
1316 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf" target="_top">
1317 P1024R3 </a>
1318 </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">
1319 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md" target="_top">
1320 P1085R2 </a>
1321 </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">
1322 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html" target="_top">
1323 P1976R2 </a>
1324 </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">
1325 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html" target="_top">
1326 P0325R4 </a>
1327 </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">
1328 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html" target="_top">
1329 P0458R2 </a>
1330 </td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Comparing Unordered Containers </td><td align="left">
1331 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf" target="_top">
1332 P0809R0 </a>
1333 </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous lookup for unordered containers </td><td align="left">
1334 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html" target="_top">
1335 P0919R3 </a>
1336 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </td></tr><tr><td align="left"> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </td><td align="left">
1337 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html" target="_top">
1338 P1209R0 </a>
1339 </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">
1340 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf" target="_top">
1341 P0646R1 </a>
1342 </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">
1343 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf" target="_top">
1344 P1115R3 </a>
1345 </td><td align="center"> 9.1 </td><td align="left">
1346 <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>
1347 </td></tr><tr><td align="left"> Signed ssize() functions, unsigned size() functions </td><td align="left">
1348 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html" target="_top">
1349 P1227R2 </a>
1350 </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">
1351 <span class="bold"><strong>Memory management</strong></span>
1352 </td></tr><tr><td align="left"> Utility to convert a pointer to a raw pointer </td><td align="left">
1353 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html" target="_top">
1354 P0653R2 </a>
1355 </td><td align="center"> 8.1 </td><td align="left"> <code class="code">__cpp_lib_to_address &gt;= 201711L</code> (since 9.4, see Note 1) </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Extending <code class="code">make_shared</code> to Support Arrays </td><td align="left">
1356 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html" target="_top">
1357 P0674R1 </a>
1358 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_shared_ptr_arrays &gt;= 201707L</code> </td></tr><tr><td align="left"> Efficient sized delete for variable sized classes </td><td align="left">
1359 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html" target="_top">
1360 P0722R3 </a>
1361 </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">
1362 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf" target="_top">
1363 P0591R4 </a>
1364 </td><td align="center"> 9.1 </td><td align="left">
1365 <code class="code">std::scoped_allocator_adaptor</code> changes missing in 9.1.0
1366 </td></tr><tr><td align="left"> <code class="code">std::assume_aligned</code> </td><td align="left">
1367 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf" target="_top">
1368 P1007R3 </a>
1369 </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_assume_aligned &gt;= 201811L</code> (since 9.4, see Note 1) </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Smart pointer creation with default initialization </td><td align="left">
1370 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html" target="_top">
1371 P1020R1 </a>
1372 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </td></tr><tr><td align="left"> Make stateful allocator propagation more consistent for <code class="code">operator+(basic_string)</code> </td><td align="left">
1373 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html" target="_top">
1374 P1165R1 </a>
1375 </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left">
1376 <code class="classname">polymorphic_allocator&lt;&gt;</code> as a vocabulary type
1377 </td><td align="left">
1378 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf" target="_top">
1379 P0339R6 </a>
1380 </td><td align="center"> 9.1 </td><td align="left">
1381 <code class="code">__cpp_lib_polymorphic_allocator &gt;= 201902L</code> (since 9.4, see Note 1)
1382 </td></tr><tr><td align="left"> LWG 2511: guaranteed copy elision for piecewise construction </td><td align="left">
1383 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0475r1.html" target="_top">
1384 P0475R1 </a>
1385 </td><td align="center"> 7.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
1386 <span class="bold"><strong>Miscellaneous</strong></span>
1387 </td></tr><tr><td align="left"> <code class="code">nodiscard</code> in the Library </td><td align="left">
1388 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf" target="_top">
1389 P0600R1 </a>
1390 </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">
1391 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf" target="_top">
1392 P0616R0 </a>
1393 </td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr><td align="left"> Deprecate POD </td><td align="left">
1394 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html" target="_top">
1395 P0767R1 </a>
1396 </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">
1397 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf" target="_top">
1398 P0777R1 </a>
1399 </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">
1400 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf" target="_top">
1401 P0551R3 </a>
1402 </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Bit-casting object representations </td><td align="left">
1403 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html" target="_top">
1404 P0476R2 </a>
1405 </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_bit_cast &gt;= 201806L</code> </td></tr><tr><td align="left"> Integral power-of-2 operations </td><td align="left">
1406 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html" target="_top">
1407 P0556R3 </a>
1408 </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">
1409 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf" target="_top">
1410 P1956R1 </a>
1411 </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">
1412 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html" target="_top">
1413 P0586R2 </a>
1414 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_integer_comparison_functions &gt;= 202002L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Reviewing Deprecated Facilities of C++17 for C++20 </td><td align="left">
1415 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html" target="_top">
1416 P0619R4 </a>
1417 </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">fpos</code> Requirements </td><td align="left">
1418 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html" target="_top">
1419 P0759R1 </a>
1420 </td><td align="center"></td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Add <code class="code">shift</code> to <code class="code">&lt;algorithm&gt;</code> </td><td align="left">
1421 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf" target="_top">
1422 P0769R2 </a>
1423 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_shift &gt;= 201806L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Standard Library Specification in a Concepts and Contracts World </td><td align="left">
1424 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf" target="_top">
1425 P0788R3 </a>
1426 </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">explicit(bool)</code> </td><td align="left">
1427 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html" target="_top">
1428 P0892R2 </a>
1429 </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">
1430 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html" target="_top">
1431 P0935R0 </a>
1432 </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">
1433 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf" target="_top">
1434 P0771R1 </a>
1435 </td><td align="center"> 7.2 </td><td align="left"> </td></tr><tr><td align="left"> Simplified partial function application </td><td align="left">
1436 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html" target="_top">
1437 P0356R5 </a>
1438 </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">
1439 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html" target="_top">
1440 P1651R0 </a>
1441 </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">
1442 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html" target="_top">
1443 P0357R3 </a>
1444 </td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Fixing <code class="code">operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </td><td align="left">
1445 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html" target="_top">
1446 P0487R1 </a>
1447 </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> <code class="code">variant</code> and <code class="code">optional</code> should propagate copy/move triviality </td><td align="left">
1448 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html" target="_top">
1449 P0602R4 </a>
1450 </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">
1451 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html" target="_top">
1452 P0608R3 </a>
1453 </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">
1454 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf" target="_top">
1455 P0655R1 </a>
1456 </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">
1457 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html" target="_top">
1458 P0899R1 </a>
1459 </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">
1460 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html" target="_top">
1461 P1123R0 </a>
1462 </td><td align="center"></td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Cleaning up Clause 20 </td><td align="left">
1463 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf" target="_top">
1464 P1148R0 </a>
1465 </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">
1466 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html" target="_top">
1467 P1210R0 </a>
1468 </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">
1469 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html" target="_top">
1470 P1236R1 </a>
1471 </td><td align="center"></td><td align="left"> </td></tr><tr><td align="left">
1472 I Stream, You Stream, We All Stream for
1473 <code class="classname">istream_iterator</code>
1474 </td><td align="left">
1475 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html" target="_top">
1476 P0738R2 </a>
1477 </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left">
1478 Mandating the Standard Library:
1479 Clause 16 - Language support library
1480 </td><td align="left">
1481 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
1482 P1458R1 </a>
1483 </td><td align="center"></td><td align="left"> </td></tr><tr><td align="left">
1484 Mandating the Standard Library:
1485 Clause 18 - Diagnostics library
1486 </td><td align="left">
1487 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf" target="_top">
1488 P1459R1 </a>
1489 </td><td align="center"></td><td align="left"> </td></tr><tr><td align="left">
1490 Mandating the Standard Library:
1491 Clause 20 - Strings library
1492 </td><td align="left">
1493 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html" target="_top">
1494 P1462R1 </a>
1495 </td><td align="center"></td><td align="left"> </td></tr><tr><td align="left">
1496 Mandating the Standard Library:
1497 Clause 21 - Containers library
1498 </td><td align="left">
1499 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf" target="_top">
1500 P1463R1 </a>
1501 </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
1502 Mandating the Standard Library:
1503 Clause 22 - Iterators library
1504 </td><td align="left">
1505 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf" target="_top">
1506 P1464R1 </a>
1507 </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">
1508 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf" target="_top">
1509 P1164R1
1510 </a>
1511 </td><td align="center"> 8.3 </td><td align="left"> Treated as a DR for C++17 </td></tr><tr><td align="left">
1512 Target Vectorization Policies from Parallelism V2 TS to C++20
1513 </td><td align="left">
1514 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html" target="_top">
1515 P1001R2 </a>
1516 </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">
1517 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html" target="_top">
1518 P0912R5 </a>
1519 </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">
1520 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html" target="_top">
1521 P0463R1 </a>
1522 </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">
1523 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html" target="_top">
1524 P0553R4 </a>
1525 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left"> Well-behaved interpolation for numbers and pointers </td><td align="left">
1526 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html" target="_top">
1527 P0811R3 </a>
1528 </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">
1529 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf" target="_top">
1530 P0631R8 </a>
1531 </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_math_constants &gt;= 201907L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> std::source_location </td><td align="left">
1532 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf" target="_top">
1533 P1208R6 </a>
1534 </td><td align="center"> </td><td align="left">
1535 <code class="code">__cpp_lib_source_location &gt;= 201907L</code>
1536 </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Efficient access to std::basic_stringbuf's Buffer </td><td align="left">
1537 <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf" target="_top">
1538 P0408R7 </a>
1539 </td><td align="center"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
1540 Note 1: This feature is supported in older releases but the
1541 <code class="code">__cpp_lib</code> macro is not defined to the right value
1542 (or not defined at all) until the version shown in parentheses.
1543 </p></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>
1544 This table is based on the table of contents of ISO/IEC DTR 19768
1545 Doc No: N1836=05-0096 Date: 2005-06-24
1546 Draft Technical Report on C++ Library Extensions
1547 </p><p>
1548 In this implementation the header names are prefixed by
1549 <code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
1550 <code class="code">&lt;tr1/memory&gt;</code>, and so on.
1551 </p><p>
1552 This page describes the TR1 support in mainline GCC, not in any particular
1553 release.
1554 </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.9. 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">
1555 <p>
1556 Uses code from
1557 <a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
1558 </p>
1559 </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,
1560 see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
1561 Specific Behavior</a>. This section documents behaviour which
1562 is required by TR1.
1563 </p><p>
1564 <span class="emphasis"><em>3.6.4 [tr.func.bind.place]/1</em></span> There are 29
1565 placeholders defined and the placeholder types are
1566 <code class="literal">Assignable</code>.
1567 </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>
1568 This table is based on the table of contents of
1569 ISO/IEC TR 24733 Date: 2009-08-28
1570 Extension for the programming language C++ to support
1571 decimal floating-point arithmetic
1572 </p><p>
1573 This page describes the TR 24733 support in mainline GCC, not in any
1574 particular release.
1575 </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.10. 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">
1576 <span class="emphasis"><em>0</em></span>
1577 </td><td colspan="3" align="left">
1578 <span class="emphasis"><em>Introduction</em></span>
1579 </td></tr><tr><td align="left">
1580 <span class="emphasis"><em>1</em></span>
1581 </td><td colspan="3" align="left">
1582 <span class="emphasis"><em>Normative references</em></span>
1583 </td></tr><tr><td align="left">
1584 <span class="emphasis"><em>2</em></span>
1585 </td><td colspan="3" align="left">
1586 <span class="emphasis"><em>Conventions</em></span>
1587 </td></tr><tr><td align="left">
1588 <span class="emphasis"><em>3</em></span>
1589 </td><td colspan="3" align="left">
1590 <span class="emphasis"><em>Decimal floating-point types</em></span>
1591 </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">
1592 <span class="emphasis"><em>4</em></span>
1593 </td><td colspan="3" align="left">
1594 <span class="emphasis"><em>Notes on C compatibility</em></span>
1595 </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>
1596 This table is based on the table of contents of ISO/IEC FDIS 29124
1597 Doc No: N3060 Date: 2010-03-06
1598 Extensions to the C++ Library to support mathematical special functions
1599 </p><p>
1600 Complete support for IS 29124 is in GCC 6.1 and later releases, when using
1601 at least C++11 (for older releases or C++98/C++03 use TR1 instead).
1602 For C++11 and C++14 the additions to the library are not declared by their
1603 respective headers unless <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__</code>
1604 is defined as a macro that expands to a non-zero integer constant.
1605 For C++17 the special functions are always declared (since GCC 7.1).
1606 </p><p>
1607 When the special functions are declared the macro
1608 <code class="code">__STDCPP_MATH_SPEC_FUNCS__</code> is defined to <code class="code">201003L</code>.
1609 </p><p>
1610 In addition to the special functions defined in IS 29124, for
1611 non-strict modes (i.e. <code class="code">-std=gnu++NN</code> modes) the
1612 hypergeometric functions and confluent hypergeometric functions
1613 from TR1 are also provided, defined in namespace
1614 <code class="code">__gnu_cxx</code>.
1615 </p><div class="table"><a id="table.specfun_status"></a><p class="title"><strong>Table 1.11. 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
1616 <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,
1617 see <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++ 2011 Implementation
1618 Specific Behavior</a>. This section documents behaviour which
1619 is required by IS 29124.
1620 </p><p>
1621 <span class="emphasis"><em>7.2 [macro.user]/3 /4</em></span> The functions declared in
1622 Clause 8 are only declared when
1623 <code class="code">__STDCPP_WANT_MATH_SPEC_FUNCS__ == 1</code>
1624 (or in C++17 mode, for GCC 7.1 and later).
1625 </p><p>
1626 <span class="emphasis"><em>8.1.1 [sf.cmath.Lnm]/1</em></span> The effect of calling
1627 these functions with <code class="code">n &gt;= 128</code> or <code class="code">m &gt;= 128</code>
1628 should be described here.
1629 </p><p>
1630 <span class="emphasis"><em>8.1.2 [sf.cmath.Plm]/3</em></span> The effect of calling
1631 these functions with <code class="code">l &gt;= 128</code> should be described here.
1632 </p><p>
1633 <span class="emphasis"><em>8.1.3 [sf.cmath.I]/3</em></span> The effect of calling
1634 these functions with <code class="code">nu &gt;= 128</code> should be described here.
1635 </p><p>
1636 <span class="emphasis"><em>8.1.8 [sf.cmath.J]/3</em></span> The effect of calling
1637 these functions with <code class="code">nu &gt;= 128</code> should be described here.
1638 </p><p>
1639 <span class="emphasis"><em>8.1.9 [sf.cmath.K]/3</em></span> The effect of calling
1640 these functions with <code class="code">nu &gt;= 128</code> should be described here.
1641 </p><p>
1642 <span class="emphasis"><em>8.1.10 [sf.cmath.N]/3</em></span> The effect of calling
1643 these functions with <code class="code">nu &gt;= 128</code> should be described here.
1644 </p><p>
1645 <span class="emphasis"><em>8.1.15 [sf.cmath.Hn]/3</em></span> The effect of calling
1646 these functions with <code class="code">n &gt;= 128</code> should be described here.
1647 </p><p>
1648 <span class="emphasis"><em>8.1.16 [sf.cmath.Ln]/3</em></span> The effect of calling
1649 these functions with <code class="code">n &gt;= 128</code> should be described here.
1650 </p><p>
1651 <span class="emphasis"><em>8.1.17 [sf.cmath.Pl]/3</em></span> The effect of calling
1652 these functions with <code class="code">l &gt;= 128</code> should be described here.
1653 </p><p>
1654 <span class="emphasis"><em>8.1.19 [sf.cmath.j]/3</em></span> The effect of calling
1655 these functions with <code class="code">n &gt;= 128</code> should be described here.
1656 </p><p>
1657 <span class="emphasis"><em>8.1.20 [sf.cmath.Ylm]/3</em></span> The effect of calling
1658 these functions with <code class="code">l &gt;= 128</code> should be described here.
1659 </p><p>
1660 <span class="emphasis"><em>8.1.21 [sf.cmath.n]/3</em></span> The effect of calling
1661 these functions with <code class="code">n &gt;= 128</code> should be described here.
1662 </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">Part I. 
1663 Introduction
1664
1665  </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>