From 246c618e71b9900b1ed5f9686ea895133d9b7b5b Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 4 Aug 2016 14:33:02 +0100 Subject: [PATCH] Update C++17 library implementation status table * doc/xml/manual/status_cxx2017.xml: Update C++17 status table. * doc/html/manual/status.html: Regenerate. From-SVN: r239124 --- libstdc++-v3/ChangeLog | 3 + libstdc++-v3/doc/html/manual/status.html | 283 +++++-- .../doc/xml/manual/status_cxx2017.xml | 711 +++++++++++++++--- 3 files changed, 823 insertions(+), 174 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index bf22550a6e3..59d11884ff2 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,8 @@ 2016-08-04 Jonathan Wakely + * doc/xml/manual/status_cxx2017.xml: Update C++17 status table. + * doc/html/manual/status.html: Regenerate. + * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Use effective target not dg-options. Move check for feature-test macro to: * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index 18fc4da42dc..0b4821c00f8 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -470,82 +470,255 @@ options. The pre-defined symbol __cplusplus is used to check for the presence of the required flag.

-This page describes the C++1z and library TS support in mainline GCC SVN, +This section describes the C++1z and library TS support in mainline GCC SVN, not in any particular release. -

Table 1.5. C++ 201z Implementation Status

PaperTitleStatusComments
+

+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 +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 +SD-6: +Feature-testing recommendations for C++. +

Table 1.5. C++ 201z Implementation Status

