On 25/10/17 15:06 +0100, Jonathan Wakely wrote:
* doc/xml/manual/status_cxx2017.xml: Update C++17 status, and information on feature-test macros. * doc/html/*: Regenerate.Committed to trunk.
And a similar patch for gcc-7-branch.
commit 045ffeb6b5cdd336ebe7592dbec68c0d53cd0c0c Author: Jonathan Wakely <[email protected]> Date: Wed Oct 25 15:01:31 2017 +0100 Update C++17 library status documentation * doc/xml/manual/status_cxx1998.xml: Correct statement about what the doc covers. * doc/xml/manual/status_cxx2011.xml: Likewise. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Update C++17 status, and information on feature-test macros. * doc/xml/manual/status_cxxtr1.xml: Correct statement about what the doc covers. * doc/xml/manual/status_cxxtr24733.xml: Likewise. * doc/html/*: Regenerate. diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml index 6afb016a45f..ffdc878ffe8 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml @@ -18,8 +18,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003. </para> <para> -This page describes the C++ support in mainline GCC SVN, not in any -particular release. +This page describes the C++ support in the GCC 7 series. </para> <!-- Status is Yes or No, Broken/Partial--> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml index 705f2eecc60..b72c5f7810d 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -27,8 +27,7 @@ presence of the required flag. </para> <para> -This page describes the C++11 support in mainline GCC SVN, not in any -particular release. +This page describes the C++11 support in the GCC 7 series. </para> <!-- Status is Yes or No, Broken/Partial--> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml index 6fa5a1d93a3..557e63888e4 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml @@ -20,8 +20,7 @@ presence of the required flag. </para> <para> -This page describes the C++14 and library TS support in mainline GCC SVN, -not in any particular release. +This page describes the C++14 and library TS support in the GCC 7 series. </para> <table frame="all" xml:id="table.cxx14_status"> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index 6158f96105f..389daefd75d 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -1,17 +1,17 @@ <section xmlns="http://docbook.org/ns/docbook" version="5.0" - xml:id="status.iso.201z" xreflabel="Status C++ 201z"> -<?dbhtml filename="status_iso_cxx201z.html"?> + xml:id="status.iso.2017" xreflabel="Status C++ 2017"> +<?dbhtml filename="status_iso_cxx2017.html"?> -<info><title>C++ 201z</title> +<info><title>C++ 2017</title> <keywordset> <keyword>ISO C++</keyword> - <keyword>201z</keyword> + <keyword>2017</keyword> </keywordset> </info> <para> -In this implementation the <literal>-std=gnu++1z</literal> or -<literal>-std=c++1z</literal> flag must be used to enable language +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 @@ -20,13 +20,12 @@ presence of the required flag. </para> <para> -This section describes the C++1z and library TS support in mainline GCC SVN, -not in any particular release. +This section describes the C++17 and library TS support in the GCC 7 series. </para> <para> The following table lists new library features that have been accepted into -the C++1z working draft. The "Proposal" column provides a link to the +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). @@ -35,8 +34,8 @@ The "SD-6 Feature Test" column shows the corresponding macro or header from Feature-testing recommendations for C++</link>. </para> -<table frame="all" xml:id="table.cxx1z_status"> -<title>C++ 201z Implementation Status</title> +<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"/> @@ -75,7 +74,7 @@ Feature-testing recommendations for C++</link>. P0137R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry> <code>__cpp_lib_launder >= 201606</code> </entry> </row> @@ -97,9 +96,10 @@ Feature-testing recommendations for C++</link>. P0088R3 </link> </entry> - <entry align="center"> 7 </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> @@ -110,9 +110,10 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </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> @@ -123,9 +124,10 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </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> @@ -136,9 +138,10 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </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> @@ -163,7 +166,7 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry> <code>__cpp_lib_apply >= 201603</code> </entry> </row> @@ -174,7 +177,7 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry> </row> @@ -185,7 +188,7 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry> </row> @@ -196,7 +199,7 @@ Feature-testing recommendations for C++</link>. P0220R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry> <code>__cpp_lib_sample >= 201603</code> </entry> </row> @@ -207,7 +210,7 @@ Feature-testing recommendations for C++</link>. P0007R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_as_const >= 201510 </code></entry> </row> @@ -229,7 +232,7 @@ Feature-testing recommendations for C++</link>. P0209R2 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry> </row> @@ -267,7 +270,7 @@ Feature-testing recommendations for C++</link>. P0074R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry> </row> @@ -278,7 +281,7 @@ Feature-testing recommendations for C++</link>. LWG2296 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry> </row> @@ -311,7 +314,7 @@ Feature-testing recommendations for C++</link>. P0033R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry> </row> @@ -344,7 +347,7 @@ Feature-testing recommendations for C++</link>. P0005R4 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code>__cpp_lib_not_fn >= 201603</code></entry> </row> @@ -355,7 +358,7 @@ Feature-testing recommendations for C++</link>. P0358R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry/> </row> @@ -366,7 +369,7 @@ Feature-testing recommendations for C++</link>. P0253R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry/> </row> @@ -377,7 +380,7 @@ Feature-testing recommendations for C++</link>. P0040R3 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> </code></entry> </row> @@ -388,7 +391,7 @@ Feature-testing recommendations for C++</link>. P0163R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry> </row> @@ -421,7 +424,7 @@ Feature-testing recommendations for C++</link>. P0006R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry> </row> @@ -454,7 +457,7 @@ Feature-testing recommendations for C++</link>. P0077R2 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_is_callable >= 201603 </code></entry> </row> @@ -465,7 +468,7 @@ Feature-testing recommendations for C++</link>. P0258R2 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry> </row> @@ -476,7 +479,7 @@ Feature-testing recommendations for C++</link>. P0092R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_chrono >= 201510 </code></entry> </row> @@ -487,8 +490,10 @@ Feature-testing recommendations for C++</link>. P0505R0 </link> </entry> - <entry align="center"> 7 </entry> - <entry><code> ??? </code></entry> + <entry align="center"> 7.1 </entry> + <entry><code> __cpp_lib_chrono >= 201611 </code> + (since 7.3, see Note 2) + </entry> </row> <row> @@ -509,7 +514,7 @@ Feature-testing recommendations for C++</link>. P0254R2 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> </code></entry> </row> @@ -520,7 +525,7 @@ Feature-testing recommendations for C++</link>. P0272R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> </code></entry> </row> @@ -553,9 +558,9 @@ Feature-testing recommendations for C++</link>. N4510 </link> </entry> - <entry align="center"> 6.2 (3.0)</entry> + <entry align="center"> 3.0 </entry> <entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code> - (the feature was always supported, but the macro was not defined until GCC 6.2) + (since 6.2, see Note 2) </entry> </row> @@ -566,8 +571,8 @@ Feature-testing recommendations for C++</link>. P0084R2 </link> </entry> - <entry align="center"> 7 </entry> - <entry><code> ??? </code></entry> + <entry align="center"> 7.1 </entry> + <entry/> </row> <row> @@ -590,7 +595,7 @@ Feature-testing recommendations for C++</link>. P0083R3 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_node_extract >= 201606 </code></entry> </row> @@ -612,7 +617,7 @@ Feature-testing recommendations for C++</link>. P0031R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry> </row> @@ -638,7 +643,7 @@ Feature-testing recommendations for C++</link>. P0025R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_clamp >= 201603 </code></entry> </row> @@ -649,7 +654,7 @@ Feature-testing recommendations for C++</link>. P0295R0 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_gcd_lcm >= 201606 </code></entry> </row> @@ -660,7 +665,7 @@ Feature-testing recommendations for C++</link>. P0030R1 </link> </entry> - <entry align="center"> 7 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_hypot >= 201603 </code></entry> </row> @@ -671,11 +676,9 @@ Feature-testing recommendations for C++</link>. P0226R1 </link> </entry> - <entry align="center"> 7 (6.1) </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_math_special_functions >= 201603 </code> - (for GCC 6 or pre-C++17 define - <code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value - and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>) + (see Note 3) </entry> </row> @@ -701,7 +704,7 @@ Feature-testing recommendations for C++</link>. </link> </entry> <entry align="center"> No </entry> - <entry/> + <entry><code> __cpp_lib_filesystem >= 201606 </code></entry> </row> <row> @@ -713,17 +716,29 @@ Feature-testing recommendations for C++</link>. </link> </entry> <entry align="center"> No </entry> - <entry/> + <entry><code> __cpp_lib_filesystem >= 201606 </code></entry> </row> <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <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"> No </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 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry> </row> @@ -739,37 +754,39 @@ Feature-testing recommendations for C++</link>. </row> <row> - <entry> Variadic <code>lock_guard</code> </entry> + <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 </entry> + <entry align="center"> 7.1 </entry> <entry><code> __cpp_lib_scoped_lock >= 201703 </code></entry> </row> <row> - <entry> byte type definition </entry> + <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 </entry> - <entry><code> ??? </code></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="#C8B0B0" ?> + <?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"> No </entry> - <entry><code> ??? </code></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> @@ -777,8 +794,26 @@ Feature-testing recommendations for C++</link>. </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> -<table frame="all" xml:id="table.cxx1z_ts_status"> +<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"> diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml index 32ad20a2fb2..fac93ae44d1 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml @@ -22,8 +22,7 @@ In this implementation the header names are prefixed by </para> <para> -This page describes the TR1 support in mainline GCC SVN, not in any particular -release. +This page describes the TR1 support in the GCC 7 series. </para> <!-- Status is Yes or No, Broken/Partial--> diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml index e8d445116a2..537688d4e17 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml @@ -16,8 +16,7 @@ decimal floating-point arithmetic </para> <para> -This page describes the TR 24733 support in mainline GCC SVN, not in any -particular release. +This page describes the TR 24733 support in the GCC 7 series. </para> <!-- Status is Yes or No, Broken/Partial-->
