From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1984) id 2D41D39F0C30; Fri, 17 Jul 2020 14:54:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2D41D39F0C30 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1594997684; bh=2jmKA1n4yuyWtziB4HuPujalKkwVKkDTLrdH1TnPr7M=; h=From:To:Subject:Date:From; b=lJNZLkKpFmZbZ2BAP6q25YNg+4pz3PLM8/WOR4oz/Y/F2RyhreRycVKJ068rnAdx1 gyWx30l5HAcO/0hC9/VtBiDu17M92Ty4SNF++xCUjjkJFKQ0CEwE33Ei3xmE0HguJa l9F577QubSTpxMHsx2Hc9IVaHXZc4tjK9ZFTwJwQ= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Tamar Christina To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/ARM/heads/arm-perf-staging)] libstdc++: Update C++20 library status docs X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/vendors/ARM/heads/arm-perf-staging X-Git-Oldrev: 40541efe1c063e9ce894b5f11ff727e4aec56e8b X-Git-Newrev: be0363c80f7ac93f1dbd00da6beb9ce0eed96d9d Message-Id: <20200717145444.2D41D39F0C30@sourceware.org> Date: Fri, 17 Jul 2020 14:54:44 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jul 2020 14:54:44 -0000 https://gcc.gnu.org/g:be0363c80f7ac93f1dbd00da6beb9ce0eed96d9d commit be0363c80f7ac93f1dbd00da6beb9ce0eed96d9d Author: Jonathan Wakely Date: Thu Apr 23 21:39:33 2020 +0100 libstdc++: Update C++20 library status docs This reorganises the C++20 status table, grouping the proposals by category. It also adds more proposals, and documents all the feature test macros for C++20 library changes. * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. * doc/html/*: Regenerate. Diff: --- libstdc++-v3/ChangeLog | 3 + libstdc++-v3/doc/html/index.html | 2 +- libstdc++-v3/doc/html/manual/index.html | 4 +- libstdc++-v3/doc/html/manual/intro.html | 2 +- libstdc++-v3/doc/html/manual/status.html | 780 +++++++------ libstdc++-v3/doc/xml/manual/status_cxx2020.xml | 1426 +++++++++++++----------- 6 files changed, 1165 insertions(+), 1052 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7ce32b9348b..7cca91e090b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,8 @@ 2020-04-23 Jonathan Wakely + * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. + * doc/html/*: Regenerate. + * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert value for C++17 to 201803L because P0858R0 is supported for C++17. * include/std/version (__cpp_lib_array_constexpr): Likewise. diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 46475208895..930b352f0c2 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -23,7 +23,7 @@


Table of Contents

The GNU C++ Library Manual
I. Introduction -
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ 202a
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
II. +
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ 2020
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
II. Standard Contents
4. Support diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index 74bfb5da4b7..3c13646addd 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -4,7 +4,7 @@


Table of Contents

I. Introduction -
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ 202a
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
II. +
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ 2020
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
II. Standard Contents
4. Support @@ -149,7 +149,7 @@ Support for C++11 dialect.
21.10. Non-unique Mapping Containers
21.11. Point Iterator Hierarchy
21.12. Invalidation Guarantee Tags Hierarchy
21.13. Container Tag Hierarchy
21.14. Hash functions, ranged-hash functions, and range-hashing functions
21.15. Insert hash sequence diagram
21.16. Insert hash sequence diagram with a null policy
21.17. Hash policy class diagram
21.18. Balls and bins
21.19. Insert resize sequence diagram
21.20. Standard resize policy trigger sequence diagram
21.21. Standard resize policy size sequence - diagram
21.22. Tree node invariants
21.23. Tree node invalidation
21.24. A tree and its update policy
21.25. Restoring node invariants
21.26. Insert update sequence
21.27. Useless update path
21.28. A PATRICIA trie
21.29. A trie and its update policy
21.30. A simple list
21.31. The counter algorithm
21.32. Underlying Priority-Queue Data-Structures.
21.33. Priority-Queue Data-Structure Tags.
B.1. Configure and Build File Dependencies
\ No newline at end of file + \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index e0583a8de6f..b2716d05865 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -2,7 +2,7 @@ Chapter 1. Status

Chapter 1. Status

Implementation Status

C++ 1998/2003

Implementation Status

Next


Chapter 1. Status

Implementation Status

C++ 1998/2003

Implementation Status

This status table is based on the table of contents of ISO/IEC 14882:2003.

This section describes the C++ support in mainline GCC, not in any @@ -1083,7 +1083,7 @@ since C++14 and the implementation is complete.

30.10.15.4 [fs.op.file_size] If !is_regular_file(p), an error is reported. -

C++ 202a

+

C++ 2020

In this implementation the -std=gnu++2a or -std=c++2a flag must be used to enable language and library @@ -1096,483 +1096,451 @@ This section describes the C++20 and library TS support in mainline GCC, not in any particular release.

The following table lists new library features that have been accepted into -the C++2a working draft. The "Proposal" column provides a link to the +the C++20 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 +A dash (—) in the status column indicates that the changes in the proposal +either do not affect the code in libstdc++, or the changes are not required for conformance. +The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from SD-6: -Feature-testing recommendations for C++. -

Table 1.8. C++ 2020 Implementation Status

Library FeatureProposalStatusSD-6 Feature Test
Endian just Endian - - P0463R1 - - 8.1  
Extending make_shared to Support Arrays - - P0674R1 - -  
Floating Point Atomic - - P0020R6 - - 10.1  
C++ Synchronized Buffered Ostream - - P0053R7 - -  
Add constexpr modifiers to functions in <algorithm> and <utility> Headers +Feature-testing recommendations for C++ (where applicable) +or any notes about the implementation. +

Table 1.8. C++ 2020 Library Features

