Mercurial > hg > CbC > CbC_gcc
view libstdc++-v3/doc/xml/manual/status_cxx2017.xml @ 120:f93fa5091070
fix conv1.c
author | mir3636 |
---|---|
date | Thu, 08 Mar 2018 14:53:42 +0900 |
parents | 04ced10e8804 |
children | 84e7813d76e9 |
line wrap: on
line source
<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. </para> <para> This section describes the C++17 and library TS support in mainline GCC SVN, not in any particular release. </para> <para> The following table lists new library features that have been accepted into the C++17 working draft. 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_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>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> 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> <?dbhtml bgcolor="#C8B0B0" ?> <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"> No </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> </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 (<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_callable >= 201603 </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 </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="#C8B0B0" ?> <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"> No </entry> <entry><code> __has_include(<execution>) </code>, <code> __cpp_lib_execution >= 201603 </code>, <code> __cpp_lib_parallel_algorithm >= 201603 </code> </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 3) </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 </entry> <entry><code> __has_include(<filesystem>) </code>, <code> __cpp_lib_filesystem >= 201603 </code> (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 </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 </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 </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> <?dbhtml bgcolor="#B0B0B0" ?> <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"> 8 (only integral types supported) </entry> <entry><code> __has_include(<charconv>) </code> <code> __cpp_lib_to_chars >= 201611 </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 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> <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</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> </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>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> Whether <classname>variant</classname> supports over-aligned types should be documented here. </para> <para> <emphasis>23.7.10 [variant.bad.access]</emphasis> <code>what()</code> returns <literal>"Unexpected index"</literal>. </para> <para> <emphasis>23.12.5.2 [memory.resource.pool.options]</emphasis> The limits for maximum number of blocks and largest allocation size supported by <classname>pool_options</classname> should be documented here. </para> <para> <emphasis>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis> The default <code>next_buffer_size</code> and growth factor should be documented here. </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 not supported on some targets. </para> <para> <emphasis>30.10.5 [fs.filesystem.syn]</emphasis> The clock used for file times is <classname>std::chrono::system_clock</classname>. </para> <para> <emphasis>30.10.7.1 [fs.path.generic]</emphasis> dot-dot in the root-directory refers to the root-directory itself. </para> </section> </section>