e19afa0645
The LLVM project renamed their default branch to 'main'. libstdc++-v3/ChangeLog: * doc/xml/manual/status_cxx2017.xml: Adjust link for PSTL. * doc/html/manual/status.html: Regenerate.
3250 lines
88 KiB
XML
3250 lines
88 KiB
XML
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
|
|
xml:id="status.iso.2017" xreflabel="Status C++ 2017">
|
|
<?dbhtml filename="status_iso_cxx2017.html"?>
|
|
|
|
<info><title>C++ 2017</title>
|
|
<keywordset>
|
|
<keyword>ISO C++</keyword>
|
|
<keyword>2017</keyword>
|
|
</keywordset>
|
|
</info>
|
|
|
|
<para>
|
|
In this implementation the <literal>-std=gnu++17</literal> or
|
|
<literal>-std=c++17</literal> flag must be used to enable language
|
|
and library
|
|
features. See <link linkend="manual.intro.using.flags">dialect</link>
|
|
options. The pre-defined symbol
|
|
<constant>__cplusplus</constant> is used to check for the
|
|
presence of the required flag.
|
|
GCC 9.1 was the first release with non-experimental C++17 support,
|
|
so the API and ABI of features added in C++17 is only stable
|
|
since that release.
|
|
</para>
|
|
|
|
<para>
|
|
This section describes the C++17 and library TS support in mainline GCC,
|
|
not in any particular release.
|
|
</para>
|
|
|
|
<para>
|
|
The following table lists new library features that are included in
|
|
the C++17 standard. The "Proposal" column provides a link to the
|
|
ISO C++ committee proposal that describes the feature, while the "Status"
|
|
column indicates the first version of GCC that contains an implementation of
|
|
this feature (if it has been implemented).
|
|
The "SD-6 Feature Test" column shows the corresponding macro or header from
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
|
|
Feature-testing recommendations for C++</link>.
|
|
</para>
|
|
|
|
<table frame="all" xml:id="table.cxx17_features">
|
|
<title>C++ 2017 Library Features</title>
|
|
|
|
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<colspec colname="c3"/>
|
|
<colspec colname="c4"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Library Feature</entry>
|
|
<entry>Proposal</entry>
|
|
<entry>Status</entry>
|
|
<entry>SD-6 Feature Test</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>
|
|
<code>constexpr std::hardware_{constructive,destructive}_interference_size</code>
|
|
</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html">
|
|
P0154R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> No </entry>
|
|
<entry> <code>__cpp_lib_hardware_interference_size >= 201603</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Core Issue 1776: Replacement of class objects containing reference members</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html">
|
|
P0137R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__cpp_lib_launder >= 201606</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Wording for <code>std::uncaught_exceptions</code></entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf">
|
|
N4259
|
|
</link>
|
|
</entry>
|
|
<entry align="center">6.1</entry>
|
|
<entry><code>__cpp_lib_uncaught_exceptions >= 201411</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> C++17 should refer to C11 instead of C99 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html">
|
|
P0063R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 9.1 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Variant: a type-safe union for C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0088r3.html">
|
|
P0088R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__has_include(<variant>)</code>,
|
|
<code>__cpp_lib_variant >= 201603</code>
|
|
(since 7.3, see Note 1)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>optional</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__has_include(<optional>)</code>,
|
|
<code>__cpp_lib_optional >= 201603</code>
|
|
(since 7.3, see Note 1)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>any</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__has_include(<any>)</code>,
|
|
<code>__cpp_lib_any >= 201603</code>
|
|
(since 7.3, see Note 1)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>string_view</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__has_include(<string_view>)</code>,
|
|
<code>__cpp_lib_string_view >= 201603</code>
|
|
(since 7.3, see Note 1)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>memory_resource</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 9.1 </entry>
|
|
<entry> <code>__has_include(<memory_resource>)</code>,
|
|
<code>__cpp_lib_memory_resource >= 201603</code>
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>apply</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__cpp_lib_apply >= 201603</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: <code>shared_ptr<T[]></code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: Searchers </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Library Fundamentals V1 TS Components: Sampling </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html">
|
|
P0220R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code>__cpp_lib_sample >= 201603</code> </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Constant View: A proposal for a <code>std::as_const</code> helper function template </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="">
|
|
P0007R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_as_const >= 201510 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Improving pair and tuple </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387">
|
|
N4387
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry> N/A </entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> <code>make_from_tuple</code>: apply for construction </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf">
|
|
P0209R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>
|
|
Removing <code>auto_ptr</code>, <code>random_shuffle()</code>,
|
|
And Old <code><functional></code> Stuff
|
|
</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4190.htm">
|
|
N4190
|
|
</link>
|
|
</entry>
|
|
<entry align="center">No (kept for backwards compatibility)</entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry> Deprecating Vestigial Library Parts in C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html">
|
|
P0174R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> No (kept for backwards compatibility)</entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Making <code>std::owner_less</code> more flexible </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html">
|
|
P0074R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> <code>std::addressof</code> should be constexpr </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296">
|
|
LWG2296
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Safe conversions in <code>unique_ptr<T[]></code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf">
|
|
N4089
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4366.html">
|
|
N4366
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Re-enabling <code>shared_from_this</code></entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0033r1.html">
|
|
P0033R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> A proposal to add <code>invoke</code> function template </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html">
|
|
N4169
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry><code> __cpp_lib_invoke >= 201411 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>TriviallyCopyable <code>reference_wrapper</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4277.html">
|
|
N4277
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 5.1 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adopt <code>not_fn</code> from Library Fundamentals 2 for C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html">
|
|
P0005R4
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code>__cpp_lib_not_fn >= 201603</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Fixes for <code>not_fn</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html">
|
|
P0358R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Fixing a design mistake in the searchers interface in Library Fundamentals </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf">
|
|
P0253R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Extending memory management tools </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html">
|
|
P0040R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code>__cpp_lib_raw_memory_algorithms >= 201606L</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> <code>shared_ptr::weak_type</code></entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html">
|
|
P0163R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Transformation Trait Alias <code>void_t</code></entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n3911.pdf">
|
|
N3911
|
|
</link>
|
|
</entry>
|
|
<entry align="center">6.1</entry>
|
|
<entry><code> __cpp_lib_void_t >= 201411</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Wording for <code>bool_constant</code>, revision 1 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html">
|
|
N4389
|
|
</link>
|
|
</entry>
|
|
<entry align="center">6.1</entry>
|
|
<entry><code> __cpp_lib_bool_constant >= 201505</code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html">
|
|
P0006R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Logical Operator Type Traits</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html">
|
|
P0013R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry><code> __cpp_lib_logical_traits >= 201510 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adding [nothrow-]swappable traits </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html">
|
|
P0185R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 (<code>__is_swappable</code> available since 6.1)</entry>
|
|
<entry><code> __cpp_lib_is_swappable >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> <code>is_callable</code>, the missing INVOKE related trait</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html">
|
|
P0077R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_is_invocable >= 201703 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> has_unique_object_representations </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html">
|
|
P0258R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Polishing <code><chrono></code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0092r1.html">
|
|
P0092R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_chrono >= 201510 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adding more constexpr to <code><chrono></code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html">
|
|
P0505R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_chrono >= 201611 </code>
|
|
(since 7.3, see Note 2)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Constexpr for <code>std::char_traits</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html">
|
|
P0426R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 8.1 </entry>
|
|
<entry><code> __cpp_lib_constexpr_char_traits >= 201611 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Integrating <code>std::string_view</code> and <code>std::string</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0254r2.pdf">
|
|
P0254R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Give 'std::string' a non-const '.data()' member function </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html">
|
|
P0272R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Cleaning-up noexcept in the Library</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf">
|
|
N4258
|
|
</link>
|
|
</entry>
|
|
<entry align="center">6.1</entry>
|
|
<entry><code> __cpp_lib_allocator_traits_is_always_equal >= 201411 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Contiguous Iterators </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html">
|
|
N4284
|
|
</link>
|
|
</entry>
|
|
<entry align="center">N/A</entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Minimal incomplete type support for standard containers </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html">
|
|
N4510
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 3.0 </entry>
|
|
<entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code>
|
|
(since 6.2, see Note 2)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Emplace return type </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf">
|
|
P0084R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Improved insertion interface for unique-key maps</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html">
|
|
N4279
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry><code> __cpp_lib_map_try_emplace >= 201411</code>,
|
|
<code> __cpp_lib_unordered_map_try_emplace >= 201411</code>
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Splicing Maps and Sets </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf">
|
|
P0083R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_node_extract >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Non-member <code>size()</code> and more</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4280.pdf">
|
|
N4280
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry><code> __cpp_lib_nonmember_container_access >= 201411 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> A Proposal to Add Constexpr Modifiers to <code>reverse_iterator</code>, <code>move_iterator</code>, <code>array</code> and Range Access </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html">
|
|
P0031R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry> The Parallelism TS Should be Standardized </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html">
|
|
P0024R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 9.1 </entry>
|
|
<entry><code> __has_include(<execution>)</code>,
|
|
<code> __cpp_lib_execution >= 201603 </code>,
|
|
<code> __cpp_lib_parallel_algorithm >= 201603 </code>
|
|
(requires linking with <code>-ltbb</code>, see Note 3)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> An algorithm to "clamp" a value between a pair of boundary values </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html">
|
|
P0025R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_clamp >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adopt Selected Library Fundamentals V2 Components for C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf">
|
|
P0295R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_gcd_lcm >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Proposal to Introduce a 3-Argument Overload to <code>std::hypot</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf">
|
|
P0030R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_hypot >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Mathematical Special Functions for C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf">
|
|
P0226R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_math_special_functions >= 201603 </code>
|
|
(see Note 4)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Adopt the File System TS for C++17 </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html">
|
|
P0218R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 8.1 </entry>
|
|
<entry><code> __has_include(<filesystem>)</code>,
|
|
<code> __cpp_lib_filesystem >= 201603 </code>
|
|
(GCC 8.x requires linking with <code>-lstdc++fs</code>)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Relative Paths for Filesystem</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html">
|
|
P0219R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 8.1 </entry>
|
|
<entry><code> __cpp_lib_filesystem >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Adapting string_view by filesystem paths </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf">
|
|
P0392R0
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 8.1 </entry>
|
|
<entry><code> __cpp_lib_filesystem >= 201606 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Directory Entry Caching for Filesystem </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html">
|
|
P0317R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 8.1 </entry>
|
|
<entry><code> __cpp_lib_filesystem >= 201703 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> constexpr <code>atomic<T>::is_always_lock_free</code> </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html">
|
|
P0152R1
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A proposal to add <code>shared_mutex</code> (untimed) (Revision 4)</entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html">
|
|
N4508
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 6.1 </entry>
|
|
<entry><code> __cpp_lib_shared_mutex >= 201505 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Variadic <code>lock_guard</code> (Rev. 5) </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html">
|
|
P0156R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_scoped_lock >= 201703 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> A byte type definition </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf">
|
|
P0298R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry><code> __cpp_lib_byte >= 201603 </code> (since 7.3, see Note 2)
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Elementary string conversions </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html">
|
|
P0067R5
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 11.1 (integral types supported since 8.1) </entry>
|
|
<entry><code> __has_include(<charconv>)</code>,
|
|
<code> __cpp_lib_to_chars >= 201611 </code></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Homogeneous interface for variant, any and optional </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf">
|
|
P0032R3
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry>
|
|
<code> __cpp_lib_any >= 201606 </code>,
|
|
<code> __cpp_lib_optional >= 201606 </code>,
|
|
<code> __cpp_lib_variant >= 201606 </code>
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry> Making Optional Greater Equal Again </entry>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf">
|
|
P0307R2
|
|
</link>
|
|
</entry>
|
|
<entry align="center"> 7.1 </entry>
|
|
<entry> <code> __cpp_lib_optional >= 201606 </code> </entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the
|
|
<code>__cpp_lib</code> macro is not defined, and compilation will fail if the
|
|
header is included without using <option>-std</option> to enable C++17 support.
|
|
</para>
|
|
|
|
<para>
|
|
Note 2: This feature is supported in older releases but the
|
|
<code>__cpp_lib</code> macro is not defined to the right value
|
|
(or not defined at all) until the version shown in parentheses.
|
|
</para>
|
|
|
|
<para>
|
|
Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018
|
|
or later. If the <filename class="headerfile"><execution></filename>
|
|
header is included then <code>-ltbb</code> must be used to link to TBB.
|
|
</para>
|
|
|
|
<para>
|
|
Note 4: The mathematical special functions are enabled in C++17 mode from
|
|
GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define
|
|
<code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value
|
|
and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>.
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
The following status table is based on the table of contents of
|
|
ISO/IEC 14882:2017.
|
|
Some subclauses are not shown in the table where the content is unchanged
|
|
since C++14 and the implementation is complete.
|
|
</para>
|
|
|
|
<table frame="all" xml:id="table.cxx17_status">
|
|
<title>C++ 2017 Implementation Status</title>
|
|
|
|
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<colspec colname="c3"/>
|
|
<colspec colname="c4"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Section</entry>
|
|
<entry>Description</entry>
|
|
<entry>Status</entry>
|
|
<entry>Comments</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row>
|
|
<entry>
|
|
<emphasis>21</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Language support</emphasis>
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>21.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.2</entry>
|
|
<entry>Common definitions</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3</entry>
|
|
<entry>Implementation properties</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.2</entry>
|
|
<entry>Header <code><limits></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.3</entry>
|
|
<entry>Floating-point type properties</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>21.3.3.1</entry>
|
|
<entry><code>float_round_style</code></entry>
|
|
<entry>N</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>21.3.3.2</entry>
|
|
<entry><code>float_denorm_style</code></entry>
|
|
<entry>N</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.4</entry>
|
|
<entry>Class template <code>numeric_limits</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.5</entry>
|
|
<entry>Header <code><climits></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.3.6</entry>
|
|
<entry>Header <code><cfloat></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.4</entry>
|
|
<entry>Integer types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.4.1</entry>
|
|
<entry>Header <code><cstdint></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>21.5</entry>
|
|
<entry>Start and termination</entry>
|
|
<entry>Partial</entry>
|
|
<entry>C library dependency for quick_exit, at_quick_exit</entry>
|
|
</row>
|
|
<row>
|
|
<entry>21.6</entry>
|
|
<entry>Dynamic memory management</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.6.1</entry>
|
|
<entry>Header <code><new></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.6.2</entry>
|
|
<entry>Storage allocation and deallocation</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.6.3</entry>
|
|
<entry>Storage allocation errors</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.6.4</entry>
|
|
<entry>Pointer optimization barrier</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>21.6.5</entry>
|
|
<entry>Hardware interference size</entry>
|
|
<entry>N</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.7</entry>
|
|
<entry>Type identification</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8</entry>
|
|
<entry>Exception handling</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.1</entry>
|
|
<entry>Header <code><exception></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.2</entry>
|
|
<entry>Class exception</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.3</entry>
|
|
<entry>Class bad_exception</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.4</entry>
|
|
<entry>Abnormal termination</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.5</entry>
|
|
<entry><code>uncaught_exceptions</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.6</entry>
|
|
<entry>Exception Propagation</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.8.7</entry>
|
|
<entry><code>nested_exception</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.9</entry>
|
|
<entry>Initializer lists</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>21.10</entry>
|
|
<entry>Other runtime support</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>22</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Diagnostics</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>22.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>22.2</entry>
|
|
<entry>Exception classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>22.3</entry>
|
|
<entry>Assertions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>22.4</entry>
|
|
<entry>Error numbers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>22.5</entry>
|
|
<entry>System error support</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>23</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>General utilities</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>23.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2</entry>
|
|
<entry>Utility components</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.1</entry>
|
|
<entry>Header <code><utility></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.2</entry>
|
|
<entry>Operators</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.3</entry>
|
|
<entry><code>swap</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.4</entry>
|
|
<entry><code>exchange</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.5</entry>
|
|
<entry>Forward/move helpers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.6</entry>
|
|
<entry>Function template <code>as_const</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.7</entry>
|
|
<entry>Function template <code>declval</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.8</entry>
|
|
<entry>Primitive numeric output conversion</entry>
|
|
<entry>Partial</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.2.9</entry>
|
|
<entry>Primitive numeric input conversion</entry>
|
|
<entry>Partial</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.3</entry>
|
|
<entry>Compile-time integer sequences</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.4</entry>
|
|
<entry>Pairs</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.5</entry>
|
|
<entry>Tuples</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.6</entry>
|
|
<entry>Optional objects</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.7</entry>
|
|
<entry>Variants</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.8</entry>
|
|
<entry>Storage for any type</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.9</entry>
|
|
<entry>Bitsets</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10</entry>
|
|
<entry>Memory</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.1</entry>
|
|
<entry>In general</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.2</entry>
|
|
<entry>Header <code><memory></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.3</entry>
|
|
<entry>Pointer traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.4</entry>
|
|
<entry>Pointer safety</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.5</entry>
|
|
<entry>Align</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.6</entry>
|
|
<entry>Allocator argument tag</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.7</entry>
|
|
<entry><code>uses_allocator</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.8</entry>
|
|
<entry>Allocator traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.9</entry>
|
|
<entry>The default allocator</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.10</entry>
|
|
<entry>Specialized algorithms</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.10.11</entry>
|
|
<entry>C library memory allocation</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.11</entry>
|
|
<entry>Smart pointers</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.11.1</entry>
|
|
<entry>Class template <code>unique_ptr</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.11.2</entry>
|
|
<entry>Shared-ownership pointers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12</entry>
|
|
<entry>Memory resources</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.1</entry>
|
|
<entry>Header <code><memory_resource></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.2</entry>
|
|
<entry>Class <code>memory_resource</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.3</entry>
|
|
<entry>Class template <code>polymorphic_allocator</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.4</entry>
|
|
<entry>Access to program-wide <code>memory_resource</code> objects</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.5</entry>
|
|
<entry>Pool resource classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.12.6</entry>
|
|
<entry>Class <code>monotonic_buffer_resource</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.13</entry>
|
|
<entry>Class template <code>scoped_allocator_adaptor</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14</entry>
|
|
<entry>Function objects</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.1</entry>
|
|
<entry>Header <code><functional></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.2</entry>
|
|
<entry>Definitions</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.3</entry>
|
|
<entry>Requirements</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.4</entry>
|
|
<entry>Function template <code>invoke</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.5</entry>
|
|
<entry>Class template <code>reference_wrapper</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.6</entry>
|
|
<entry>Arithmetic operation</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.7</entry>
|
|
<entry>Comparisons</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.8</entry>
|
|
<entry>Logical operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.9</entry>
|
|
<entry>Bitwise operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.10</entry>
|
|
<entry>Function template <code>not_fn</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.11</entry>
|
|
<entry>Function object binders</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.12</entry>
|
|
<entry>Function template <code>mem_fn</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.13</entry>
|
|
<entry>Polymorphic function wrappers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.14</entry>
|
|
<entry>Searchers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.14.15</entry>
|
|
<entry>Class template <code>hash</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15</entry>
|
|
<entry>Metaprogramming and type traits</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.1</entry>
|
|
<entry>Requirements</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.2</entry>
|
|
<entry>Header <code><type_traits></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.3</entry>
|
|
<entry>Helper classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.4</entry>
|
|
<entry>Unary Type Traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.5</entry>
|
|
<entry>Type property queries</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.6</entry>
|
|
<entry>Relationships between types</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.7</entry>
|
|
<entry>Transformations between types</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.15.8</entry>
|
|
<entry>Logical operator traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.16</entry>
|
|
<entry>Compile-time rational arithmetic</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.1</entry>
|
|
<entry>In general</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.2</entry>
|
|
<entry>Header <code><chrono></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17</entry>
|
|
<entry>Time utilities</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.3</entry>
|
|
<entry>Clock requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.4</entry>
|
|
<entry>Time-related traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.5</entry>
|
|
<entry>Class template <code>duration</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.6</entry>
|
|
<entry>Class template <code>time_point</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.7</entry>
|
|
<entry>Clocks</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.17.8</entry>
|
|
<entry>Header <code><ctime></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.18</entry>
|
|
<entry>Class <code>type_index</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19</entry>
|
|
<entry>Execution policies</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.1</entry>
|
|
<entry>In general</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.2</entry>
|
|
<entry>Header <code><execution></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.3</entry>
|
|
<entry>Execution policy type trait</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.4</entry>
|
|
<entry>Sequenced execution policy</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.5</entry>
|
|
<entry>Parallel execution policy</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.6</entry>
|
|
<entry>Parallel and unsequenced execution policy</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>23.19.7</entry>
|
|
<entry>Execution policy objects</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>24</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Strings</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>24.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.2</entry>
|
|
<entry>Character traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.3</entry>
|
|
<entry>String classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4</entry>
|
|
<entry>String view classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.1</entry>
|
|
<entry>Header <code><string_view></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.2</entry>
|
|
<entry>Class template <code>basic_string_view</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.3</entry>
|
|
<entry>Non-member comparison functions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.4</entry>
|
|
<entry>Inserters and extractors</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.5</entry>
|
|
<entry>Hash support</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>24.4.6</entry>
|
|
<entry>Suffix for <code>basic_string_view</code> literals</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>24.5</entry>
|
|
<entry>Null-terminated sequence utilities</entry>
|
|
<entry>Partial</entry>
|
|
<entry>C library dependency. </entry>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>25</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Localization</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>25.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>25.2</entry>
|
|
<entry>Header <code><locale></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>25.3</entry>
|
|
<entry>Locales</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>25.4</entry>
|
|
<entry>Standard <code>locale</code> categories</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>25.5</entry>
|
|
<entry>C Library Locales</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>26</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Containers</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>26.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>26.2</entry>
|
|
<entry>Container requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>26.3</entry>
|
|
<entry>Sequence containers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>26.4</entry>
|
|
<entry>Associative containers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>26.5</entry>
|
|
<entry>Unordered associative containers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>26.6</entry>
|
|
<entry>Container adaptors</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>27</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Iterators</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>27.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.2</entry>
|
|
<entry>Iterator requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.3</entry>
|
|
<entry>Header <code><iterator></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.4</entry>
|
|
<entry>Iterator primitives</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.5</entry>
|
|
<entry>Iterator adaptors</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.6</entry>
|
|
<entry>Stream iterators</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.7</entry>
|
|
<entry>Range access</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>27.8</entry>
|
|
<entry>Container access</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>28</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Algorithms</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>28.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.2</entry>
|
|
<entry>Header <code><algorithm></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.3</entry>
|
|
<entry>Algorithms requirements</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.4</entry>
|
|
<entry>Parallel algorithms</entry>
|
|
<entry/>
|
|
<entry>Using <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://github.com/llvm/llvm-project/tree/main/pstl">PSTL</link></entry>
|
|
</row>
|
|
<row>
|
|
<entry>28.5</entry>
|
|
<entry>Non-modifying sequence operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.6</entry>
|
|
<entry>Mutating sequence operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.7</entry>
|
|
<entry>Sorting and related operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>28.8</entry>
|
|
<entry>C library algorithms</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>29</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Numerics</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>29.1</entry>
|
|
<entry>General</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.2</entry>
|
|
<entry>Definitions</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.3</entry>
|
|
<entry>Numeric type requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.4</entry>
|
|
<entry>The floating-point environment</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.5</entry>
|
|
<entry>Complex numbers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.6</entry>
|
|
<entry>Random number generation</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.7</entry>
|
|
<entry>Numeric arrays</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8</entry>
|
|
<entry>Generalized numeric operations</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.1</entry>
|
|
<entry>Header <code><numeric></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.2</entry>
|
|
<entry>Accumulate</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.3</entry>
|
|
<entry>Reduce</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.4</entry>
|
|
<entry>Inner product</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.5</entry>
|
|
<entry>Transform reduce</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.6</entry>
|
|
<entry>Partial sum</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.7</entry>
|
|
<entry>Exclusive scan</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.8</entry>
|
|
<entry>Inclusive scan</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.9</entry>
|
|
<entry>Transform exclusive scan</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.10</entry>
|
|
<entry>Transform inclusive scan</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.11</entry>
|
|
<entry>Adjacent difference</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.12</entry>
|
|
<entry>Iota</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.13</entry>
|
|
<entry>Greatest common divisor</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.8.14</entry>
|
|
<entry>Least common multiple</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9</entry>
|
|
<entry>Mathematical functions for floating-point types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9.1</entry>
|
|
<entry>Header <code><cmath></code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9.2</entry>
|
|
<entry>Absolute values</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9.3</entry>
|
|
<entry>Three-dimensional hypotenuse</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9.4</entry>
|
|
<entry>Classification / comparison functions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>29.9.5</entry>
|
|
<entry>Mathematical special functions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>30</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Input/output library</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>30.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.2</entry>
|
|
<entry>Iostreams requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.2.1</entry>
|
|
<entry>Imbue Limitations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.2.2</entry>
|
|
<entry>Positioning Type Limitations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>30.2.3</entry>
|
|
<entry>Thread safety</entry>
|
|
<entry>Partial</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.3</entry>
|
|
<entry>Forward declarations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.4</entry>
|
|
<entry>Standard iostream objects</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.5</entry>
|
|
<entry>Iostreams base classes</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.6</entry>
|
|
<entry>Stream buffers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.7</entry>
|
|
<entry>Formatting and manipulators</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.8</entry>
|
|
<entry>String-based streams</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.9</entry>
|
|
<entry>File-based streams</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.10</entry>
|
|
<entry>File systemss</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>30.11</entry>
|
|
<entry>C library files</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>31</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Regular expressions</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>31.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.2</entry>
|
|
<entry>Definitions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.3</entry>
|
|
<entry>Requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.4</entry>
|
|
<entry>Header <code><regex></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.5</entry>
|
|
<entry>Namespace <code>std::regex_constants</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.6</entry>
|
|
<entry>Class <code>regex_error</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>31.7</entry>
|
|
<entry>Class template <code>regex_traits</code></entry>
|
|
<entry>Partial</entry>
|
|
<entry><code>transform_primary</code> is not correctly implemented</entry>
|
|
</row>
|
|
<row>
|
|
<entry>31.8</entry>
|
|
<entry>Class template <code>basic_regex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.9</entry>
|
|
<entry>Class template <code>sub_match</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.10</entry>
|
|
<entry>Class template <code>match_results</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.11</entry>
|
|
<entry>Regular expression algorithms</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.12</entry>
|
|
<entry>Regular expression Iterators</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>31.13</entry>
|
|
<entry>Modified ECMAScript regular expression grammar</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>32</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Atomic operations</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>32.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.2</entry>
|
|
<entry>Header <code><atomic></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.3</entry>
|
|
<entry>Type aliases</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.4</entry>
|
|
<entry>Order and consistency</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.5</entry>
|
|
<entry>Lock-free property</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.6</entry>
|
|
<entry>Class template <code><atomic></code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.7</entry>
|
|
<entry>Non-member functions</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.8</entry>
|
|
<entry>Flag Type and operations</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>32.9</entry>
|
|
<entry>Fences</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>33</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Thread support</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>33.1</entry>
|
|
<entry>General</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.2</entry>
|
|
<entry>Requirements</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.3</entry>
|
|
<entry>Threads</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.3.1</entry>
|
|
<entry>Header <code>thread</code> synopsis</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.3.2</entry>
|
|
<entry>Class <code>thread</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>33.3.2.1</entry>
|
|
<entry>Class <code>thread</code></entry>
|
|
<entry>Partial</entry>
|
|
<entry><code>thread::id</code> comparisons not well-defined</entry>
|
|
</row>
|
|
<row>
|
|
<entry>33.3.3</entry>
|
|
<entry>Namespace <code>this_thread</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4</entry>
|
|
<entry>Mutual exclusion</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3</entry>
|
|
<entry>Mutex requirements</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.1</entry>
|
|
<entry>In general</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.2</entry>
|
|
<entry>Mutex types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.2.1</entry>
|
|
<entry>Class <code>mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.2.2</entry>
|
|
<entry>Class <code>recursive_mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.3</entry>
|
|
<entry>Timed mutex types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.3.1</entry>
|
|
<entry>Class <code>timed_mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.3.2</entry>
|
|
<entry>Class <code>recursive_timed_mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.4</entry>
|
|
<entry>Shared mutex types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.4.1</entry>
|
|
<entry>Class <code>shared_mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.5</entry>
|
|
<entry>Shared timed mutex types</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.3.5.1</entry>
|
|
<entry>Class <code>shared_timed_mutex</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.4</entry>
|
|
<entry>Locks</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.4.1</entry>
|
|
<entry>Class template <code>lock_guard</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.4.2</entry>
|
|
<entry>Class template <code>scoped_guard</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.4.3</entry>
|
|
<entry>Class template <code>unique_lock</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.4.4</entry>
|
|
<entry>Class template <code>shared_lock</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.5</entry>
|
|
<entry>Generic locking algorithms</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.6</entry>
|
|
<entry>Call once</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.4.6.1</entry>
|
|
<entry>Struct <code>once_flag</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<?dbhtml bgcolor="#B0B0B0" ?>
|
|
<entry>33.4.6.2</entry>
|
|
<entry>Function <code>call_once</code></entry>
|
|
<entry>Y</entry>
|
|
<entry>Exception support is broken on non-Linux targets.
|
|
See <link xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xlink:href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146">PR
|
|
66146</link>.
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>33.5</entry>
|
|
<entry>Condition variables</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.5.1</entry>
|
|
<entry>Class <code>condition_variable</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.5.2</entry>
|
|
<entry>Class <code>condition_variable_any</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6</entry>
|
|
<entry>Futures</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.1</entry>
|
|
<entry>Overview</entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.2</entry>
|
|
<entry>Header <code><future></code></entry>
|
|
<entry/>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.3</entry>
|
|
<entry>Error handling</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.4</entry>
|
|
<entry>Class <code>future_error</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.5</entry>
|
|
<entry>Shared state</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.6</entry>
|
|
<entry>Class template <code>promise</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.7</entry>
|
|
<entry>Class template <code>future</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.8</entry>
|
|
<entry>Class template <code>shared_future</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.9</entry>
|
|
<entry>Function template <code>async</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>33.6.10</entry>
|
|
<entry>Class template <code>packaged_task</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>
|
|
<emphasis>Appendix D</emphasis>
|
|
</entry>
|
|
<entry namest="c2" nameend="c4" align="left">
|
|
<emphasis>Compatibility features</emphasis>
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>D.4</entry>
|
|
<entry>C++ standard library headers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.4.1</entry>
|
|
<entry>Header <code><ccomplex></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.4.1</entry>
|
|
<entry>Header <code><cstdalign></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.4.1</entry>
|
|
<entry>Header <code><cstdbool></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.4.1</entry>
|
|
<entry>Header <code><ctgmath></code> synopsis</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.5</entry>
|
|
<entry>C standard library headers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.6</entry>
|
|
<entry><code>char*</code> streams</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.7</entry>
|
|
<entry><code>uncaught_exception</code></entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.8</entry>
|
|
<entry>Old adaptable function bindings</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.9</entry>
|
|
<entry>The default allocator</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.10</entry>
|
|
<entry>Raw storage iterator</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.11</entry>
|
|
<entry>Temporary buffers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.12</entry>
|
|
<entry>Deprecated type traits</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.13</entry>
|
|
<entry>Deprecated iterator primitives</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.14</entry>
|
|
<entry>Deprecated <code>shared_ptr</code> observers</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.15</entry>
|
|
<entry>Deprecated standard code conversion facets</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
<row>
|
|
<entry>D.16</entry>
|
|
<entry>Deprecated convenience conversion interfaces</entry>
|
|
<entry>Y</entry>
|
|
<entry/>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<table frame="all" xml:id="table.cxx17_ts_status">
|
|
<title>C++ Technical Specifications Implementation Status</title>
|
|
|
|
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<colspec colname="c3"/>
|
|
<colspec colname="c4"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Paper</entry>
|
|
<entry>Title</entry>
|
|
<entry>Status</entry>
|
|
<entry>Comments</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html">
|
|
N4076
|
|
</link>
|
|
</entry>
|
|
<entry>A generalized callable negator</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm">
|
|
N4273
|
|
</link>
|
|
</entry>
|
|
<entry>Uniform Container Erasure</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf">
|
|
N4061
|
|
</link>
|
|
</entry>
|
|
<entry>Greatest Common Divisor and Least Common Multiple</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm">
|
|
N4066
|
|
</link>
|
|
</entry>
|
|
<entry>Delimited iterators</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf">
|
|
N4282
|
|
</link>
|
|
</entry>
|
|
<entry>The World's Dumbest Smart Pointer</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html">
|
|
N4388
|
|
</link>
|
|
</entry>
|
|
<entry>Const-Propagating Wrapper</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html">
|
|
N4391
|
|
</link>
|
|
</entry>
|
|
<entry> <code>make_array</code>, revision 4 </entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf">
|
|
N4502
|
|
</link>
|
|
</entry>
|
|
<entry> Support for the C++ Detection Idiom, V2 </entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf">
|
|
N4519
|
|
</link>
|
|
</entry>
|
|
<entry> Source-Code Information Capture </entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<?dbhtml bgcolor="#C8B0B0" ?>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html">
|
|
N4521
|
|
</link>
|
|
</entry>
|
|
<entry> Merge Fundamentals V1 into V2 </entry>
|
|
<entry>
|
|
N (components from V1 are still in namespace
|
|
<code>fundamentals_v1</code>)
|
|
</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html">
|
|
P0013R1
|
|
</link>
|
|
</entry>
|
|
<entry>Logical Operator Type Traits (revision 1)</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4531.html">
|
|
N4531
|
|
</link>
|
|
</entry>
|
|
<entry>std::rand replacement, revision 3</entry>
|
|
<entry>Y</entry>
|
|
<entry>Library Fundamentals 2 TS</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0214r9.pdf">
|
|
P0214R9
|
|
</link>
|
|
</entry>
|
|
<entry>Data-Parallel Types</entry>
|
|
<entry>Y</entry>
|
|
<entry>Parallelism 2 TS</entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<section xml:id="iso.2017.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
|
|
|
|
<para>For behaviour which is also specified by previous standards,
|
|
see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
|
|
Specific Behavior</link> and <link linkend="iso.2011.specific">C++
|
|
2011 Implementation Specific Behavior</link>. This section only
|
|
documents behaviour which is new in the 2017 standard.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>20.5.1.2 [headers]</emphasis>
|
|
Whether names from Annex K are declared by C++ headers depends on
|
|
whether the underlying C library supports Annex K and declares the
|
|
names. For the GNU C library, there is no Annex K support and so
|
|
none of its names are declared by C++ headers.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.6.5 [optional.bad_optional_access]</emphasis>
|
|
<code>what()</code> returns <literal>"bad optional access"</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.7.3 [variant.variant]</emphasis>
|
|
<classname>variant</classname> supports over-aligned types.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.7.10 [variant.bad.access]</emphasis>
|
|
<code>what()</code> returns one of the strings
|
|
<literal>"std::get: variant is valueless"</literal>,
|
|
<literal>"std::get: wrong index for variant"</literal>,
|
|
<literal>"std::visit: variant is valueless"</literal>,
|
|
or <literal>"std::visit<R>: variant is valueless"</literal>.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.12.5.2 [memory.resource.pool.options]</emphasis>
|
|
Let S equal <code>numeric_limits<size_t>::digits</code>.
|
|
The limit for maximum number of blocks in a chunk is given by
|
|
<inlineequation><mathphrase>2<superscript>N</superscript>-1</mathphrase></inlineequation>,
|
|
where N is <inlineequation><mathphrase>min(19, 3 + S/2)</mathphrase></inlineequation>.
|
|
The largest allocation size that will be allocated from a pool is
|
|
<inlineequation><mathphrase>2<superscript>22</superscript></mathphrase></inlineequation>
|
|
when <inlineequation><mathphrase>S > 20</mathphrase></inlineequation>,
|
|
otherwise 3072 when <inlineequation><mathphrase>S > 16</mathphrase></inlineequation>,
|
|
otherwise 768.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis>
|
|
The default <code>next_buffer_size</code> is <code>128 * sizeof(void*)</code>.
|
|
The default growth factor is <code>1.5</code>.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.15.4.3 [meta.unary.prop]</emphasis>
|
|
The predicate condition for
|
|
<code>has_unique_object_representations</code> is true for all scalar
|
|
types except floating point types.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>23.19.3 [execpol.type],
|
|
28.4.3 [algorithms.parallel.exec]</emphasis>
|
|
There are no implementation-defined execution policies.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>24.4.2 [string.view.template]</emphasis>
|
|
<classname>basic_string_view<C, T>::iterator</classname> is
|
|
<code>C*</code> and
|
|
<classname>basic_string_view<C, T>::const_iterator</classname> is
|
|
<code>const C*</code>.
|
|
</para>
|
|
|
|
|
|
<para>
|
|
<emphasis>28.4.3 [algorithms.parallel.exec]</emphasis>
|
|
Threads of execution created by <classname>std::thread</classname>
|
|
provide concurrent forward progress guarantees, so threads of execution
|
|
implicitly created by the library will provide parallel forward
|
|
progress guarantees.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>29.4.1 [cfenv.syn]</emphasis>
|
|
The effects of the <filename><cfenv></filename> functions
|
|
depends on whether the <code>FENV_ACCESS</code> pragma is supported,
|
|
and on the C library that provides the header.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>29.6.9 [c.math.rand]</emphasis>
|
|
Whether the <function>rand</function> function may introduce data
|
|
races depends on the target C library that provides the function.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>29.9.5 [sf.cmath]</emphasis>
|
|
The effect of calling the mathematical special functions with large
|
|
inputs should be documented here.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.2.1 [fs.conform.9945]</emphasis>
|
|
The behavior of the filesystem library implementation will depend on
|
|
the target operating system. Some features will not be supported
|
|
on some targets. Symbolic links and file permissions
|
|
are not supported on Windows.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.5 [fs.filesystem.syn]</emphasis>
|
|
The clock used for file times is an unspecified type
|
|
with a signed 64-bit representation, capable of representing
|
|
timestamps with nanosecond resolution. The clock's epoch is
|
|
unspecified, but is not the same as the system clock's epoch.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.7.1 [fs.path.generic]</emphasis>
|
|
dot-dot in the root-directory refers to the root-directory itself.
|
|
On Windows, a drive specifier such as <code>"C:"</code> or
|
|
<code>"z:"</code> is treated as a root-name. On Cygwin, a path
|
|
that begins with two successive directory separators is a
|
|
root-name. Otherwise (for POSIX-like systems other than Cygwin),
|
|
the implementation-defined root-name is an unspecified string
|
|
which does not appear in any pathnames.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.10.1 [fs.enum.path.format]</emphasis>
|
|
The character sequence is always interpreted in the native pathname
|
|
format.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.15.4 [fs.op.file_size]</emphasis>
|
|
If <code>!is_regular_file(p)</code>, an error is reported.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>30.10.15.32 [fs.op.rename]</emphasis>
|
|
On Windows, <code>filesystem::rename</code>
|
|
is implemented by calling <code>MoveFileExW</code> and so
|
|
does not meet the requirements of POSIX <code>rename</code>
|
|
when one or both of the paths resolves to an existing directory.
|
|
Specifically, it is not possible to rename a directory to replace another
|
|
directory (POSIX requires that to work if the directory being
|
|
replaced is empty).
|
|
</para>
|
|
|
|
|
|
<section xml:id="iso.2017.par2ts" xreflabel="Implementation Specific Behavior of the Parallelism 2 TS"><info><title>Parallelism 2 TS</title></info>
|
|
|
|
<para>
|
|
<emphasis>9.3 [parallel.simd.abi]</emphasis>
|
|
<code>max_fixed_size<T></code> is 32, except when targetting
|
|
AVX512BW and <code>sizeof(T)</code> is 1.
|
|
</para>
|
|
|
|
<para>
|
|
When targeting 32-bit x86,
|
|
<classname>simd_abi::compatible<T></classname> is an alias for
|
|
<classname>simd_abi::scalar</classname>.
|
|
When targeting 64-bit x86 (including x32) or Aarch64,
|
|
<classname>simd_abi::compatible<T></classname> is an alias for
|
|
<classname>simd_abi::_VecBuiltin<16></classname>,
|
|
unless <code>T</code> is <code>long double</code>, in which case it is
|
|
an alias for <classname>simd_abi::scalar</classname>.
|
|
When targeting ARM (but not Aarch64) with NEON support,
|
|
<classname>simd_abi::compatible<T></classname> is an alias for
|
|
<classname>simd_abi::_VecBuiltin<16></classname>,
|
|
unless <code>sizeof(T) > 4</code>, in which case it is
|
|
an alias for <classname>simd_abi::scalar</classname>. Additionally,
|
|
<classname>simd_abi::compatible<float></classname> is an alias for
|
|
<classname>simd_abi::scalar</classname> unless compiling with
|
|
-ffast-math.
|
|
</para>
|
|
|
|
<para>
|
|
When targeting x86 (both 32-bit and 64-bit),
|
|
<classname>simd_abi::native<T></classname> is an alias for one of
|
|
<classname>simd_abi::scalar</classname>,
|
|
<classname>simd_abi::_VecBuiltin<16></classname>,
|
|
<classname>simd_abi::_VecBuiltin<32></classname>, or
|
|
<classname>simd_abi::_VecBltnBtmsk<64></classname>, depending on
|
|
<code>T</code> and the machine options the compiler was invoked with.
|
|
</para>
|
|
|
|
<para>
|
|
When targeting ARM/Aarch64 or POWER,
|
|
<classname>simd_abi::native<T></classname> is an alias for
|
|
<classname>simd_abi::scalar</classname> or
|
|
<classname>simd_abi::_VecBuiltin<16></classname>, depending on
|
|
<code>T</code> and the machine options the compiler was invoked with.
|
|
</para>
|
|
|
|
<para>
|
|
For any other targeted machine
|
|
<classname>simd_abi::compatible<T></classname> and
|
|
<classname>simd_abi::native<T></classname> are aliases for
|
|
<classname>simd_abi::scalar</classname>. (subject to change)
|
|
</para>
|
|
|
|
<para>
|
|
The extended ABI tag types defined in the
|
|
<code>std::experimental::parallelism_v2::simd_abi</code> namespace are:
|
|
<classname>simd_abi::_VecBuiltin<Bytes></classname>, and
|
|
<classname>simd_abi::_VecBltnBtmsk<Bytes></classname>.
|
|
</para>
|
|
|
|
<para>
|
|
<classname>simd_abi::deduce<T, N, Abis...>::type</classname>,
|
|
with <code>N > 1</code> is an alias for an extended ABI tag, if a
|
|
supported extended ABI tag exists. Otherwise it is an alias for
|
|
<classname>simd_abi::fixed_size<N></classname>. The <classname>
|
|
simd_abi::_VecBltnBtmsk</classname> ABI tag is preferred over
|
|
<classname>simd_abi::_VecBuiltin</classname>.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>9.4 [parallel.simd.traits]</emphasis>
|
|
<classname>memory_alignment<T, U>::value</classname> is
|
|
<code>sizeof(U) * T::size()</code> rounded up to the next power-of-two
|
|
value.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>9.6.1 [parallel.simd.overview]</emphasis>
|
|
On ARM, <classname>simd<T, _VecBuiltin<Bytes>></classname>
|
|
is supported if <code>__ARM_NEON</code> is defined and
|
|
<code>sizeof(T) <= 4</code>. Additionally,
|
|
<code>sizeof(T) == 8</code> with integral <code>T</code> is supported if
|
|
<code>__ARM_ARCH >= 8</code>, and <code>double</code> is supported if
|
|
<code>__aarch64__</code> is defined.
|
|
|
|
On POWER, <classname>simd<T, _VecBuiltin<Bytes>></classname>
|
|
is supported if <code>__ALTIVEC__</code> is defined and <code>sizeof(T)
|
|
< 8</code>. Additionally, <code>double</code> is supported if
|
|
<code>__VSX__</code> is defined, and any <code>T</code> with <code>
|
|
sizeof(T) <= 8</code> is supported if <code>__POWER8_VECTOR__</code>
|
|
is defined.
|
|
|
|
On x86, given an extended ABI tag <code>Abi</code>,
|
|
<classname>simd<T, Abi></classname> is supported according to the
|
|
following table:
|
|
<table frame="all" xml:id="table.par2ts_simd_support">
|
|
<title>Support for Extended ABI Tags</title>
|
|
|
|
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<colspec colname="c3"/>
|
|
<colspec colname="c4"/>
|
|
<thead>
|
|
<row>
|
|
<entry>ABI tag <code>Abi</code></entry>
|
|
<entry>value type <code>T</code></entry>
|
|
<entry>values for <code>Bytes</code></entry>
|
|
<entry>required machine option</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry morerows="5">
|
|
<classname>_VecBuiltin<Bytes></classname>
|
|
</entry>
|
|
<entry morerows="1"><code>float</code></entry>
|
|
<entry>8, 12, 16</entry>
|
|
<entry>"-msse"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>20, 24, 28, 32</entry>
|
|
<entry>"-mavx"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry morerows="1"><code>double</code></entry>
|
|
<entry>16</entry>
|
|
<entry>"-msse2"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>24, 32</entry>
|
|
<entry>"-mavx"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry morerows="1">
|
|
integral types other than <code>bool</code>
|
|
</entry>
|
|
<entry>
|
|
<code>Bytes</code> ≤ 16 and <code>Bytes</code> divisible by
|
|
<code>sizeof(T)</code>
|
|
</entry>
|
|
<entry>"-msse2"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
16 < <code>Bytes</code> ≤ 32 and <code>Bytes</code>
|
|
divisible by <code>sizeof(T)</code>
|
|
</entry>
|
|
<entry>"-mavx2"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry morerows="1">
|
|
<classname>_VecBuiltin<Bytes></classname> and
|
|
<classname>_VecBltnBtmsk<Bytes></classname>
|
|
</entry>
|
|
<entry>
|
|
vectorizable types with <code>sizeof(T)</code> ≥ 4
|
|
</entry>
|
|
<entry morerows="1">
|
|
32 < <code>Bytes</code> ≤ 64 and <code>Bytes</code>
|
|
divisible by <code>sizeof(T)</code>
|
|
</entry>
|
|
<entry>"-mavx512f"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
vectorizable types with <code>sizeof(T)</code> < 4
|
|
</entry>
|
|
<entry>"-mavx512bw"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry morerows="1">
|
|
<classname>_VecBltnBtmsk<Bytes></classname>
|
|
</entry>
|
|
<entry>
|
|
vectorizable types with <code>sizeof(T)</code> ≥ 4
|
|
</entry>
|
|
<entry morerows="1">
|
|
<code>Bytes</code> ≤ 32 and <code>Bytes</code> divisible by
|
|
<code>sizeof(T)</code>
|
|
</entry>
|
|
<entry>"-mavx512vl"</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>
|
|
vectorizable types with <code>sizeof(T)</code> < 4
|
|
</entry>
|
|
<entry>"-mavx512bw" and "-mavx512vl"</entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|