Library FeatureProposalStatusSD-6 Feature Test / Notes
+ Compile-time programming +
Add constexpr modifiers to functions in <algorithm> and <utility> Headers - P0202R3 - - 10.1 __cpp_lib_constexpr_algorithms >= 201703L
Constexpr for std::complex + P0202R3 + 10.1 __cpp_lib_constexpr_algorithms >= 201703L
Constexpr for swap and swap related functions + + P0879R0 + 10.1 __cpp_lib_constexpr_algorithms >= 201806L
Constexpr for std::complex - P0415R1 - - 9.1  
Make std::memory_order a scoped enumeration + P0415R1 + 9.1 __cpp_lib_constexpr_complex >= 201711L (since 9.4, see Note 1)
P0595R2 std::is_constant_evaluated() + + P0595R2 + 9.1 __cpp_lib_is_constant_evaluated >= 201811L
More constexpr containers + + P0784R7 + 10.1 __cpp_lib_constexpr_dynamic_alloc >= 201907L
Making std::string constexpr + + P0980R1 +   __cpp_lib_constexpr_string >= 201907L
Making std::vector constexpr + + P1004R2 +   __cpp_lib_constexpr_vector >= 201907L
Constexpr in std::pointer_traits + + P1006R1 + 9.1 __cpp_lib_constexpr_memory >= 201811L (since 9.4, see Note 1)
constexpr for <numeric> algorithms + + P1645R1 + 10.1 __cpp_lib_constexpr_numeric >= 201911L
Constexpr iterator requirements + + P0858R0 + 9.1 +
__cpp_lib_array_constexpr >= 201803L
__cpp_lib_string_view >= 201803L
(both since 9.4, see Note 1)
+
constexpr comparison operators for std::array + + P1023R0 + 10.1 __cpp_lib_array_constexpr >= 201806
Misc constexpr bits + + P1032R1 + 10.1 +
__cpp_lib_array_constexpr >= 201811L
__cpp_lib_constexpr_functional >= 201811L
__cpp_lib_constexpr_iterator >= 201811L
__cpp_lib_constexpr_string_view >= 201811L
__cpp_lib_constexpr_tuple >= 201811L
__cpp_lib_constexpr_utility >= 201811L
+
constexpr INVOKE + + P1065R2 + 10.1 __cpp_lib_constexpr_functional >= 201907L
Transformation Trait remove_cvref + + P0550R2 + 9.1 __cpp_lib_remove_cvref >= 201711L (since 9.4, see Note 1)
Implicit conversion traits and utility functions + + P0758R1 + 9.1 __cpp_lib_is_nothrow_convertible >= 201806L (since 9.4, see Note 1)
The identity metafunction + + P0887R1 + 9.1 __cpp_lib_type_identity >= 201806L (since 9.4, see Note 1)
unwrap_ref_decay and unwrap_reference + + P0318R1 + 9.1 __cpp_lib_unwrap_ref >= 201811L (since 9.4, see Note 1)
Improving Completeness Requirements for Type Traits + + P1285R0 + Partial  
Missing feature test macros + + P1353R0 + 9.1  
Making std::underlying_type SFINAE-friendly + + P0340R3 + 9.1  
Traits for [Un]bounded Arrays + + P1357R1 + 9.1 __cpp_lib_bounded_array_traits >= 201902L
Layout-compatibility and pointer-interconvertibility traits + + P0466R5 + +
__cpp_lib_is_layout_compatible >= 201907L
__cpp_lib_is_pointer_interconvertible >= 201907L
+
Integrating feature-test macros into the C++ WD + + P0941R2 + 5.1  
<version> + + P0754R2 + 9.1 __has_include(<version>)
+ Synchronization +
Atomic Ref + + P0019R8 + 10.1 __cpp_lib_atomic_ref >= 201806L
Floating Point Atomic + + P0020R6 + 10.1 __cpp_lib_atomic_float >= 201711L
C++ Synchronized Buffered Ostream + + P0053R7 + __cpp_lib_syncbuf >= 201711L
Manipulators for C++ Synchronized Buffered Ostream + + P0753R2 + __cpp_lib_syncbuf >= 201803L
Make std::memory_order a scoped enumeration - P0439R0 - - 9.1  
String Prefix and Suffix Checking + P0439R0 + 9.1  
The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange + + P0528R3 +  
Atomic shared_ptr + + P0718R2 + __cpp_lib_atomic_shared_ptr >= 201711L
std::stop_token and std::jthread + + P0660R10 + 10.1 __cpp_lib_jthread >= 201907L
Rename condition_variable_any interruptible wait methods + + P1869R1 + 10.1 __cpp_lib_jthread >= 201911L
Atomic waiting and notifying, std::semaphore, std::latch and std::barrier + + P1135R6 + +
__cpp_lib_atomic_lock_free_type_aliases >= 201907L
__cpp_lib_atomic_flag_test >= 201907L
__cpp_lib_atomic_wait >= 201907L
__cpp_lib_semaphore >= 201907L
__cpp_lib_latch >= 201907L
__cpp_lib_barrier >= 201907L
+
Fixing Atomic Initialization + + P0883R2 + 10.1 __cpp_lib_atomic_value_initialization >= 201911L
+ Ranges and Concepts +
Standard Library Concepts + + P0898R3 + 10.1 __cpp_lib_concepts >= 201806L
Rename concepts to standard_case for C++20, while we still can + + P1754R1 + 10.1 __cpp_lib_concepts >= 201907L
Wording for boolean-testable + + P1964R2 + 10.1 __cpp_lib_concepts >= 202002L
The One Ranges Proposal + + P0896R4 + 10.1 __cpp_lib_ranges >= 201811L
Input Range Adaptors + + P1035R7 + 10.1 __cpp_lib_ranges >= 201907L
ranges compare algorithm are over-constrained + + P1716R3 + 10.1 __cpp_lib_ranges >= 201911L
Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) + + P1248R1 + 10.1  
Ranges Design Cleanup + + P1252R2 + 10.1  
+ Time, dates, calendars, time zones +
Extending chrono to Calendars and Time Zones + + P0355R7 +   __cpp_lib_chrono >= 201803L
Miscellaneous minor fixes for chrono + + P1466R3 +   __cpp_lib_chrono >= 201907L
<chrono> zero(), min(), and max() should be noexcept + + P0972R0 + 9.1  
+ Three-way comparison +
Library Support for the Spaceship (Comparison) Operator + + P0768R1 + 10.1 __cpp_lib_three_way_comparison >= 201711L
Symmetry for spaceship + + P0905R1 + 10.1  
Adding <=> to the standard library + + P1614R2 + 10.1 + __cpp_lib_three_way_comparison >= 201907L +
+ Strings and text +
string::reserve Should Not Shrink + + P0966R1 +  
char8_t: A type for UTF-8 characters and strings + + P0482R6 + 9.1 __cpp_lib_char8_t >= 201811L
char8_t backward compatibility remediation + + P1423R3 + 10.1 __cpp_lib_char8_t >= 201907L
Text formatting + + P0645R10 + + __cpp_lib_format >= 201907L +
Integration of chrono with text formatting + + P1361R2 + + __cpp_lib_format >= 201907L +
Printf corner cases in std::format + + P1652R1 + + __cpp_lib_format >= 201907L +
String Prefix and Suffix Checking - P0457R2 - - 9.1  
Transformation Trait remove_cvref - - P0550R2 - - 9.1  
nodiscard in the Library + P0457R2 + 9.1 __cpp_lib_starts_ends_with >= 201711L (since 9.4, see Note 1)
Update The Reference To The Unicode Standard + + P1025R1 +  
+ Containers +
span: bounds-safe views for sequences of objects + + P0122R7 + 10.1 __cpp_lib_span >= 201803L
+ Usability Enhancements for std::span + + + P1024R3 + 10.1 __cpp_lib_span >= 201902L
Should Span be Regular? + + P1085R2 + 10.1  
Fixed-size <span> construction from dynamic range + + P1976R2 + 10.1 __cpp_lib_span >= 202002L
std::to_array + + P0325R4 + 10.1 __cpp_lib_to_array >= 201907L
Checking for Existence of an Element in Associative Containers + + P0458R2 + 9.1  
Comparing Unordered Containers + + P0809R0 +  
Heterogeneous lookup for unordered containers + + P0919R3 + __cpp_lib_generic_unordered_lookup >= 201811
Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 + + P1209R0 + 9.1 __cpp_lib_erase_if >= 201811L
Improving the Return Value of Erase-Like Algorithms + + P0646R1 + 9.1 __cpp_lib_list_remove_return_type >= 201806L
Improving the Return Value of Erase-Like Algorithms II: Free erase/erase_if + + P1115R3 + 9.1 +
__cpp_lib_erase_if >= 202002L
(defined to 201900L for GCC 9.1 and 9.2 so use > 201811L)
+
Signed ssize() functions, unsigned size() functions + + P1227R2 + 10.1 __cpp_lib_ssize >= 201902L
+ Memory management +
Utility to convert a pointer to a raw pointer + + P0653R2 + 8.1 __cpp_lib_to_address >= 201711L (since 9.4, see Note 1)
Extending make_shared to Support Arrays + + P0674R1 + __cpp_lib_shared_ptr_arrays >= 201707L
Efficient sized delete for variable sized classes + + P0722R3 + 9.1 __cpp_lib_destroying_delete >= 201806L
Utility functions to implement uses-allocator construction + + P0591R4 + 9.1 + std::scoped_allocator_adaptor changes missing in 9.1.0 +
std::assume_aligned + + P1007R3 + 9.1 __cpp_lib_assume_aligned >= 201811L (since 9.4, see Note 1)
Smart pointer creation with default initialization + + P1020R1 + __cpp_lib_smart_ptr_for_overwrite >= 201811L
Make stateful allocator propagation more consistent for operator+(basic_string) + + P1165R1 + 10.1  
+ polymorphic_allocator<> as a vocabulary type + + + P0339R6 + 9.1 + __cpp_lib_polymorphic_allocator >= 201902L (since 9.4, see Note 1) +
LWG 2511: guaranteed copy elision for piecewise construction + + P0475R1 + 7.1  
+ Miscellaneous +
nodiscard in the Library - P0600R1 - + P0600R1 9.1  
de-pessimize legacy algorithms with std::move - P0616R0 - - 9.1  
Utility to convert a pointer to a raw pointer - - P0653R2 - - 8.1  
Atomic shared_ptr - - P0718R2 - -  
Deprecate POD + P0616R0 + 9.1  
Deprecate POD - P0767R1 - -  
Library Support for the Spaceship (Comparison) Operator - - P0768R1 - -  
Treating Unnecessary decay + P0767R1 + 10.1  
Treating Unnecessary decay - P0777R1 - - 9.1  
<span> - - P0122R7 - - 10.1 __cpp_lib_span >= 201803L
Extending chrono to Calendars and Time Zones - - P0355R7 - -  
Thou Shalt Not Specialize std Function Templates! + P0777R1 + 9.1  
Thou Shalt Not Specialize std Function Templates! - P0551R3 - -  
Manipulators for C++ Synchronized Buffered Ostream - - P0753R2 - -  
<version> - - P0754R2 - - 9.1  
Comparing Unordered Containers - - P0809R0 - -  
Constexpr iterator requirements - - P0858R0 - - 9.1 __cpp_lib_string_view >= 201803L - and __cpp_lib_array_constexpr >= 201803L
Symmetry for spaceship - - P0905R1 - -  
string::reserve Should Not Shrink - - P0966R1 - -  
Atomic Ref - - P0019R8 - - 10.1 __cpp_lib_atomic_ref >= 201806L
Checking for Existence of an Element in Associative Containers - - P0458R2 - - 9.1  
LWG 2511: guaranteed copy elision for piecewise construction - - P0475R1 - - 7.1  
Bit-casting object representations + P0551R3 +  
Bit-casting object representations - P0476R2 - -  
The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange - - P0528R3 - -  
Support for contract based programming in C++ - - P0542R5 - -  
Integral power-of-2 operations + P0476R2 + __cpp_lib_bit_cast >= 201806L
Integral power-of-2 operations - P0556R3 - - 9.1  
Reviewing Deprecated Facilities of C++17 for C++20 + P0556R3 + 9.1 __cpp_lib_int_pow2 >= 201806L (since 9.4, see Note 1)
On the names of low-level bit manipulation functions + + P1956R1 + 10.1 __cpp_lib_int_pow2 >= 202002L
Safe integral comparisons + + P0586R2 + 10.1 __cpp_lib_integer_comparison_functions >= 202002L
Reviewing Deprecated Facilities of C++17 for C++20 - P0619R4 - -  
Improving the Return Value of Erase-Like Algorithms - - P0646R1 - - 9.1 __cpp_lib_list_remove_return_type >= 201806L
Efficient sized delete for variable sized classes - - P0722R3 - - 9.1 __cpp_lib_destroying_delete >= 201806L
Implicit conversion traits and utility functions - - P0758R1 - - 9.1  
fpos Requirements + P0619R4 +  
fpos Requirements - P0759R1 - - Note 1  
Add shift to <algorithm> + P0759R1 +  
Add shift to <algorithm> - P0769R2 - -  
Standard Library Specification in a Concepts and Contracts World + P0769R2 + 10.1 __cpp_lib_shift >= 201806L
Standard Library Specification in a Concepts and Contracts World - P0788R3 - -  
Constexpr for swap and swap related functions - - P0879R0 - - 10.1 __cpp_lib_constexpr_algorithms >= 201806L
The identity metafunction - - P0887R1 - - 9.1  
explicit(bool) + P0788R3 +  
explicit(bool) - P0892R2 - - Note 1  
Standard Library Concepts - - P0898R3 - - 10.1 __cpp_lib_concepts >= 201806L
Eradicating unnecessarily explicit default constructors from the standard library + P0892R2 +  
Eradicating unnecessarily explicit default constructors from the standard library - P0935R0 - - 9.1  
Integrating feature-test macros into the C++ WD - - P0941R2 - - 5.1  
constexpr comparison operators for std::array - - P1023R0 - - 10.1  
Update The Reference To The Unicode Standard - - P1025R1 - -  
Consistency improvements for <=> and other comparison operators - - P1120R0 - -  
unwrap_ref_decay and unwrap_reference - - P0318R1 - - 9.1  
Simplified partial function application + P0935R0 + 9.1  
std::function move constructor should be noexcept + + P0771R1 + 7.2  
Simplified partial function application - P0356R5 - - 9.1 __cpp_lib_bind_front >= 201811L
reference_wrapper for incomplete types + P0356R5 + 9.1 __cpp_lib_bind_front >= 201811L
bind_front should not unwrap reference_wrapper + + P1651R0 + 9.3 __cpp_lib_bind_front >= 201907L
reference_wrapper for incomplete types - P0357R3 - - 9.1  
char8_t: A type for UTF-8 characters and strings - - P0482R6 - - 9.1 __cpp_lib_char8_t >= 201811L
Fixing operator>>(basic_istream&, CharT*) (LWG 2499) + P0357R3 + 9.1  
Fixing operator>>(basic_istream&, CharT*) (LWG 2499) - P0487R1 - -  
Utility functions to implement uses-allocator construction - - P0591R4 - - 9.1 - std::scoped_allocator_adaptor changes missing in 9.1.0 -
P0595R2 std::is_constant_evaluated() - - P0595R2 - - 9.1  
variant and optional should propagate copy/move triviality + P0487R1 +  
variant and optional should propagate copy/move triviality - P0602R4 - + P0602R4 8.3  
A sane variant converting constructor - P0608R3 - + P0608R3 10.1  
visit<R>: Explicit Return Type for visit - P0655R1 - - 9.1  
std::function move constructor should be noexcept - - P0771R1 - - 7.2  
The One Ranges Proposal - - P0896R4 - -  
P0899R1 - LWG 3016 is not a defect + P0655R1 + 9.1  
P0899R1 - LWG 3016 is not a defect - P0899R1 - - 7.1  
Heterogeneous lookup for unordered containers - - P0919R3 - -  
<chrono> zero(), min(), and max() should be noexcept - - P0972R0 - - 9.1  
Constexpr in std::pointer_traits - - P1006R1 - - 9.1  
std::assume_aligned - - P1007R3 - - 9.1  
Smart pointer creation with default initialization - - P1020R1 - -  
Misc constexpr bits - - P1032R1 - -  
Should Span be Regular? - - P1085R2 - - 10.1 __cpp_lib_span >= 201902L
Editorial Guidance for merging P0019r8 and P0528r3 + P0899R1 + 7.1  
Editorial Guidance for merging P0019r8 and P0528r3 - P1123R0 - - Note 1  
Cleaning up Clause 20 + P1123R0 +  
Cleaning up Clause 20 - P1148R0 - -  
Make stateful allocator propagation more consistent for operator+(basic_string) - - P1165R1 - - 10.1  
Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 - - P1209R0 - - 9.1 __cpp_lib_erase_if >= 201811L
Completing the Rebase of Library Fundamentals, Version 3, Working Draft + P1148R0 +  
Completing the Rebase of Library Fundamentals, Version 3, Working Draft - P1210R0 - -  
Alternative Wording for P0907R4 Signed Integers are Two's Complement + P1210R0 +  
Alternative Wording for P0907R4 Signed Integers are Two's Complement - P1236R1 - -  
Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) - - P1248R1 - -  
Improving Completeness Requirements for Type Traits - - P1285R0 - - Partial  
Well-behaved interpolation for numbers and pointers - - P0811R3 - - 9.1 __cpp_lib_interpolate >= 201902L
Missing feature test macros - - P1353R0 - - 9.1  
- polymorphic_allocator<> - as a vocabulary type - - - P0339R6 - - 9.1  
Making std::underlying_type SFINAE-friendly - - P0340R3 - - 9.1  
+ P1236R1 +  
I Stream, You Stream, We All Stream for istream_iterator - P0738R2 - -  
+ P0738R2 + 10.1  
Mandating the Standard Library: Clause 16 - Language support library - P1458R1 - - Note 1
+ P1458R1 +  
Mandating the Standard Library: Clause 18 - Diagnostics library - P1459R1 - - Note 1
+ P1459R1 +  
Mandating the Standard Library: Clause 20 - Strings library - P1462R1 - - Note 1
+ P1462R1 +  
Mandating the Standard Library: Clause 21 - Containers library - P1463R1 - - 10  
+ P1463R1 + 10.1  
Mandating the Standard Library: Clause 22 - Iterators library - P1464R1 - + P1464R1  
Make create_directory() Intuitive P1164R1 - 8.3 Treated as a DR for C++17
+ 8.3 Treated as a DR for C++17
Target Vectorization Policies from Parallelism V2 TS to C++20 - P1001R2 - -  
Signed ssize() functions, unsigned size() functions - - P1227R2 - - 10.1  
Ranges Design Cleanup - - P1252R2 - -  
- Usability Enhancements for std::span - - - P1024R3 - - 10.1 __cpp_lib_span >= 201902L
Traits for [Un]bounded Arrays - - P1357R1 - - 9.1 __cpp_lib_bounded_array_traits >= 201902L
std::to_array - - P0325R4 - - 10.1 __cpp_lib_to_array >= 201907L
Bit operations + P1001R2 + 9.1 __cpp_lib_execution >= 201902L (since 9.4, see Note 1)
Merge Coroutines TS into C++20 working draft + + P0912R5 + 10.1 __cpp_lib_coroutines >= 201902L
Endian just Endian + + P0463R1 + 8.1 __cpp_lib_endian >= 201907L
Bit operations - P0553R4 - - 10.1 __cpp_lib_bitops >= 201907L
Mathematical constants + P0553R4 + 10.1 __cpp_lib_bitops >= 201907L (since 9.4, see Note 1)
Well-behaved interpolation for numbers and pointers + + P0811R3 + 9.1 __cpp_lib_interpolate >= 201902L
Mathematical constants - P0631R8 - - 10.1 __cpp_lib_math_constants >= 201907L
Layout-compatibility and pointer-interconvertibility traits - - P0466R5 - - - __cpp_lib_is_layout_compatible >= 201907L, - __cpp_lib_is_layout_interconvertible >= 201907L, -
std::stop_token and std::jthread - - P0660R10 - - 10.1 __cpp_lib_jthread >= 201907L
Text formatting - - P0645R10 - - - __cpp_lib_format >= 201907L, -
constexpr std::invoke and related utilities - - P1065R2 - - 10.1 __cpp_lib_constexpr_invoke >= 201907L
constexpr std::allocator and related utilities - - P0784R7 - - 10.1 __cpp_constexpr_dynamic_alloc >= 201907L
Atomic waiting and notifying, std::semaphore, std::latch and std::barrier - - P1135R6 - - - __cpp_lib_atomic_lock_free_type_aliases >= 201907L in <atomic>, - __cpp_lib_atomic_flag_test >= 201907L in <atomic>, - __cpp_lib_atomic_wait >= 201907L in <atomic>, - __cpp_lib_semaphore >= 201907L in <semaphore>, - __cpp_lib_latch >= 201907L in <latch>, - __cpp_lib_barrier >= 201907L in <barrier> -
std::source_location + P0631R8 + 10.1 __cpp_lib_math_constants >= 201907L
std::source_location - P1208R6 - - - __cpp_lib_source_location >= 201907L, -
Adding <=> to the standard library - - P1614R2 - + P1208R6 - __cpp_lib_spaceship >= 201907L, + __cpp_lib_source_location >= 201907L
Efficient access to std::basic_stringbuf's Buffer - P0408R7 - + P0408R7  