Library FeatureProposalStatusSD-6 Feature Test
+ constexpr std::hardware_{constructive,destructive}_interference_size + + + P0154R1 + + No __cpp_lib_hardware_interference_size >= 201603
Core Issue 1776: Replacement of class objects containing reference members + + P0137R1 + + No __cpp_lib_launder >= 201606
Wording for std::uncaught_exceptions N4259 - Wording for std::uncaught_exceptionsY 
+ 6.1__cpp_lib_uncaught_exceptions >= 201411
Variant: a type-safe union for C++17 + + P0088R3 + + No __has_include(<variant>)
Library Fundamentals V1 TS Components: optional + + P0220R1 + + 7 __has_include(<optional>)
Library Fundamentals V1 TS Components: any + + P0220R1 + + 7 __has_include(<any>)
Library Fundamentals V1 TS Components: string_view + + P0220R1 + + 7 __has_include(<string_view>)
Library Fundamentals V1 TS Components: memory_resource + + P0220R1 + + No __has_include(<memory_resource>)
Constant View: A proposal for a std::as_const helper function template + + P0007R1 + + 7 __cpp_lib_as_const >= 201510
Improving pair and tuple + + N4387 + + 6.1 N/A
make_from_tuple: apply for construction + + P0209R2 + + No __cpp_lib_make_from_tuple >= 201606
+ Removing auto_ptr, random_shuffle(), + And Old <functional> Stuff + N4190 - - Removing auto_ptr, random_shuffle(), - And Old <functional> Stuff - N 
- - N4284 + No (kept for backwards compatibility) 
Deprecating Vestigial Library Parts in C++17 + + P0174R2 - Contiguous Iterators YNo code changes required
+ No  
Making std::owner_less more flexible + + P0074R0 + + 7 __cpp_lib_transparent_operators >= 201510
std::addressof should be constexpr + + LWG2296 + + No __cpp_lib_addressof_constexpr >= 201603
Safe conversions in unique_ptr<T[]> - N4089 + N4089 - Safe conversions in unique_ptr<T[]> Y 
- - N4277 - - TriviallyCopyable reference_wrapper Y 
- - N4258 - - Cleaning-up noexcept in the LibraryY 
- - N4279 - - Improved insertion interface for unique-key mapsY 
- - N3911 - - Transformation Trait Alias void_tY 
- - N4169 - - A proposal to add invoke function templateY 
- - N4280 - - Non-member size() and moreY 
+ 5 ?  
LWG 2228: Missing SFINAE rule in unique_ptr templated assignment N4366 - - LWG 2228: Missing SFINAE rule in unique_ptr templated assignment - Y 
- - N4387 + 5 ?  
Re-enabling shared_from_this + + P0033R1 - Improving pair and tuple, revision 3 Y 
+ 6.1 __cpp_lib_enable_shared_from_this >= 201603
A proposal to add invoke function template + + N4169 + + 6.1 __cpp_lib_invoke >= 201411
TriviallyCopyable reference_wrapper + + N4277 + + 5.1  
Adopt not_fn from Library Fundamentals 2 for C++17 + + P0005R4 + + No __cpp_lib_not_fn >= 201603
Fixes for not_fn + + P0358R1 + + No  
Fixing a design mistake in the searchers interface in Library Fundamentals + + P0253R1 + + No  
Extending memory management tools + + P0040R3 + + No
shared_ptr::weak_type + + P0163R0 + + 7 __cpp_lib_shared_ptr_weak_type >= 201606
Transformation Trait Alias void_t + + N3911 + + 6.1 __cpp_lib_void_t >= 201411
Wording for bool_constant, revision 1 N4389 - Wording for bool_constant, revision 1 Y 
+ 6.1 __cpp_lib_bool_constant >= 201505
Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17 + + P0006R0 + + 7 __cpp_lib_type_trait_variable_templates >= 201510
Logical Operator Type Traits + + P0013R1 + + 6.1 __cpp_lib_logical_traits >= 201510
Adding [nothrow-]swappable traits + + P0185R1 + + 7 (__is_swappable available since 6.1) __cpp_lib_is_swappable >= 201603
is_callable, the missing INVOKE related trait + + P0077R2 + + No __cpp_lib_is_callable >= 201603
has_unique_object_representations + + P0258R2 + + No __cpp_lib_has_unique_object_representations >= 201606
Ordered by default + + P0181R1 + + No __cpp_lib_default_order >= 201606
Polishing <chrono> + + P0092R1 + + No __cpp_lib_chrono >= 201510
Integrating std::string_view and std::string + + P0254R2 + + 7
Give 'std::string' a non-const '.data()' member function + + P0272R1 + + 7
Cleaning-up noexcept in the Library + + N4258 + + 6.1 __cpp_lib_allocator_traits_is_always_equal >= 201411
Contiguous Iterators + + N4284 + + N/A 
Minimal incomplete type support for standard containers + + N4510 + + 7 (3.0) __cpp_lib_incomplete_container_elements >= 201505 + (the feature was always supported, but the macro was not defined until GCC 7) +
Emplace return type + + P0084R2 + + No  
Improved insertion interface for unique-key maps + + N4279 + + 6.1 __cpp_lib_map_try_emplace >= 201411, + __cpp_lib_unordered_map_try_emplace >= 201411 +
Splicing Maps and Sets + + P0083R3 + + No __cpp_lib_node_extract >= 201606
Non-member size() and more + + N4280 + + 6.1 __cpp_lib_nonmember_container_access >= 201411
A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access + + P0031R0 + + 7 __cpp_lib_array_constexpr >= 201603
The Parallelism TS Should be Standardized + + P0024R2 + + No __has_include(<execution>) , + __cpp_lib_parallel_algorithm >= 201603
An algorithm to "clamp" a value between a pair of boundary values + + P0025R0 + + 7 __cpp_lib_clamp >= 201603
Adopt Selected Library Fundamentals V2 Components for C++17 + + P0295R0 + + No __cpp_lib_gcd >= 201606 , + __cpp_lib_lcm >= 201606 +
Proposal to Introduce a 3-Argument Overload to std::hypot + + P0030R1 + + No __cpp_lib_hypot >= 201603
Mathematical Special Functions for C++17 + + P0226R1 + + 7 (6.1) __cpp_lib_math_special_functions >= 201603 + (for GCC 6 or pre-C++17 define + __STDCPP_WANT_MATH_SPEC_FUNCS__ to a non-zero value + and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L) +
Adopt the File System TS for C++17 + + P0218R1 + + No __has_include(<filesystem>) , + __cpp_lib_filesystem >= 201603
Relative Paths for Filesystem + + P0219R1 + + No  
Adapting string_view by filesystem paths + + P0392R0 + + No  
constexpr atomic<T>::is_always_lock_free + + P0152R1 + + No __cpp_lib_atomic_is_always_lock_free >= 201603
A proposal to add shared_mutex (untimed) (Revision 4) N4508 - A proposal to add shared_mutex (untimed) (Revision 4)Y 
- - N4510 + 6.1 __cpp_lib_shared_mutex >= 201505
Variadic lock_guard + + P0156R0 - - Minimal incomplete type support for standard containers, revision 4 - Y 
- - P0013R1 - - - Logical Operator Type Traits (revision 1) - Y 

Table 1.6. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
+ No __cpp_lib_lock_guard_variadic >= 201510

