From db62593447dd61532f7b7411d603d844498fc0a9 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 10 Oct 2016 19:57:15 +0100 Subject: [PATCH] Update docs on libstdc++ source-code layout * doc/xml/manual/appendix_contributing.xml (contrib.organization): Describe other subdirectories and add markup. Remove outdated reference to check-script target. * doc/html/*: Regenerate. From-SVN: r240946 --- libstdc++-v3/ChangeLog | 5 + libstdc++-v3/doc/html/index.html | 2 +- libstdc++-v3/doc/html/manual/bugs.html | 4 + libstdc++-v3/doc/html/manual/index.html | 2 +- libstdc++-v3/doc/html/manual/intro.html | 2 +- .../doc/html/manual/source_organization.html | 73 ++++---- libstdc++-v3/doc/html/manual/status.html | 164 +++++++++++++++--- .../doc/xml/manual/appendix_contributing.xml | 73 ++++---- 8 files changed, 238 insertions(+), 87 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5960215b707..7987c5e5d59 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2016-10-10 Jonathan Wakely + * doc/xml/manual/appendix_contributing.xml (contrib.organization): + Describe other subdirectories and add markup. Remove outdated + reference to check-script target. + * doc/html/*: Regenerate. + * doc/xml/manual/status_cxx2011.xml: Correct C++11 status. * libsupc++/eh_ptr.cc (exception_ptr): Replace _GLIBCXX_USE_NOEXCEPT diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index a847921d8ab..e53375a013e 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++ 201z
C++ TR1
Implementation Specific Behavior
C++ TR 24733
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++ 201z
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
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/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html index 8469c6efa4a..31600a49bd6 100644 --- a/libstdc++-v3/doc/html/manual/bugs.html +++ b/libstdc++-v3/doc/html/manual/bugs.html @@ -423,6 +423,10 @@

The tuple_size and tuple_element partial specializations are defined in <utility> which is included by <array>. +

2296: + std::addressof should be constexpr +

Use __builtin_addressof and add + constexpr to addressof for C++17 and later.

2313: tuple_size should always derive from integral_constant<size_t, N>

Update definitions of the partial specializations for const and volatile types. diff --git a/libstdc++-v3/doc/html/manual/index.html b/libstdc++-v3/doc/html/manual/index.html index 8ce0b4b54b8..c7780bf159a 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++ 201z
C++ TR1
Implementation Specific Behavior
C++ TR 24733
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++ 201z
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
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/intro.html b/libstdc++-v3/doc/html/manual/intro.html index 55ace72f0f3..e79897bd8d1 100644 --- a/libstdc++-v3/doc/html/manual/intro.html +++ b/libstdc++-v3/doc/html/manual/intro.html @@ -5,4 +5,4 @@ Prev The GNU C++ Library Manual Next
\ No newline at end of file + \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/source_organization.html b/libstdc++-v3/doc/html/manual/source_organization.html index 1ff2397cf5a..ef1e4f4d77a 100644 --- a/libstdc++-v3/doc/html/manual/source_organization.html +++ b/libstdc++-v3/doc/html/manual/source_organization.html @@ -3,89 +3,102 @@ Contributing  Next

Directory Layout and Source Conventions

- The unpacked source directory of libstdc++ contains the files - needed to create the GNU C++ Library. + The libstdc++-v3 directory in the + GCC sources contains the files needed to create the GNU C++ Library.


It has subdirectories:

-  doc
+  doc
    Files in HTML and text format that document usage, quirks of the
    implementation, and contributor checklists.

-  include
+  include
    All header files for the C++ library are within this directory,
    modulo specific runtime-related files that are in the libsupc++
    directory.

-    include/std
+    include/std
      Files meant to be found by #include <name> directives in
      standard-conforming user programs.

-    include/c
+    include/c
      Headers intended to directly include standard C headers.
-      [NB: this can be enabled via --enable-cheaders=c]
+      [NB: this can be enabled via --enable-cheaders=c]

-    include/c_global
+    include/c_global
      Headers intended to include standard C headers in
      the global namespace, and put select names into the std::
      namespace.  [NB: this is the default, and is the same as
-      --enable-cheaders=c_global]
+      --enable-cheaders=c_global]

-    include/c_std
+    include/c_std
      Headers intended to include standard C headers
      already in namespace std, and put select names into the std::
-      namespace.  [NB: this is the same as --enable-cheaders=c_std]
+      namespace.  [NB: this is the same as
+      --enable-cheaders=c_std]

-    include/bits
+    include/bits
      Files included by standard headers and by other files in
      the bits directory.

-    include/backward
+    include/backward
      Headers provided for backward compatibility, such as <iostream.h>.
      They are not used in this library.

-    include/ext
+    include/ext
      Headers that define extensions to the standard library.  No
      standard header refers to any of them.

-  scripts
+  scripts
    Scripts that are used during the configure, build, make, or test
    process.

-  src
+  src
    Files that are used in constructing the library, but are not
    installed.

-  testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*]
+    src/c++98
+    Source files compiled using -std=gnu++98.
+
+    src/c++11
+    Source files compiled using -std=gnu++11.
+
+    src/filesystem
+    Source files for the Filesystem TS.
+
+    src/shared
+    Source code included by other files under both
+    src/c++98 and
+    src/c++11
+
+  testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*]
    Test programs are here, and may be used to begin to exercise the
    library.  Support for "make check" and "make check-install" is
    complete, and runs through all the subdirectories here when this
    command is issued from the build directory.  Please note that
-    "make check" requires DejaGNU 1.4 or later to be installed.  Please
-    note that "make check-script" calls the script mkcheck, which
-    requires bash, and which may need the paths to bash adjusted to
-    work properly, as /bin/bash is assumed.
+    "make check" requires DejaGNU 1.4 or later to be installed.

Other subdirectories contain variant versions of certain files
that are meant to be copied or linked by the configure script.
Currently these are:

-  config/abi
-  config/cpu
-  config/io
-  config/locale
-  config/os
+  config/abi
+  config/cpu
+  config/io
+  config/locale
+  config/os

In addition, a subdirectory holds the convenience library libsupc++.

-  libsupc++
+  libsupc++
    Contains the runtime library for C++, including exception
    handling and memory allocation and deallocation, RTTI, terminate
    handlers, etc.

-Note that glibc also has a bits/ subdirectory.  We will either
-need to be careful not to collide with names in its bits/
-directory; or rename bits to (e.g.) cppbits/.
+Note that glibc also has a bits/
+subdirectory.  We will either need to be careful not to collide with names
+in its bits/
+directory; or rename bits to (e.g.) cppbits.

In files throughout the system, lines marked with an "XXX" indicate
a bug or incompletely-implemented feature.  Lines marked "XXX MT"
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index a0a68b10033..1808122f507 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 @@ -85,18 +85,13 @@ particular release. [18.6.1]/8 (exception), [18.6.2.1]/5 (bad_exception): The what() member function of class std::exception, and these other - classes publicly derived from it, simply returns the name of the - class. But they are the mangled names; you will need to call - c++filt and pass the names as command-line parameters to - demangle them, or call a - runtime demangler function. - (The classes in <stdexcept> have constructors which - require an argument to use later for what() calls, so the - problem of what()'s value does not arise in most - user-defined exceptions.) + classes publicly derived from it, returns the name of the + class, e.g. "std::bad_alloc".

[18.5.1]/7 The return value of - std::type_info::name() is the mangled type name (see the - previous entry for more). + std::type_info::name() is the mangled type name. + You will need to call c++filt and pass the names as + command-line parameters to demangle them, or call a + runtime demangler function.

[20.1.5]/5 "Implementors are encouraged to supply libraries that can accept allocators that encapsulate more general memory models and that support non-equal instances. In such @@ -109,6 +104,7 @@ particular release. behaviour to swap two containers if their allocators are not equal.

[21.1.3.1]/3,4, [21.1.3.2]/2, + [21.3]/6 basic_string::iterator, basic_string::const_iterator, [23.*]'s foo::iterator, [27.*]'s foo::*_type, others... @@ -173,7 +169,7 @@ particular release. 20.1General  20.2Utility components  20.2.1OperatorsY 20.2.2SwapY 20.2.3forward and move helpersY 20.2.4Function template declvalY 20.3Pairs  20.3.1In general  20.3.2Class template pairY 20.3.3Specialized algorithmsY 20.3.4Tuple-like access to pairY 20.3.5Piecewise constructionY 20.4Tuples  20.4.1In general  20.4.2Class template tuple  20.4.2.1ConstructionY 20.4.2.2AssignmentY 20.4.2.3SwapY 20.4.2.4Tuple creation functionsY 20.4.2.5Tuple helper classesY 20.4.2.6Element accessY 20.4.2.7Relational operatorsY 20.4.2.8Tuple traitsY 20.4.2.9Tuple specialized algorithmsY 20.5Class template bitsetY 20.5.1bitset constructorsY 20.5.2bitset membersY 20.5.3bitset hash supportY 20.5.4bitset operatorsY 20.6Memory  20.6.1In general  20.6.2Header <memory> synopsis  20.6.3Pointer traitsY 20.6.4Pointer safetyY 20.6.5AlignY 20.6.6Allocator argument tagY 20.6.7uses_allocatorY 20.6.8Allocator traitsY 20.6.9The default allocatorY 20.6.10Raw storage iteratorY 20.6.11Temporary buffersY 20.6.12Specialized algorithms  20.6.12.1addressofY 20.6.12.2uninitialized_copyY 20.6.12.3uninitialized_fillY 20.6.12.4uninitialized_fill_nY 20.6.13C libraryY 20.7Smart pointers  20.7.1Class template unique_ptrY 20.7.2Shared-ownership pointersY 20.7.2.1Class bad_weak_ptrY 20.7.2.2Class template shared_ptrY Uses code from boost::shared_ptr. - 20.7.2.3Class template weak_ptrY 20.7.2.4Class template emable_shared_from_thisY 20.7.2.5shared_ptr atomic accessY 20.7.2.6Smart pointer hash supportY 20.8Function objects  20.8.1Definitions  20.8.2Requirements  20.8.3Class template reference_wrapperY 20.8.4Arithmetic operationY 20.8.5ComparisonsY 20.8.6Logical operationsY 20.8.7Bitwise operationsY 20.8.8NegatorsY 20.8.9Function template bindY 20.8.10Function template mem_fnY 20.8.11Polymorphic function wrappers  20.8.11.1Class bad_function_callY 20.8.11.2Class template functionPartialMissing allocator support20.8.12Class template hashY 20.9Metaprogramming and type traits  20.9.1RequirementsY 20.9.2Header <type_traits> synopsis  20.9.3Helper classesY 20.9.4Unary Type TraitsY 20.9.4.1Primary type categoriesY 20.9.4.2Composite type traitsY 20.9.4.3Type propertiesY 20.9.5Type property queriesY 20.9.6Relationships between typesY 20.9.7Transformations between types  20.9.7.1Const-volatile modificationsY 20.9.7.2Reference modificationsY 20.9.7.3Sign modificationsY 20.9.7.4Array modificationsY 20.9.7.5Pointer modificationsY 20.9.7.6Other transformationsY 20.10Compile-time rational arithmetic  20.10.1In general  20.10.2Header <ratio> synopsis  20.10.3Class template ratioY 20.10.4Arithmetic on ratiosY 20.10.5Comparison of ratiosY 20.10.6SI types for ratioY 20.11Time utilities  20.11.3Clock requirementsY 20.11.4Time-related traits  20.11.4.1treat_as_floating_pointY 20.11.4.2duration_valuesY 20.11.4.3Specializations of common_typeY 20.11.5Class template durationY 20.11.6Class template time_pointY 20.11.7Clocks  20.11.7.1Class system_clockY 20.11.7.2Class steady_clockY 20.11.7.3Class high_resolution_clockY 20.11.8Date and time functionsY 20.12Scoped allocator adaptorY 20.12.1Header <scoped_allocator> synopsis  20.12.2Scoped allocator adaptor member typesY 20.12.3Scoped allocator adaptor constructorsY 20.12.4Scoped allocator adaptor membersPartialOUTERMOST is not recursive.20.12.5Scoped allocator operatorsY 20.13Class type_indexY  + 20.7.2.3Class template weak_ptrY 20.7.2.4Class template emable_shared_from_thisY 20.7.2.5shared_ptr atomic accessY 20.7.2.6Smart pointer hash supportY 20.8Function objects  20.8.1Definitions  20.8.2Requirements  20.8.3Class template reference_wrapperY 20.8.4Arithmetic operationY 20.8.5ComparisonsY 20.8.6Logical operationsY 20.8.7Bitwise operationsY 20.8.8NegatorsY 20.8.9Function template bindY 20.8.10Function template mem_fnY 20.8.11Polymorphic function wrappers  20.8.11.1Class bad_function_callY 20.8.11.2Class template functionPartialMissing allocator support20.8.12Class template hashY 20.9Metaprogramming and type traits  20.9.1RequirementsY 20.9.2Header <type_traits> synopsis  20.9.3Helper classesY 20.9.4Unary Type TraitsY 20.9.4.1Primary type categoriesY 20.9.4.2Composite type traitsY 20.9.4.3Type propertiesY 20.9.5Type property queriesY 20.9.6Relationships between typesY 20.9.7Transformations between types  20.9.7.1Const-volatile modificationsY 20.9.7.2Reference modificationsY 20.9.7.3Sign modificationsY 20.9.7.4Array modificationsY 20.9.7.5Pointer modificationsY 20.9.7.6Other transformationsY 20.10Compile-time rational arithmetic  20.10.1In general  20.10.2Header <ratio> synopsis  20.10.3Class template ratioY 20.10.4Arithmetic on ratiosY 20.10.5Comparison of ratiosY 20.10.6SI types for ratioY 20.11Time utilities  20.11.3Clock requirementsY 20.11.4Time-related traits  20.11.4.1treat_as_floating_pointY 20.11.4.2duration_valuesY 20.11.4.3Specializations of common_typeY 20.11.5Class template durationY 20.11.6Class template time_pointY 20.11.7Clocks  20.11.7.1Class system_clockY 20.11.7.2Class steady_clockY 20.11.7.3Class high_resolution_clockY 20.11.8Date and time functionsY 20.12Scoped allocator adaptorY 20.12.1Header <scoped_allocator> synopsis  20.12.2Scoped allocator adaptor member typesY 20.12.3Scoped allocator adaptor constructorsY 20.12.4Scoped allocator adaptor membersY 20.12.5Scoped allocator operatorsY 20.13Class type_indexY  21 Strings @@ -187,8 +183,7 @@ particular release. 23 Containers - 23.1General  23.2Container requirements  23.2.1General container requirementsPartiallist does not meet the requirements - relating to allocator use and propagation.23.2.2Container data racesY 23.2.3Sequence containersY 23.2.4Associative containersY 23.2.5Unordered associative containersY 23.3Sequence containers  23.3.2Class template arrayY 23.3.3Class template dequeY 23.3.4Class template forward_listY 23.3.5Class template listPartialIncomplete allocator support.23.3.6Class template vectorY 23.3.7Class vector<bool>Y 23.4Associative containers  23.4.4Class template mapY 23.4.5Class template multimapY 23.4.6Class template setY 23.4.7Class template multisetY 23.5Unordered associative containers  23.5.4Class template unordered_mapY 23.5.5Class template unordered_multimapY 23.5.6Class template unordered_setY 23.5.7Class template unordered_multisetY 23.6Container adaptors  23.6.1Class template queueY 23.6.2Class template priority_queueY 23.6.3Class template stackY  + 23.1General  23.2Container requirements  23.2.1General container requirementsY 23.2.2Container data racesY 23.2.3Sequence containersY 23.2.4Associative containersY 23.2.5Unordered associative containersY 23.3Sequence containers  23.3.2Class template arrayY 23.3.3Class template dequeY 23.3.4Class template forward_listY 23.3.5Class template listY 23.3.6Class template vectorY 23.3.7Class vector<bool>Y 23.4Associative containers  23.4.4Class template mapY 23.4.5Class template multimapY 23.4.6Class template setY 23.4.7Class template multisetY 23.5Unordered associative containers  23.5.4Class template unordered_mapY 23.5.5Class template unordered_multimapY 23.5.6Class template unordered_setY 23.5.7Class template unordered_multisetY 23.6Container adaptors  23.6.1Class template queueY 23.6.2Class template priority_queueY 23.6.3Class template stackY  24 Iterators @@ -216,8 +211,7 @@ particular release. 30 Thread support - 30.1GeneralY 30.2RequirementsY 30.3Threads  30.3.1Class threadPartialthread::id comparisons not well-defined30.3.2Namespace this_threadY 30.4Mutual exclusion  30.4.1Mutex requirements  30.4.1.1In general  30.4.1.2Mutex types  30.4.1.2.1Class mutexY 30.4.1.2.2Class recursive_mutexY 30.4.1.3Timed mutex types On POSIX sytems these types are only defined if the OS - supports the POSIX Timeouts option. 30.4.1.3.1Class timed_mutexY 30.4.1.3.2Class recursive_timed_mutexY 30.4.2Locks  30.4.2.1Class template lock_guardY 30.4.2.2Class template unique_lockY 30.4.3Generic locking algorithmsY 30.4.4Call once  30.4.4.1Struct once_flagY 30.4.4.2Function call_onceY 30.5Condition variablesY 30.5.1Class condition_variableY 30.5.2Class condition_variable_anyY 30.6Futures  30.6.1Overview  30.6.2Error handlingY 30.6.3Class future_errorY 30.6.4Shared stateY 30.6.5Class template promiseY 30.6.6Class template futureY 30.6.7Class template shared_futureY 30.6.8Function template asyncY 30.6.9Class template packaged_taskY  + 30.1GeneralY 30.2RequirementsY 30.3Threads  30.3.1Class threadPartialthread::id comparisons not well-defined30.3.2Namespace this_threadY 30.4Mutual exclusion  30.4.1Mutex requirements  30.4.1.1In general  30.4.1.2Mutex types  30.4.1.2.1Class mutexY 30.4.1.2.2Class recursive_mutexY 30.4.1.3Timed mutex types  30.4.1.3.1Class timed_mutexY 30.4.1.3.2Class recursive_timed_mutexY 30.4.2Locks  30.4.2.1Class template lock_guardY 30.4.2.2Class template unique_lockY 30.4.3Generic locking algorithmsY 30.4.4Call once  30.4.4.1Struct once_flagY 30.4.4.2Function call_onceY 30.5Condition variablesY 30.5.1Class condition_variableY 30.5.2Class condition_variable_anyY 30.6Futures  30.6.1Overview  30.6.2Error handlingY 30.6.3Class future_errorY 30.6.4Shared stateY 30.6.5Class template promiseY 30.6.6Class template futureY 30.6.7Class template shared_futureY 30.6.8Function template asyncY 30.6.9Class template packaged_taskY  Appendix D Compatibility features @@ -225,14 +219,44 @@ particular release. see C++ 1998/2003 Implementation Specific Behavior. This section only documents behaviour which is new in the 2011 standard. +

+ 17.6.5.12 [res.on.exception.handling] + There are no implementation-defined exception classes, only standard + exception classes (or classes derived from them) will be thrown. +

+ 17.6.5.14 [value.error.codes] + The error_category for errors originating outside + the OS, and the possible error code values for each error category, + should be documented here. +

+ 18.6.2.2 [new.badlength] + what() returns + "std::bad_array_new_length". +

+ 20.6.9.1 [allocator.member]/5 + Over-aligned types are not supported by + std::allocator.

20.7.2.2.1 [util.smartptr.shared.const] - Only bad_alloc (or types derived from it) will - be thrown. + When a shared_ptr constructor fails + bad_alloc (or types derived from it) will + be thrown, or when an allocator is passed to the constructor then any + exceptions thrown by the allocator. +

+ 20.7.2.0 [util.smartptr.weakptr] + what() returns "bad_weak_ptr".

20.8.9.1.3 [func.bind.place]/1 There are 29 placeholders defined and the placeholder types are CopyAssignable. +

+ 20.11.7.1 [time.clock.system]/3, /4 + Time point values are truncated to time_t values. + There is no loss of precision for conversions in the other direction. +

+ 20.15.7 [meta.trans]/2 + aligned_storage does not support extended + alignment.

21.2.3.2 [char.traits.specializations.char16_t], 21.2.3.3 [char.traits.specializations.char32_t] @@ -240,6 +264,9 @@ particular release. u32streampos are both synonyms for fpos<mbstate_t>. The function eof returns int_type(-1). +

+ 22.3.1 [locale] + There is one global locale for the whole program, not per-thread.

22.4.5.1.2 [locale.time.get.virtuals], 22.4.5.3.2 [locale.time.put.virtuals] @@ -247,6 +274,11 @@ particular release.

22.4.7.1.2 [locale.messages.virtuals] The mapping should be documented here. +

+ 23.3.2.1 [array.overview] + array<T, N>::iterator is T* and + array<T, N>::const_iterator is + const T*.

23.5.4.2 [unord.map.cnstr], 23.5.5.2 [unord.multimap.cnstr], @@ -283,6 +315,16 @@ particular release. 26.8 [c.math] Whether the rand function introduces data races depends on the C library as the function is not provided by libstdc++. +

+ 27.8.2.1 [stringbuf.cons] + Whether the sequence pointers are copied by the + basic_stringbuf move constructor should be + documented here. +

+ 27.9.1.2 [filebuf.cons] + Whether the sequence pointers are copied by the + basic_filebuf move constructor should be + documented here.

28.5.1 [re.synopt], 28.5.2 [re.matchflag] , @@ -293,6 +335,10 @@ particular release. 28.7 [re.traits] The blank character class corresponds to the ctype_base::blank mask. +

+ 29.4 [atomics.lockfree] + The values of the ATOMIC_xxx_LOCK_FREE macros depend on + the target and cannot be listed here.

30.2.3 [thread.req.native]/1 native_handle_type and @@ -554,11 +600,11 @@ Feature-testing recommendations for C++. P0074R0 - 7 __cpp_lib_transparent_operators >= 201510 std::addressof should be constexpr + 7 __cpp_lib_transparent_operators >= 201510 std::addressof should be constexpr LWG2296 - No __cpp_lib_addressof_constexpr >= 201603 Safe conversions in unique_ptr<T[]> + 7 __cpp_lib_addressof_constexpr >= 201603 Safe conversions in unique_ptr<T[]> N4089 @@ -622,11 +668,11 @@ Feature-testing recommendations for C++. P0077R2 - 7 __cpp_lib_is_callable >= 201603 has_unique_object_representations + 7 __cpp_lib_is_callable >= 201603 has_unique_object_representations P0258R2 - No __cpp_lib_has_unique_object_representations >= 201606 Ordered by default + 7 __cpp_lib_has_unique_object_representations >= 201606 Ordered by default P0181R1 @@ -774,7 +820,77 @@ Feature-testing recommendations for C++. P0013R1 - Logical Operator Type Traits (revision 1)YLibrary Fundamentals 2 TS


C++ TR1

+ Logical Operator Type Traits (revision 1)YLibrary Fundamentals 2 TS


Implementation Specific Behavior

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

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

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

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

+ 20.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. +

+ 20.12.6.1 [memory.resource.monotonic.buffer.ctor] + The default next_buffer_size and growth factor should + be documented here. +

+ 20.15.4.3 [meta.unary.prop] + The predicate condition for + has_unique_object_representations is true for all scalar + types except floating point types. +

+ 20.19.3 [execpol.type], + 25.2.3 [algorithms.parallel.exec] + There are no implementation-defined execution policies. +

+ 22.4.2 [string.view.template] + basic_string_view<C, T>::iterator is + C* and + basic_string_view<C, T>::const_iterator is + const C*. +

+ 25.2.3 [algorithms.parallel.exec] + Threads of execution created by std::thread + provide concurrent forward progress guarantees, so threads of execution + implicitly created by the library will provide parallel forward + progress guarantees. +

+ 26.4.1 [cfenv.syn] + The effects of the <cfenv> functions + depends on whether the FENV_ACCESS pragma is supported, + and on the C library that provides the header. +

+ 26.6.9 [c.math.rand] + Whether the rand function may introduce data + races depends on the target C library that provides the function. +

+ 26.9.5 [sf.cmath] + The effect of calling the mathematical special functions with large + inputs should be documented here. +

+ 27.10.2.1 [fs.conform.9945] + The behavior of the filesystem library implementation will depend on + the target operating system. Some features will not be not supported + on some targets. +

+ 27.10.6 [fs.filesystem.syn] + The clock used for file times is + std::chrono::system_clock. +

+ 27.10.8 [path.generic] + dot-dot in the root-directory refers to the root-directory itself. +

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/appendix_contributing.xml b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml index d7df13c28ab..ee35dd9609b 100644 --- a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml +++ b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml @@ -199,91 +199,104 @@ - The unpacked source directory of libstdc++ contains the files - needed to create the GNU C++ Library. + The libstdc++-v3 directory in the + GCC sources contains the files needed to create the GNU C++ Library. It has subdirectories: - doc + doc Files in HTML and text format that document usage, quirks of the implementation, and contributor checklists. - include + include All header files for the C++ library are within this directory, modulo specific runtime-related files that are in the libsupc++ directory. - include/std + include/std Files meant to be found by #include <name> directives in standard-conforming user programs. - include/c + include/c Headers intended to directly include standard C headers. - [NB: this can be enabled via --enable-cheaders=c] + [NB: this can be enabled via ] - include/c_global + include/c_global Headers intended to include standard C headers in the global namespace, and put select names into the std:: namespace. [NB: this is the default, and is the same as - --enable-cheaders=c_global] + ] - include/c_std + include/c_std Headers intended to include standard C headers already in namespace std, and put select names into the std:: - namespace. [NB: this is the same as --enable-cheaders=c_std] + namespace. [NB: this is the same as + ] - include/bits + include/bits Files included by standard headers and by other files in the bits directory. - include/backward + include/backward Headers provided for backward compatibility, such as <iostream.h>. They are not used in this library. - include/ext + include/ext Headers that define extensions to the standard library. No standard header refers to any of them. - scripts + scripts Scripts that are used during the configure, build, make, or test process. - src + src Files that are used in constructing the library, but are not installed. - testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*] + src/c++98 + Source files compiled using . + + src/c++11 + Source files compiled using . + + src/filesystem + Source files for the Filesystem TS. + + src/shared + Source code included by other files under both + src/c++98 and + src/c++11 + + testsuites/[backward, demangle, ext, performance, thread, 17_* to 30_*] Test programs are here, and may be used to begin to exercise the library. Support for "make check" and "make check-install" is complete, and runs through all the subdirectories here when this command is issued from the build directory. Please note that - "make check" requires DejaGNU 1.4 or later to be installed. Please - note that "make check-script" calls the script mkcheck, which - requires bash, and which may need the paths to bash adjusted to - work properly, as /bin/bash is assumed. + "make check" requires DejaGNU 1.4 or later to be installed. Other subdirectories contain variant versions of certain files that are meant to be copied or linked by the configure script. Currently these are: - config/abi - config/cpu - config/io - config/locale - config/os + config/abi + config/cpu + config/io + config/locale + config/os In addition, a subdirectory holds the convenience library libsupc++. - libsupc++ + libsupc++ Contains the runtime library for C++, including exception handling and memory allocation and deallocation, RTTI, terminate handlers, etc. -Note that glibc also has a bits/ subdirectory. We will either -need to be careful not to collide with names in its bits/ -directory; or rename bits to (e.g.) cppbits/. +Note that glibc also has a bits/ +subdirectory. We will either need to be careful not to collide with names +in its bits/ +directory; or rename bits to (e.g.) cppbits. In files throughout the system, lines marked with an "XXX" indicate a bug or incompletely-implemented feature. Lines marked "XXX MT" -- 2.30.2