-Note 1: The changes in the proposal either do not affect the code in libstdc++, -or the changes are not required for conformance. -

Implementation Specific Behavior

For behaviour which is also specified by previous standards, - see C++ 1998/2003 Implementation - Specific Behavior, C++ - 2011 Implementation Specific Behavior and C++ 2017 Implementation Specific - Behavior. - This section only documents behaviour which is new in the 202a draft. -

C++ TR1

+Note 1: This feature is supported in older releases but the +__cpp_lib macro is not defined to the right value +(or not defined at all) until the version shown in parentheses. +

C++ TR1

This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml index 17f28887119..ade77cbb80b 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml @@ -1,8 +1,8 @@ -

+
-C++ 202a +C++ 2020 ISO C++ 2020 @@ -26,17 +26,20 @@ not in any particular release. The following table lists new library features that have been accepted into -the C++2a working draft. The "Proposal" column provides a link to the +the C++20 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 +A dash (—) in the status column indicates that the changes in the proposal +either do not affect the code in libstdc++, or the changes are not required for conformance. +The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from SD-6: -Feature-testing recommendations for C++. +Feature-testing recommendations for C++ (where applicable) +or any notes about the implementation. - -C++ 2020 Implementation Status +
+C++ 2020 Library Features @@ -48,442 +51,755 @@ Feature-testing recommendations for C++. Library Feature Proposal Status - SD-6 Feature Test + SD-6 Feature Test / Notes - Endian just Endian + + Compile-time programming + + + + + Add constexpr modifiers to functions in <algorithm> and <utility> Headers - - P0463R1 - + + P0202R3 - 8.1 - + 10.1 + __cpp_lib_constexpr_algorithms >= 201703L - - Extending make_shared to Support Arrays + Constexpr for swap and swap related functions - - P0674R1 - + + P0879R0 - - + 10.1 + __cpp_lib_constexpr_algorithms >= 201806L - Floating Point Atomic + Constexpr for std::complex - - P0020R6 - + + P0415R1 + + 9.1 + __cpp_lib_constexpr_complex >= 201711L (since 9.4, see Note 1) + + + + P0595R2 std::is_constant_evaluated() + + + P0595R2 + + 9.1 + __cpp_lib_is_constant_evaluated >= 201811L + + + + More constexpr containers + + + P0784R7 10.1 - + __cpp_lib_constexpr_dynamic_alloc >= 201907L - C++ Synchronized Buffered Ostream + Making std::string constexpr - - P0053R7 - + + P0980R1 - - + + __cpp_lib_constexpr_string >= 201907L - Add constexpr modifiers to functions in <algorithm> and <utility> Headers + + Making std::vector constexpr - - P0202R3 - + + P1004R2 - 10.1 - __cpp_lib_constexpr_algorithms >= 201703L + + __cpp_lib_constexpr_vector >= 201907L - Constexpr for std::complex + Constexpr in std::pointer_traits - - P0415R1 - + + P1006R1 9.1 - + __cpp_lib_constexpr_memory >= 201811L (since 9.4, see Note 1) - Make std::memory_order a scoped enumeration + constexpr for <numeric> algorithms - - P0439R0 - + + P1645R1 - 9.1 - + 10.1 + __cpp_lib_constexpr_numeric >= 201911L - String Prefix and Suffix Checking + Constexpr iterator requirements - - P0457R2 - + + P0858R0 9.1 - + + + __cpp_lib_array_constexpr >= 201803L + __cpp_lib_string_view >= 201803L + (both since 9.4, see Note 1) + + + + + + constexpr comparison operators for std::array + + + P1023R0 + + 10.1 + __cpp_lib_array_constexpr >= 201806 + + + + Misc constexpr bits + + + P1032R1 + + 10.1 + + + __cpp_lib_array_constexpr >= 201811L + __cpp_lib_constexpr_functional >= 201811L + __cpp_lib_constexpr_iterator >= 201811L + __cpp_lib_constexpr_string_view >= 201811L + __cpp_lib_constexpr_tuple >= 201811L + __cpp_lib_constexpr_utility >= 201811L + + + + + + constexpr INVOKE + + + P1065R2 + + 10.1 + __cpp_lib_constexpr_functional >= 201907L + Transformation Trait remove_cvref - P0550R2 - + P0550R2 9.1 - + __cpp_lib_remove_cvref >= 201711L (since 9.4, see Note 1) - nodiscard in the Library + Implicit conversion traits and utility functions - - P0600R1 - + + P0758R1 + + 9.1 + __cpp_lib_is_nothrow_convertible >= 201806L (since 9.4, see Note 1) + + + + The identity metafunction + + + P0887R1 + + 9.1 + __cpp_lib_type_identity >= 201806L (since 9.4, see Note 1) + + + + + unwrap_ref_decay and unwrap_reference + + + P0318R1 9.1 + __cpp_lib_unwrap_ref >= 201811L (since 9.4, see Note 1) + + + + + Improving Completeness Requirements for Type Traits + + + P1285R0 + + Partial - de-pessimize legacy algorithms with std::move + Missing feature test macros - - P0616R0 - + + P1353R0 9.1 - Utility to convert a pointer to a raw pointer + Making std::underlying_type SFINAE-friendly - - P0653R2 - + + P0340R3 - 8.1 + 9.1 + + Traits for [Un]bounded Arrays + + + P1357R1 + + 9.1 + __cpp_lib_bounded_array_traits >= 201902L + + - Atomic shared_ptr + Layout-compatibility and pointer-interconvertibility traits - - P0718R2 - + + P0466R5 + + + __cpp_lib_is_layout_compatible >= 201907L + __cpp_lib_is_pointer_interconvertible >= 201907L + + + + + + Integrating feature-test macros into the C++ WD + + + P0941R2 + + 5.1 + + <version> + + + P0754R2 + + 9.1 + __has_include(<version>) + + + + + + Synchronization + + + + + Atomic Ref + + + P0019R8 + + 10.1 + __cpp_lib_atomic_ref >= 201806L + + + + Floating Point Atomic + + + P0020R6 + + 10.1 + __cpp_lib_atomic_float >= 201711L + + - Deprecate POD + C++ Synchronized Buffered Ostream - - P0767R1 - + + P0053R7 - + __cpp_lib_syncbuf >= 201711L - Library Support for the Spaceship (Comparison) Operator + Manipulators for C++ Synchronized Buffered Ostream - - P0768R1 - + + P0753R2 - + __cpp_lib_syncbuf >= 201803L - Treating Unnecessary decay + Make std::memory_order a scoped enumeration - - P0777R1 - + + P0439R0 9.1 - <span> + + The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange - - P0122R7 - + + P0528R3 - 10.1 - __cpp_lib_span >= 201803L + + - Extending chrono to Calendars and Time Zones + Atomic shared_ptr - - P0355R7 - + + P0718R2 - + __cpp_lib_atomic_shared_ptr >= 201711L + + + + std::stop_token and std::jthread + + + P0660R10 + + 10.1 + __cpp_lib_jthread >= 201907L + + + + Rename condition_variable_any interruptible wait methods + + + P1869R1 + + 10.1 + __cpp_lib_jthread >= 201911L - Thou Shalt Not Specialize std Function Templates! + Atomic waiting and notifying, std::semaphore, std::latch and std::barrier - - P0551R3 - + + P1135R6 + + + __cpp_lib_atomic_lock_free_type_aliases >= 201907L + __cpp_lib_atomic_flag_test >= 201907L + __cpp_lib_atomic_wait >= 201907L + __cpp_lib_semaphore >= 201907L + __cpp_lib_latch >= 201907L + __cpp_lib_barrier >= 201907L + + + + + + Fixing Atomic Initialization + + + P0883R2 + + 10.1 + __cpp_lib_atomic_value_initialization >= 201911L + + + + + + + Ranges and Concepts + + + + + Standard Library Concepts + + + P0898R3 + + 10.1 + __cpp_lib_concepts >= 201806L + + + + Rename concepts to standard_case for C++20, while we still can + + + P1754R1 + + 10.1 + __cpp_lib_concepts >= 201907L + + + + Wording for boolean-testable + + + P1964R2 + + 10.1 + __cpp_lib_concepts >= 202002L + + + + The One Ranges Proposal + + + P0896R4 + + 10.1 + __cpp_lib_ranges >= 201811L + + + + Input Range Adaptors + + + P1035R7 + + 10.1 + __cpp_lib_ranges >= 201907L + + + + ranges compare algorithm are over-constrained + + + P1716R3 + + 10.1 + __cpp_lib_ranges >= 201911L + + + + Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) + + + P1248R1 + + 10.1 - - Manipulators for C++ Synchronized Buffered Ostream + Ranges Design Cleanup - - P0753R2 - + + P1252R2 - + 10.1 + + - <version> + + Time, dates, calendars, time zones + + + + + + Extending chrono to Calendars and Time Zones - - P0754R2 - + + P0355R7 + + + __cpp_lib_chrono >= 201803L + + + + + Miscellaneous minor fixes for chrono + + + P1466R3 + + + __cpp_lib_chrono >= 201907L + + + + <chrono> zero(), min(), and max() should be noexcept + + + P0972R0 9.1 + + + + Three-way comparison + + + + + Library Support for the Spaceship (Comparison) Operator + + + P0768R1 + + 10.1 + __cpp_lib_three_way_comparison >= 201711L + + + + Symmetry for spaceship + + + P0905R1 + + 10.1 + + + + + Adding <=> to the standard library + + + P1614R2 + + 10.1 + + __cpp_lib_three_way_comparison >= 201907L + + + + + + + Strings and text + + + - Comparing Unordered Containers + string::reserve Should Not Shrink - - P0809R0 - + + P0966R1 - Constexpr iterator requirements + char8_t: A type for UTF-8 characters and strings - - P0858R0 - + + P0482R6 9.1 - __cpp_lib_string_view >= 201803L - and __cpp_lib_array_constexpr >= 201803L + __cpp_lib_char8_t >= 201811L - - Symmetry for spaceship + char8_t backward compatibility remediation - - P0905R1 - + + P1423R3 - - + 10.1 + __cpp_lib_char8_t >= 201907L - string::reserve Should Not Shrink + Text formatting - - P0966R1 - + + P0645R10 - - - - - Atomic Ref - - P0019R8 - + __cpp_lib_format >= 201907L - 10.1 - __cpp_lib_atomic_ref >= 201806L - Checking for Existence of an Element in Associative Containers + + Integration of chrono with text formatting - - P0458R2 - + + P1361R2 - 9.1 - - - - - LWG 2511: guaranteed copy elision for piecewise construction + - - P0475R1 - + __cpp_lib_format >= 201907L - 7.1 - - Bit-casting object representations + Printf corner cases in std::format - - P0476R2 - + + P1652R1 - + + __cpp_lib_format >= 201907L + - - The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange + String Prefix and Suffix Checking - - P0528R3 - + + P0457R2 - - + 9.1 + __cpp_lib_starts_ends_with >= 201711L (since 9.4, see Note 1) - Support for contract based programming in C++ + Update The Reference To The Unicode Standard - - P0542R5 - + + P1025R1 + - Integral power-of-2 operations + + Containers + + + + + span: bounds-safe views for sequences of objects - - P0556R3 - + + P0122R7 - 9.1 - + 10.1 + __cpp_lib_span >= 201803L - - Reviewing Deprecated Facilities of C++17 for C++20 - - P0619R4 - + Usability Enhancements for std::span - - + + + P1024R3 + + 10.1 + __cpp_lib_span >= 201902L - Improving the Return Value of Erase-Like Algorithms + Should Span be Regular? - - P0646R1 - + + P1085R2 - 9.1 - __cpp_lib_list_remove_return_type >= 201806L + 10.1 + - Efficient sized delete for variable sized classes + Fixed-size <span> construction from dynamic range - - P0722R3 - + + P1976R2 - 9.1 - __cpp_lib_destroying_delete >= 201806L + 10.1 + __cpp_lib_span >= 202002L - Implicit conversion traits and utility functions + std::to_array - - P0758R1 - + + P0325R4 - 9.1 - + 10.1 + __cpp_lib_to_array >= 201907L - fpos Requirements + Checking for Existence of an Element in Associative Containers - - P0759R1 - + + P0458R2 - Note 1 + 9.1 - Add shift to <algorithm> + Comparing Unordered Containers - - P0769R2 - + + P0809R0 @@ -491,496 +807,470 @@ Feature-testing recommendations for C++. - Standard Library Specification in a Concepts and Contracts World + Heterogeneous lookup for unordered containers - - P0788R3 - + + P0919R3 - + __cpp_lib_generic_unordered_lookup >= 201811 - Constexpr for swap and swap related functions + Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 - - P0879R0 - + + P1209R0 - 10.1 - __cpp_lib_constexpr_algorithms >= 201806L + 9.1 + __cpp_lib_erase_if >= 201811L - The identity metafunction + Improving the Return Value of Erase-Like Algorithms - - P0887R1 - + + P0646R1 9.1 - + __cpp_lib_list_remove_return_type >= 201806L - explicit(bool) + Improving the Return Value of Erase-Like Algorithms II: Free erase/erase_if - - P0892R2 - + + P1115R3 + + 9.1 + + + __cpp_lib_erase_if >= 202002L + (defined to 201900L for GCC 9.1 and 9.2 so use > 201811L) + - Note 1 - - Standard Library Concepts + Signed ssize() functions, unsigned size() functions - - P0898R3 - + + P1227R2 10.1 - __cpp_lib_concepts >= 201806L + __cpp_lib_ssize >= 201902L + - Eradicating unnecessarily explicit default constructors from the standard library - - - P0935R0 - + + Memory management - 9.1 - - Integrating feature-test macros into the C++ WD + Utility to convert a pointer to a raw pointer - - P0941R2 - + + P0653R2 - 5.1 - + 8.1 + __cpp_lib_to_address >= 201711L (since 9.4, see Note 1) - constexpr comparison operators for std::array + + Extending make_shared to Support Arrays - - P1023R0 - + + P0674R1 - 10.1 - + + __cpp_lib_shared_ptr_arrays >= 201707L - - Update The Reference To The Unicode Standard + Efficient sized delete for variable sized classes - - P1025R1 - + + P0722R3 - - + 9.1 + __cpp_lib_destroying_delete >= 201806L - - Consistency improvements for <=> and other comparison operators + Utility functions to implement uses-allocator construction - - P1120R0 - + + P0591R4 + + 9.1 + + std::scoped_allocator_adaptor changes missing in 9.1.0 - - - unwrap_ref_decay and unwrap_reference + std::assume_aligned - - P0318R1 - + + P1007R3 9.1 - + __cpp_lib_assume_aligned >= 201811L (since 9.4, see Note 1) - Simplified partial function application + + Smart pointer creation with default initialization - - P0356R5 - + + P1020R1 - 9.1 - __cpp_lib_bind_front >= 201811L + + __cpp_lib_smart_ptr_for_overwrite >= 201811L - reference_wrapper for incomplete types + Make stateful allocator propagation more consistent for operator+(basic_string) - - P0357R3 - + + P1165R1 - 9.1 + 10.1 - char8_t: A type for UTF-8 characters and strings - - P0482R6 - + polymorphic_allocator<> as a vocabulary type + + + + P0339R6 9.1 - __cpp_lib_char8_t >= 201811L + + __cpp_lib_polymorphic_allocator >= 201902L (since 9.4, see Note 1) + - - Fixing operator>>(basic_istream&, CharT*) (LWG 2499) + LWG 2511: guaranteed copy elision for piecewise construction - - P0487R1 - + + P0475R1 - + 7.1 + - Utility functions to implement uses-allocator construction - - - P0591R4 - - - 9.1 - - std::scoped_allocator_adaptor changes missing in 9.1.0 + + Miscellaneous - P0595R2 std::is_constant_evaluated() + nodiscard in the Library - - P0595R2 - + + P0600R1 9.1 - variant and optional should propagate copy/move triviality + de-pessimize legacy algorithms with std::move - - P0602R4 - + + P0616R0 - 8.3 + 9.1 - A sane variant converting constructor + Deprecate POD - - P0608R3 - + + P0767R1 10.1 - visit<R>: Explicit Return Type for visit + Treating Unnecessary decay - - P0655R1 - + + P0777R1 9.1 - std::function move constructor should be noexcept + + Thou Shalt Not Specialize std Function Templates! - - P0771R1 - + + P0551R3 - 7.2 + - The One Ranges Proposal + Bit-casting object representations - - P0896R4 - + + P0476R2 - + __cpp_lib_bit_cast >= 201806L - P0899R1 - LWG 3016 is not a defect + Integral power-of-2 operations - - P0899R1 - + + P0556R3 - 7.1 - + 9.1 + __cpp_lib_int_pow2 >= 201806L (since 9.4, see Note 1) - - Heterogeneous lookup for unordered containers + On the names of low-level bit manipulation functions - - P0919R3 - + + P1956R1 - - + 10.1 + __cpp_lib_int_pow2 >= 202002L - <chrono> zero(), min(), and max() should be noexcept + Safe integral comparisons - - P0972R0 - + + P0586R2 - 9.1 - + 10.1 + __cpp_lib_integer_comparison_functions >= 202002L - Constexpr in std::pointer_traits + + Reviewing Deprecated Facilities of C++17 for C++20 - - P1006R1 - + + P0619R4 - 9.1 + - std::assume_aligned + fpos Requirements - - P1007R3 - + + P0759R1 - 9.1 + - Smart pointer creation with default initialization + Add shift to <algorithm> - - P1020R1 - + + P0769R2 - - + 10.1 + __cpp_lib_shift >= 201806L - Misc constexpr bits + Standard Library Specification in a Concepts and Contracts World - - P1032R1 - + + P0788R3 - Should Span be Regular? + explicit(bool) - - P1085R2 - + + P0892R2 - 10.1 - __cpp_lib_span >= 201902L + + - Editorial Guidance for merging P0019r8 and P0528r3 + Eradicating unnecessarily explicit default constructors from the standard library - - P1123R0 - + + P0935R0 - Note 1 + 9.1 - - Cleaning up Clause 20 + std::function move constructor should be noexcept - - P1148R0 - + + P0771R1 - + 7.2 - Make stateful allocator propagation more consistent for operator+(basic_string) + Simplified partial function application - - P1165R1 - + + P0356R5 - 10.1 - + 9.1 + __cpp_lib_bind_front >= 201811L - Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 + bind_front should not unwrap reference_wrapper - - P1209R0 - + + P1651R0 - 9.1 - __cpp_lib_erase_if >= 201811L + 9.3 + __cpp_lib_bind_front >= 201907L - - Completing the Rebase of Library Fundamentals, Version 3, Working Draft + reference_wrapper for incomplete types - - P1210R0 - + + P0357R3 - + 9.1 - Alternative Wording for P0907R4 Signed Integers are Two's Complement + Fixing operator>>(basic_istream&, CharT*) (LWG 2499) - - P1236R1 - + + P0487R1 - - Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) + variant and optional should propagate copy/move triviality - - P1248R1 - + + P0602R4 - + 8.3 - - Improving Completeness Requirements for Type Traits + A sane variant converting constructor - - P1285R0 - + + P0608R3 - Partial + 10.1 - Well-behaved interpolation for numbers and pointers + visit<R>: Explicit Return Type for visit - - P0811R3 - + + P0655R1 9.1 - __cpp_lib_interpolate >= 201902L + - Missing feature test macros + P0899R1 - LWG 3016 is not a defect - - P1353R0 - + + P0899R1 - 9.1 + 7.1 + Editorial Guidance for merging P0019r8 and P0528r3 - polymorphic_allocator<> - as a vocabulary type + + P1123R0 + + + + + + + Cleaning up Clause 20 - - P0339R6 - + + P1148R0 - 9.1 + - Making std::underlying_type SFINAE-friendly + + Completing the Rebase of Library Fundamentals, Version 3, Working Draft - - P0340R3 - + + P1210R0 - 9.1 + - + Alternative Wording for P0907R4 Signed Integers are Two's Complement + + + P1236R1 + + + + + + I Stream, You Stream, We All Stream for istream_iterator - P0738R2 - + P0738R2 - + 10.1 @@ -991,11 +1281,10 @@ Feature-testing recommendations for C++. - P1458R1 - + P1458R1 - - Note 1 + + @@ -1005,11 +1294,10 @@ Feature-testing recommendations for C++. - P1459R1 - + P1459R1 - - Note 1 + + @@ -1019,11 +1307,10 @@ Feature-testing recommendations for C++. - P1462R1 - + P1462R1 - - Note 1 + + @@ -1033,10 +1320,9 @@ Feature-testing recommendations for C++. - P1463R1 - + P1463R1 - 10 + 10.1 @@ -1048,8 +1334,7 @@ Feature-testing recommendations for C++. - P1464R1 - + P1464R1 @@ -1060,212 +1345,84 @@ Feature-testing recommendations for C++. P1164R1 - + 8.3 Treated as a DR for C++17 - Target Vectorization Policies from Parallelism V2 TS to C++20 - P1001R2 - + P1001R2 - - + 9.1 + __cpp_lib_execution >= 201902L (since 9.4, see Note 1) - Signed ssize() functions, unsigned size() functions + Merge Coroutines TS into C++20 working draft - - P1227R2 - + + P0912R5 10.1 - + __cpp_lib_coroutines >= 201902L - - Ranges Design Cleanup + Endian just Endian - - P1252R2 - + + P0463R1 - - + 8.1 + __cpp_lib_endian >= 201907L + Bit operations - Usability Enhancements for std::span - - - - P1024R3 - + + P0553R4 10.1 - __cpp_lib_span >= 201902L + __cpp_lib_bitops >= 201907L (since 9.4, see Note 1) - Traits for [Un]bounded Arrays + Well-behaved interpolation for numbers and pointers - - P1357R1 - + + P0811R3 9.1 - __cpp_lib_bounded_array_traits >= 201902L - - - - std::to_array - - - P0325R4 - - - 10.1 - __cpp_lib_to_array >= 201907L - - - - Bit operations - - - P0553R4 - - - 10.1 - __cpp_lib_bitops >= 201907L + __cpp_lib_interpolate >= 201902L Mathematical constants - P0631R8 - + P0631R8 10.1 __cpp_lib_math_constants >= 201907L - - - Layout-compatibility and pointer-interconvertibility traits - - - P0466R5 - - - - - __cpp_lib_is_layout_compatible >= 201907L, - __cpp_lib_is_layout_interconvertible >= 201907L, - - - - - std::stop_token and std::jthread - - - P0660R10 - - - 10.1 - __cpp_lib_jthread >= 201907L - - - - - Text formatting - - - P0645R10 - - - - - __cpp_lib_format >= 201907L, - - - - - constexpr std::invoke and related utilities - - - P1065R2 - - - 10.1 - __cpp_lib_constexpr_invoke >= 201907L - - - - constexpr std::allocator and related utilities - - - P0784R7 - - - 10.1 - __cpp_constexpr_dynamic_alloc >= 201907L - - - - - Atomic waiting and notifying, std::semaphore, std::latch and std::barrier - - - P1135R6 - - - - - __cpp_lib_atomic_lock_free_type_aliases >= 201907L in <atomic>, - __cpp_lib_atomic_flag_test >= 201907L in <atomic>, - __cpp_lib_atomic_wait >= 201907L in <atomic>, - __cpp_lib_semaphore >= 201907L in <semaphore>, - __cpp_lib_latch >= 201907L in <latch>, - __cpp_lib_barrier >= 201907L in <barrier> - - - std::source_location - P1208R6 - - - - - __cpp_lib_source_location >= 201907L, - - - - - - Adding <=> to the standard library - - - P1614R2 - + P1208R6 - __cpp_lib_spaceship >= 201907L, + __cpp_lib_source_location >= 201907L @@ -1274,8 +1431,7 @@ Feature-testing recommendations for C++. Efficient access to std::basic_stringbuf's Buffer - P0408R7 - + P0408R7 @@ -1286,23 +1442,9 @@ Feature-testing recommendations for C++.
-Note 1: The changes in the proposal either do not affect the code in libstdc++, -or the changes are not required for conformance. +Note 1: This feature is supported in older releases but the +__cpp_lib macro is not defined to the right value +(or not defined at all) until the version shown in parentheses. - -
Implementation Specific Behavior - - For behaviour which is also specified by previous standards, - see C++ 1998/2003 Implementation - Specific Behavior, C++ - 2011 Implementation Specific Behavior and C++ 2017 Implementation Specific - Behavior. - This section only documents behaviour which is new in the 202a draft. - - - -
-