Table 1.6. C++ Technical Specifications Implementation Status

PaperTitleStatusComments
N4076 diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index 60e5fae43e1..d32399d551a 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -20,10 +20,21 @@ presence of the required flag. -This page describes the C++1z and library TS support in mainline GCC SVN, +This section describes the C++1z and library TS support in mainline GCC SVN, not in any particular release. + +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 +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 +SD-6: +Feature-testing recommendations for C++. + + C++ 201z Implementation Status @@ -34,199 +45,661 @@ not in any particular release. - Paper - Title + Library Feature + Proposal Status - Comments + SD-6 Feature Test + + + constexpr std::hardware_{constructive,destructive}_interference_size + + + + P0154R1 + + + No + __cpp_lib_hardware_interference_size >= 201603 + + + + + Core Issue 1776: Replacement of class objects containing reference members + + + P0137R1 + + + No + __cpp_lib_launder >= 201606 + + + + Wording for std::uncaught_exceptions N4259 - Wording for std::uncaught_exceptions - Y - + 6.1 + __cpp_lib_uncaught_exceptions >= 201411 + + + + + Variant: a type-safe union for C++17 + + + P0088R3 + + + No + __has_include(<variant>) + + + + Library Fundamentals V1 TS Components: optional + + + P0220R1 + + + 7 + __has_include(<optional>) + + + + Library Fundamentals V1 TS Components: any + + + P0220R1 + + + 7 + __has_include(<any>) + + + + Library Fundamentals V1 TS Components: string_view + + + P0220R1 + + + 7 + __has_include(<string_view>) + + + + + Library Fundamentals V1 TS Components: memory_resource + + + P0220R1 + + + No + __has_include(<memory_resource>) + + + + Constant View: A proposal for a std::as_const helper function template + + + P0007R1 + + + 7 + __cpp_lib_as_const >= 201510 + + + + Improving pair and tuple + + + N4387 + + + 6.1 + N/A + + + + + make_from_tuple: apply for construction + + + P0209R2 + + + No + __cpp_lib_make_from_tuple >= 201606 + + Removing auto_ptr, random_shuffle(), + And Old <functional> Stuff + N4190 - - Removing auto_ptr, random_shuffle(), - And Old <functional> Stuff - - N + No (kept for backwards compatibility) + + Deprecating Vestigial Library Parts in C++17 - - N4284 + + P0174R2 - Contiguous Iterators - Y - No code changes required + No + + Making std::owner_less more flexible + + + P0074R0 + + + 7 + __cpp_lib_transparent_operators >= 201510 + + + + + std::addressof should be constexpr + + + LWG2296 + + + No + __cpp_lib_addressof_constexpr >= 201603 + + + + Safe conversions in unique_ptr<T[]> - N4089 + N4089 - Safe conversions in unique_ptr<T[]> - Y - - - - - - - N4277 - - - TriviallyCopyable reference_wrapper - Y - - - - - - - N4258 - - - Cleaning-up noexcept in the Library - Y - - - - - - - N4279 - - - Improved insertion interface for unique-key maps - Y - - - - - - - N3911 - - - Transformation Trait Alias void_t - Y - - - - - - - N4169 - - - A proposal to add invoke function template - Y - - - - - - - N4280 - - - Non-member size() and more - Y + 5 ? + LWG 2228: Missing SFINAE rule in unique_ptr templated assignment N4366 - - LWG 2228: Missing SFINAE rule in unique_ptr templated assignment - - Y + 5 ? + Re-enabling shared_from_this - - N4387 + + P0033R1 - Improving pair and tuple, revision 3 - Y + 6.1 + __cpp_lib_enable_shared_from_this >= 201603 + + + + A proposal to add invoke function template + + + N4169 + + + 6.1 + __cpp_lib_invoke >= 201411 + + + + TriviallyCopyable reference_wrapper + + + N4277 + + + 5.1 + + Adopt not_fn from Library Fundamentals 2 for C++17 + + + P0005R4 + + + No + __cpp_lib_not_fn >= 201603 + + + + + Fixes for not_fn + + + P0358R1 + + + No + + + + + + Fixing a design mistake in the searchers interface in Library Fundamentals + + + P0253R1 + + + No + + + + + + Extending memory management tools + + + P0040R3 + + + No + + + + + shared_ptr::weak_type + + + P0163R0 + + + 7 + __cpp_lib_shared_ptr_weak_type >= 201606 + + + + Transformation Trait Alias void_t + + + N3911 + + + 6.1 + __cpp_lib_void_t >= 201411 + + + + Wording for bool_constant, revision 1 N4389 - Wording for bool_constant, revision 1 - Y + 6.1 + __cpp_lib_bool_constant >= 201505 + + + + Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17 + + + P0006R0 + + + 7 + __cpp_lib_type_trait_variable_templates >= 201510 + + + + Logical Operator Type Traits + + + P0013R1 + + + 6.1 + __cpp_lib_logical_traits >= 201510 + + + + Adding [nothrow-]swappable traits + + + P0185R1 + + + 7 (__is_swappable available since 6.1) + __cpp_lib_is_swappable >= 201603 + + + + + is_callable, the missing INVOKE related trait + + + P0077R2 + + + No + __cpp_lib_is_callable >= 201603 + + + + + has_unique_object_representations + + + P0258R2 + + + No + __cpp_lib_has_unique_object_representations >= 201606 + + + + + Ordered by default + + + P0181R1 + + + No + __cpp_lib_default_order >= 201606 + + + + + Polishing <chrono> + + + P0092R1 + + + No + __cpp_lib_chrono >= 201510 + + + + Integrating std::string_view and std::string + + + P0254R2 + + + 7 + + + + + Give 'std::string' a non-const '.data()' member function + + + P0272R1 + + + 7 + + + + + Cleaning-up noexcept in the Library + + + N4258 + + + 6.1 + __cpp_lib_allocator_traits_is_always_equal >= 201411 + + + + Contiguous Iterators + + + N4284 + + + N/A + Minimal incomplete type support for standard containers + + + N4510 + + + 7 (3.0) + __cpp_lib_incomplete_container_elements >= 201505 + (the feature was always supported, but the macro was not defined until GCC 7) + + + + + + Emplace return type + + + P0084R2 + + + No + + + + + Improved insertion interface for unique-key maps + + + N4279 + + + 6.1 + __cpp_lib_map_try_emplace >= 201411, + __cpp_lib_unordered_map_try_emplace >= 201411 + + + + + + Splicing Maps and Sets + + + P0083R3 + + + No + __cpp_lib_node_extract >= 201606 + + + + Non-member size() and more + + + N4280 + + + 6.1 + __cpp_lib_nonmember_container_access >= 201411 + + + + A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access + + + P0031R0 + + + 7 + __cpp_lib_array_constexpr >= 201603 + + + + + The Parallelism TS Should be Standardized + + + P0024R2 + + + No + __has_include(<execution>) , + __cpp_lib_parallel_algorithm >= 201603 + + + + An algorithm to "clamp" a value between a pair of boundary values + + + P0025R0 + + + 7 + __cpp_lib_clamp >= 201603 + + + + + Adopt Selected Library Fundamentals V2 Components for C++17 + + + P0295R0 + + + No + __cpp_lib_gcd >= 201606 , + __cpp_lib_lcm >= 201606 + + + + + + Proposal to Introduce a 3-Argument Overload to std::hypot + + + P0030R1 + + + No + __cpp_lib_hypot >= 201603 + + + + Mathematical Special Functions for C++17 + + + P0226R1 + + + 7 (6.1) + __cpp_lib_math_special_functions >= 201603 + (for GCC 6 or pre-C++17 define + __STDCPP_WANT_MATH_SPEC_FUNCS__ to a non-zero value + and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L) + + + + + + Adopt the File System TS for C++17 + + + P0218R1 + + + No + __has_include(<filesystem>) , + __cpp_lib_filesystem >= 201603 + + + + + Relative Paths for Filesystem + + + P0219R1 + + + No + + + + + + Adapting string_view by filesystem paths + + + P0392R0 + + + No + + + + + + constexpr atomic<T>::is_always_lock_free + + + P0152R1 + + + No + __cpp_lib_atomic_is_always_lock_free >= 201603 + + + + A proposal to add shared_mutex (untimed) (Revision 4) N4508 - A proposal to add shared_mutex (untimed) (Revision 4) - Y - + 6.1 + __cpp_lib_shared_mutex >= 201505 + + Variadic lock_guard - - N4510 + + P0156R0 - - Minimal incomplete type support for standard containers, revision 4 - - Y - - - - - - - P0013R1 - - - - Logical Operator Type Traits (revision 1) - - Y - + No + __cpp_lib_lock_guard_variadic >= 201510