From: Jonathan Wakely Date: Fri, 11 Jan 2019 23:41:15 +0000 (+0000) Subject: Document C++20 library status X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=66dc59e24fc7bcf28d1ec20919f7014a701bfc9d;p=gcc.git Document C++20 library status * doc/xml/manual/intro.xml: Include new section. * doc/xml/manual/status_cxx2017.xml: Document more implementation-defined properties of the library. * doc/xml/manual/status_cxx2020.xml: Document C++2a status. * doc/html/*: Regenerate. From-SVN: r267867 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9ae1fced094..c89ab4a4bdf 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2019-01-11 Jonathan Wakely + * doc/xml/manual/intro.xml: Include new section. + * doc/xml/manual/status_cxx2017.xml: Document more + implementation-defined properties of the library. + * doc/xml/manual/status_cxx2020.xml: Document C++2a status. + * doc/html/*: Regenerate. + * include/bits/refwrap.h [__cplusplus > 201703L] (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base) (_Reference_wrapper_base_memfun): Do not define for C++2a. diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index 48a5014198d..576e96373b7 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++ 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
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
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++ 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
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. Standard Contents
4. Support diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index 675505e30fc..0761c55bfac 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++ 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
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
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++ 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
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. Standard Contents
4. Support @@ -149,7 +149,7 @@ Support for C++11 dialect.
22.10. Non-unique Mapping Containers
22.11. Point Iterator Hierarchy
22.12. Invalidation Guarantee Tags Hierarchy
22.13. Container Tag Hierarchy
22.14. Hash functions, ranged-hash functions, and range-hashing functions
22.15. Insert hash sequence diagram
22.16. Insert hash sequence diagram with a null policy
22.17. Hash policy class diagram
22.18. Balls and bins
22.19. Insert resize sequence diagram
22.20. Standard resize policy trigger sequence diagram
22.21. Standard resize policy size sequence - diagram
22.22. Tree node invariants
22.23. Tree node invalidation
22.24. A tree and its update policy
22.25. Restoring node invariants
22.26. Insert update sequence
22.27. Useless update path
22.28. A PATRICIA trie
22.29. A trie and its update policy
22.30. A simple list
22.31. The counter algorithm
22.32. Underlying Priority-Queue Data-Structures.
22.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 1e328795de6..12853f7a915 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 page describes the C++ support in mainline GCC SVN, not in any @@ -890,25 +890,36 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. Specific Behavior and C++ 2011 Implementation Specific Behavior. This section only documents behaviour which is new in the 2017 standard. +

+ 20.5.1.2 [headers] + Whether names from Annex K are declared by C++ headers depends on + whether the underlying C library supports Annex K and declares the + names. For the GNU C library, there is no Annex K support and so + none of its names are declared by C++ headers.

23.6.5 [optional.bad_optional_access] what() returns "bad optional access".

23.7.3 [variant.variant] - Whether variant supports over-aligned types - should be documented here. + variant supports over-aligned types.

23.7.10 [variant.bad.access] what() returns "Unexpected index".

23.12.5.2 [memory.resource.pool.options] - The limits for maximum number of blocks and largest allocation size - supported by pool_options should be documented - here. + Let S equal numeric_limits<size_t>::digits. + The limit for maximum number of blocks in a chunk is given by + 2N-1, + where N is min(19, 3 + S/2). + The largest allocation size that will be allocated from a pool is + 222 + when S > 20, + otherwise 3072 when S > 16, + otherwise 768.

23.12.6.1 [memory.resource.monotonic.buffer.ctor] - The default next_buffer_size and growth factor should - be documented here. + The default next_buffer_size is 128 * sizeof(void*). + The default growth factor is 1.5.

23.15.4.3 [meta.unary.prop] The predicate condition for @@ -950,11 +961,363 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. on some targets.

30.10.5 [fs.filesystem.syn] - The clock used for file times is - std::chrono::system_clock. + The clock used for file times is an unspecified type + with a signed 64-bit representation, capable of representing + timestamps with nanosecond resolution. The clock's epoch is + unspecified, but is not the same as the system clock's epoch.

30.10.7.1 [fs.path.generic] dot-dot in the root-directory refers to the root-directory itself. + On Windows, a drive specifier such as "C:" or + "z:" is treated as a root-name. On Cygwin, a path + that begins with two successive directory separators is a + root-name. Otherwise (for POSIX-like systems other than Cygwin), + the implementation-defined root-name is an unspecified string + which does not appear in any pathnames. +

+ 30.10.10.1 [fs.enum.path.format] + The character sequence is always interpreted in the native pathname + format. +

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

C++ 202a

+In this implementation the -std=gnu++2a or +-std=c++2a flag must be used to enable language +and library +features. See dialect +options. The pre-defined symbol +__cplusplus is used to check for the +presence of the required flag. +

+This section describes the C++20 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++2a 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.7. 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 + +  
C++ Synchronized Buffered Ostream + + P0053R7 + +  
Add constexpr modifiers to functions in <algorithm> and <utility> Headers + + P0202R3 + +  
Constexpr for std::complex + + P0415R1 + + 9.1  
Make std::memory_order a scoped enumeration + + P0439R0 + +  
String Prefix and Suffix Checking + + P0457R2 + + 9.1  
Transformation Trait remove_cvref + + P0550R2 + + 9.1  
nodiscard in the Library + + P0600R1 + +  
de-pessimize legacy algorithms with std::move + + P0616R0 + +  
Utility to convert a pointer to a raw pointer + + P0653R2 + + 8.1  
Atomic shared_ptr + + P0718R2 + +  
Deprecate POD + + P0767R1 + +  
Library Support for the Spaceship (Comparison) Operator + + P0768R1 + +  
Treating Unnecessary decay + + P0777R1 + +  
<span> + + P0122R7 + +  
Extending chrono to Calendars and Time Zones + + P0355R7 + +  
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 + +  
Symmetry for spaceship + + P0905R1 + +  
string::reserve Should Not Shrink + + P0966R1 + +  
Atomic Ref + + P0019R8 + +  
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 + + 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 + + P0556R3 + + 9.1  
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 + + P0759R1 + + Note 1  
Add shift to <algorithm> + + P0769R2 + +  
Standard Library Specification in a Concepts and Contracts World + + P0788R3 + +  
Constexpr for swap and swap related functions + + P0879R0 + +  
The identity metafunction + + P0887R1 + +  
explicit(bool) + + P0892R2 + + Note 1  
Standard Library Concepts + + P0898R3 + +  
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 + +  
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 + + P0356R5 + +  
reference_wrapper for incomplete types + + P0357R3 + + 9.1  
char8_t: A type for UTF-8 characters and strings + + P0482R6 + +  
Fixing operator>>(basic_istream&, CharT*) (LWG 2499) + + P0487R1 + +  
Utility functions to implement uses-allocator construction + + P0591R4 + +  
P0595R2 std::is_constant_evaluated() + + P0595R2 + + 9.1  
variant and optional should propagate copy/move triviality + + P0602R4 + + 8.3  
A sane variant converting constructor + + P0608R3 + +  
visit<R>: Explicit Return Type for visit + + P0655R1 + +  
std::function move constructor should be noexcept + + P0771R1 + + 7.2  
The One Ranges Proposal + + P0896R4 + +  
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 + +  
std::assume_aligned + + P1007R3 + +  
Smart pointer creation with default initialization + + P1020R1 + +  
Misc constexpr bits + + P1032R1 + +  
Should Span be Regular? + + P1085R2 + +  
Editorial Guidance for merging P0019r8 and P0528r3 + + P1123R0 + +  
Cleaning up Clause 20 + + P1148R0 + +  
Make stateful allocator propagation more consistent for operator+(basic_string) + + P1165R1 + +  
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 + + 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 + +  
Missing feature test macros + + P1353R0 + + Partial  

+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

This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 @@ -966,7 +1329,7 @@ In this implementation the header names are prefixed by

This page describes the TR1 support in mainline GCC SVN, not in any particular release. -

Table 1.7. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr  +

Table 1.8. C++ TR1 Implementation Status

SectionDescriptionStatusComments
2General Utilities
2.1Reference wrappers  
2.1.1Additions to header <functional> synopsisY 
2.1.2Class template reference_wrapper  
2.1.2.1reference_wrapper construct/copy/destroyY 
2.1.2.2reference_wrapper assignmentY 
2.1.2.3reference_wrapper accessY 
2.1.2.4reference_wrapper invocationY 
2.1.2.5reference_wrapper helper functionsY 
2.2Smart pointers  
2.2.1Additions to header <memory> synopsisY 
2.2.2Class bad_weak_ptrY 
2.2.3Class template shared_ptr 

Uses code from boost::shared_ptr. @@ -987,7 +1350,7 @@ decimal floating-point arithmetic

This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -

Table 1.8. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
+

Table 1.9. C++ TR 24733 Implementation Status

SectionDescriptionStatusComments
0 Introduction @@ -1027,7 +1390,7 @@ non-strict modes (i.e. -std=gnu++NN modes) the hypergeometric functions and confluent hypergeometric functions from TR1 are also provided, defined in namespace __gnu_cxx. -

Table 1.9. C++ Special Functions Implementation Status

SectionDescriptionStatusComments
7Macro namesPartialNo diagnostic for inconsistent definitions of +

Table 1.10. C++ Special Functions Implementation Status

SectionDescriptionStatusComments
7Macro namesPartialNo diagnostic for inconsistent definitions of __STDCPP_WANT_MATH_SPEC_FUNCS__
8Mathematical special functionsY 
8.1Additions to header <cmath> synopsisY 
8.1.1associated Laguerre polynomialsY 
8.1.2associated Legendre functionsY 
8.1.3beta functionY 
8.1.4(complete) elliptic integral of the first kindY 
8.1.5(complete) elliptic integral of the second kindY 
8.1.6(complete) elliptic integral of the third kindY 
8.1.7regular modified cylindrical Bessel functionsY 
8.1.8cylindrical Bessel functions (of the first kind)Y 
8.1.9irregular modified cylindrical Bessel functionsY 
8.1.10cylindrical Neumann functionsY 
8.1.11(incomplete) elliptic integral of the first kindY 
8.1.12(incomplete) elliptic integral of the second kindY 
8.1.13(incomplete) elliptic integral of the third kindY 
8.1.14exponential integralY 
8.1.15Hermite polynomialsY 
8.1.16Laguerre polynomialsY 
8.1.17Legendre polynomialsY 
8.1.18Riemann zeta functionY 
8.1.19spherical Bessel functions (of the first kind)Y 
8.1.20spherical associated Legendre functionsY 
8.1.21spherical Neumann functionsY 
8.2Additions to header <math.h>Y 
8.3The header <ctgmath>PartialConflicts with C++ 2011 requirements.
8.4The header <tgmath.h>NConflicts with C++ 2011 requirements.

Implementation Specific Behavior

For behaviour which is specified by the 2011 standard, see C++ 2011 Implementation Specific Behavior. This section documents behaviour which diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index 7159b592c9f..28210cb0862 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -43,6 +43,10 @@ + + + + diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index f3793083375..0af8a02b00f 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -980,6 +980,14 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. documents behaviour which is new in the 2017 standard. + + 20.5.1.2 [headers] + Whether names from Annex K are declared by C++ headers depends on + whether the underlying C library supports Annex K and declares the + names. For the GNU C library, there is no Annex K support and so + none of its names are declared by C++ headers. + + 23.6.5 [optional.bad_optional_access] what() returns "bad optional access". @@ -987,8 +995,7 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. 23.7.3 [variant.variant] - Whether variant supports over-aligned types - should be documented here. + variant supports over-aligned types. @@ -998,15 +1005,21 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. 23.12.5.2 [memory.resource.pool.options] - The limits for maximum number of blocks and largest allocation size - supported by pool_options should be documented - here. + Let S equal numeric_limits<size_t>::digits. + The limit for maximum number of blocks in a chunk is given by + 2N-1, + where N is min(19, 3 + S/2). + The largest allocation size that will be allocated from a pool is + 222 + when S > 20, + otherwise 3072 when S > 16, + otherwise 768. 23.12.6.1 [memory.resource.monotonic.buffer.ctor] - The default next_buffer_size and growth factor should - be documented here. + The default next_buffer_size is 128 * sizeof(void*). + The default growth factor is 1.5. @@ -1067,13 +1080,32 @@ and test for __STDCPP_MATH_SPEC_FUNCS__ >= 201003L. 30.10.5 [fs.filesystem.syn] - The clock used for file times is - std::chrono::system_clock. + The clock used for file times is an unspecified type + with a signed 64-bit representation, capable of representing + timestamps with nanosecond resolution. The clock's epoch is + unspecified, but is not the same as the system clock's epoch. 30.10.7.1 [fs.path.generic] dot-dot in the root-directory refers to the root-directory itself. + On Windows, a drive specifier such as "C:" or + "z:" is treated as a root-name. On Cygwin, a path + that begins with two successive directory separators is a + root-name. Otherwise (for POSIX-like systems other than Cygwin), + the implementation-defined root-name is an unspecified string + which does not appear in any pathnames. + + + + 30.10.10.1 [fs.enum.path.format] + The character sequence is always interpreted in the native pathname + format. + + + + 30.10.15.4 [fs.op.file_size] + If !is_regular_file(p), an error is reported. diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml new file mode 100644 index 00000000000..67353850ce5 --- /dev/null +++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml @@ -0,0 +1,980 @@ +

+ + +C++ 202a + + ISO C++ + 2020 + + + + +In this implementation the -std=gnu++2a or +-std=c++2a flag must be used to enable language +and library +features. See dialect +options. The pre-defined symbol +__cplusplus is used to check for the +presence of the required flag. + + + +This section describes the C++20 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++2a 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++ 2020 Implementation Status + + + + + + + + + Library Feature + Proposal + Status + SD-6 Feature Test + + + + + + + Endian just Endian + + + P0463R1 + + + 8.1 + + + + + + Extending make_shared to Support Arrays + + + P0674R1 + + + + + + + + + Floating Point Atomic + + + P0020R6 + + + + + + + + + C++ Synchronized Buffered Ostream + + + P0053R7 + + + + + + + + + Add constexpr modifiers to functions in <algorithm> and <utility> Headers + + + P0202R3 + + + + + + + + Constexpr for std::complex + + + P0415R1 + + + 9.1 + + + + + + Make std::memory_order a scoped enumeration + + + P0439R0 + + + + + + + + String Prefix and Suffix Checking + + + P0457R2 + + + 9.1 + + + + + Transformation Trait remove_cvref + + + P0550R2 + + + 9.1 + + + + + + nodiscard in the Library + + + P0600R1 + + + + + + + + + de-pessimize legacy algorithms with std::move + + + P0616R0 + + + + + + + + Utility to convert a pointer to a raw pointer + + + P0653R2 + + + 8.1 + + + + + + Atomic shared_ptr + + + P0718R2 + + + + + + + + + Deprecate POD + + + P0767R1 + + + + + + + + + Library Support for the Spaceship (Comparison) Operator + + + P0768R1 + + + + + + + + + Treating Unnecessary decay + + + P0777R1 + + + + + + + + + <span> + + + P0122R7 + + + + + + + + + Extending chrono to Calendars and Time Zones + + + P0355R7 + + + + + + + + + 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 + + + + + + + + + Symmetry for spaceship + + + P0905R1 + + + + + + + + + string::reserve Should Not Shrink + + + P0966R1 + + + + + + + + + Atomic Ref + + + P0019R8 + + + + + + + + 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 + + + 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 + + + P0556R3 + + + 9.1 + + + + + + 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 + + + P0759R1 + + + Note 1 + + + + + + Add shift to <algorithm> + + + P0769R2 + + + + + + + + + Standard Library Specification in a Concepts and Contracts World + + + P0788R3 + + + + + + + + + Constexpr for swap and swap related functions + + + P0879R0 + + + + + + + + + The identity metafunction + + + P0887R1 + + + + + + + + explicit(bool) + + + P0892R2 + + + Note 1 + + + + + + Standard Library Concepts + + + P0898R3 + + + + + + + + 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 + + + + + + + + + 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 + + + P0356R5 + + + + + + + + reference_wrapper for incomplete types + + + P0357R3 + + + 9.1 + + + + + + char8_t: A type for UTF-8 characters and strings + + + P0482R6 + + + + + + + + + Fixing operator>>(basic_istream&, CharT*) (LWG 2499) + + + P0487R1 + + + + + + + + + Utility functions to implement uses-allocator construction + + + P0591R4 + + + + + + + + P0595R2 std::is_constant_evaluated() + + + P0595R2 + + + 9.1 + + + + + variant and optional should propagate copy/move triviality + + + P0602R4 + + + 8.3 + + + + + + A sane variant converting constructor + + + P0608R3 + + + + + + + + + visit<R>: Explicit Return Type for visit + + + P0655R1 + + + + + + + + std::function move constructor should be noexcept + + + P0771R1 + + + 7.2 + + + + + + The One Ranges Proposal + + + P0896R4 + + + + + + + + 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 + + + + + + + + + std::assume_aligned + + + P1007R3 + + + + + + + + + Smart pointer creation with default initialization + + + P1020R1 + + + + + + + + + Misc constexpr bits + + + P1032R1 + + + + + + + + + Should Span be Regular? + + + P1085R2 + + + + + + + + + Editorial Guidance for merging P0019r8 and P0528r3 + + + P1123R0 + + + + + + + + + Cleaning up Clause 20 + + + P1148R0 + + + + + + + + + Make stateful allocator propagation more consistent for operator+(basic_string) + + + P1165R1 + + + + + + + + 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 + + + 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 + + + + + + + + + Missing feature test macros + + + P1353R0 + + + Partial + + + + +
+ + +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. + + + +
+ +