From e40be27c49dccdfc65b6ecd431f31280f0ebf826 Mon Sep 17 00:00:00 2001 From: bkoz Date: Tue, 24 Jun 2008 18:34:52 +0000 Subject: [PATCH] 2008-06-24 Benjamin Kosnik * doc/xml/manual/parallel_mode.xml: Clarify use of explicit parallel algorithms. * doc/xml/manual/using.xml: Markup fixes caught by validation check. * doc/xml/manual/test.xml: Remove empty para tags. * doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137085 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 9 + libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/manual/abi.html | 20 +-- libstdc++-v3/doc/html/manual/api.html | 4 +- libstdc++-v3/doc/html/manual/backwards.html | 48 +++--- libstdc++-v3/doc/html/manual/bitmap_allocator.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt01ch01.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html | 188 +++++++++++++-------- libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html | 10 +- libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html | 5 +- libstdc++-v3/doc/html/manual/bk01pt02pr01.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt04ch11.html | 20 +-- libstdc++-v3/doc/html/manual/bk01pt06ch14.html | 14 +- libstdc++-v3/doc/html/manual/bk01pt06ch15.html | 16 +- libstdc++-v3/doc/html/manual/bk01pt09pr02.html | 2 +- libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html | 4 +- libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html | 2 + libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html | 64 +++++-- libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html | 111 +++++++----- libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html | 7 +- libstdc++-v3/doc/html/manual/bk01pt12pr03.html | 2 +- libstdc++-v3/doc/html/manual/codecvt.html | 20 +-- libstdc++-v3/doc/html/manual/debug.html | 4 +- libstdc++-v3/doc/html/manual/extensions.html | 2 +- libstdc++-v3/doc/html/manual/intro.html | 2 +- libstdc++-v3/doc/html/manual/messages.html | 18 +- libstdc++-v3/doc/html/manual/parallel_mode.html | 6 +- libstdc++-v3/doc/html/manual/shared_ptr.html | 22 +-- libstdc++-v3/doc/html/manual/spine.html | 4 +- libstdc++-v3/doc/html/manual/test.html | 3 +- libstdc++-v3/doc/html/manual/using.html | 2 +- libstdc++-v3/doc/html/spine.html | 2 +- libstdc++-v3/doc/xml/manual/parallel_mode.xml | 79 +++++++-- libstdc++-v3/doc/xml/manual/test.xml | 2 - libstdc++-v3/doc/xml/manual/using.xml | 10 +- 36 files changed, 448 insertions(+), 268 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ccb1e1d..0dc10f2 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2008-06-24 Benjamin Kosnik + + * doc/xml/manual/parallel_mode.xml: Clarify use of explicit + parallel algorithms. + * doc/xml/manual/using.xml: Markup fixes caught by validation check. + * doc/xml/manual/test.xml: Remove empty para tags. + + * doc/html/*: Regenerate. + 2008-06-24 Paolo Carlini * include/bits/stl_algo.h (remove_if): Cast __pred result to bool. diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index 0d07dc9..64bc65a 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -5,7 +5,7 @@ FSF -

+


diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index 1be31b3..3305072 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -436,54 +436,54 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. 24660: versioning weak symbols in libstdc++

19664: libstdc++ headers should have pop/push of the visibility around the declarations -

Bibliography

+

Bibliography

ABIcheck, a vague idea of checking ABI compatibility . - .

+ .

C++ ABI Reference . - .

+ .

Intel® Compilers for Linux* -Compatibility with the GNU Compilers . - .

+ .

Intel® Compilers for Linux* -Compatibility with the GNU Compilers . - .

+ .

Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386) . - .

+ .

Sun Solaris 2.9 : C++ Migration Guide (document 816-2459) . - .

+ .

ELF Symbol Versioning . Ulrich Drepper. - .

+ .

C++ ABI for the ARM Architecture . - .

+ .

Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 . Benjamin Kosnik. - .

+ .

Versioning With Namespaces . ISO C++ J16/06-0083 diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index c8c6d0e..7e5fc59 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -72,11 +72,11 @@ _Alloc_traits have been removed. __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -

Table B.1. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection +

Table B.1. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -

Table B.2. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

+

Table B.2. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

Debug mode first appears.

Precompiled header support PCH support. diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index 6475a7e..a124e09 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -14,8 +14,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those “obvious” classes didn't get included. -

Known Issues include many of the limitations of its immediate ancestor.

Portability notes and known implementation limitations are as follows.

No ios_base

At least some older implementations don't have std::ios_base, so you should use std::ios::badbit, std::ios::failbit and std::ios::eofbit and std::ios::goodbit. -

No cout in ostream.h, no cin in istream.h

+

Known Issues include many of the limitations of its immediate ancestor.

Portability notes and known implementation limitations are as follows.

No ios_base

At least some older implementations don't have std::ios_base, so you should use std::ios::badbit, std::ios::failbit and std::ios::eofbit and std::ios::goodbit. +

No cout in ostream.h, no cin in istream.h

In earlier versions of the standard, fstream.h, ostream.h @@ -41,7 +41,7 @@ considered replaced and rewritten. archived. The code is considered replaced and rewritten.

Portability notes and known implementation limitations are as follows. -

Namespace std:: not supported

+

Namespace std:: not supported

Some care is required to support C++ compiler and or library implementation that do not have the standard library in namespace std. @@ -105,7 +105,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ]) fi ]) -

Illegal iterator usage

+

Illegal iterator usage

The following illustrate implementation-allowed illegal iterator use, and then correct use.

  • @@ -118,7 +118,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [

  • if (iterator) won't work any more => use if (iterator != iterator_type()) -

isspace from cctype is a macro +

isspace from cctype is a macro

Glibc 2.0.x and 2.1.x define ctype.h functionality as macros (isspace, isalpha etc.). @@ -151,7 +151,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; (ctype.h) and the definitions in namespace std:: (<cctype>). -

No vector::at, deque::at, string::at

+

No vector::at, deque::at, string::at

One solution is to add an autoconf-test for this:

 AC_MSG_CHECKING(for container::at)
@@ -177,7 +177,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
 

If you are using other (non-GNU) compilers it might be a good idea to check for string::at separately. -

No std::char_traits<char>::eof

+

No std::char_traits<char>::eof

Use some kind of autoconf test, plus this:

 #ifdef HAVE_CHAR_TRAITS
@@ -185,7 +185,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
 #else
 #define CPP_EOF EOF
 #endif
-

No string::clear

+

No string::clear

There are two functions for deleting the contents of a string: clear and erase (the latter returns the string). @@ -203,12 +203,12 @@ erase(size_type __pos = 0, size_type __n = npos) Unfortunately, clear is not implemented in this version, so you should use erase (which is probably faster than operator=(charT*)). -

+

Removal of ostream::form and istream::scan extensions

These are no longer supported. Please use stringstreams instead. -

No basic_stringbuf, basic_stringstream

+

No basic_stringbuf, basic_stringstream

Although the ISO standard i/ostringstream-classes are provided, (sstream), for compatibility with older implementations the pre-ISO @@ -296,14 +296,14 @@ any = temp; Another example of using stringstreams is in this howto.

There is additional information in the libstdc++-v2 info files, in particular “info iostream”. -

Little or no wide character support

+

Little or no wide character support

Classes wstring and char_traits<wchar_t> are not supported. -

No templatized iostreams

+

No templatized iostreams

Classes wfilebuf and wstringstream are not supported. -

Thread safety issues

+

Thread safety issues

Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -361,7 +361,7 @@ libstdc++-v3. of the SGI STL (version 3.3), with extensive changes.

A more formal description of the V3 goals can be found in the official design document. -

Portability notes and known implementation limitations are as follows.

Pre-ISO headers moved to backwards or removed

The pre-ISO C++ headers +

Portability notes and known implementation limitations are as follows.

Pre-ISO headers moved to backwards or removed

The pre-ISO C++ headers (iostream.h, defalloc.h etc.) are available, unlike previous libstdc++ versions, but inclusion generates a warning that you are using deprecated headers. @@ -433,7 +433,7 @@ like vector.h can be replaced with using namespace std; can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct. -

Extension headers hash_map, hash_set moved to ext or backwards

At this time most of the features of the SGI STL extension have been +

Extension headers hash_map, hash_set moved to ext or backwards

At this time most of the features of the SGI STL extension have been replaced by standardized libraries. In particular, the unordered_map and unordered_set containers of TR1 are suitable replacement for the non-standard hash_map and hash_set @@ -505,7 +505,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ]) fi ]) -

No ios::nocreate/ios::noreplace. +

No ios::nocreate/ios::noreplace.

The existence of ios::nocreate being used for input-streams has been confirmed, most probably because the author thought it would be more correct to specify nocreate explicitly. So @@ -516,7 +516,7 @@ open the file for reading, check if it has been opened, and then decide whether you want to create/replace or not. To my knowledge, even older implementations support app, ate and trunc (except for app ?). -

+

No stream::attach(int fd)

Phil Edwards writes: It was considered and rejected for the ISO @@ -539,7 +539,7 @@ No stream::attach(int fd) For another example of this, refer to fdstream example by Nicolai Josuttis. -

+

Support for C++98 dialect.

Check for complete library coverage of the C++1998/2003 standard.

@@ -607,7 +607,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
     AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
   fi
 ])
-

+

Support for C++TR1 dialect.

Check for library coverage of the TR1 standard.

@@ -684,7 +684,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
     AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
   fi
 ])
-

+

Support for C++0x dialect.

Check for baseline language coverage in the compiler for the C++0xstandard.

@@ -896,27 +896,27 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
     AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ])
   fi
 ])
-

+

Container::iterator_type is not necessarily Container::value_type*

This is a change in behavior from the previous version. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. -

Bibliography

[ +

Bibliography

[ kegel41 ] Migrating to GCC 4.1 . Dan Kegel. - .

[ + .

[ kegel41 ] Building the Whole Debian Archive with GCC 4.1: A Summary . Martin Michlmayr. - .

[ + .

[ lbl32 ] Migration guide for GCC-3.2 diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html index 3aa04e1..fdaed21 100644 --- a/libstdc++-v3/doc/html/manual/bitmap_allocator.html +++ b/libstdc++-v3/doc/html/manual/bitmap_allocator.html @@ -103,7 +103,7 @@ else return false.

Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). -

Table 32.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

+

Table 32.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01.html index cf60565..23f4da4 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html +++ b/libstdc++-v3/doc/html/manual/bk01pt01ch01.html @@ -6101,7 +6101,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.1. C++ TR1 Implementation Status

SectionDescriptionDoneBrokenMissingComments
2General Utilities
2.1Reference wrappersdone   
2.1.1Additions to header <functional> synopsisdone   
2.1.2Class template reference_wrapperdone   
2.1.2.1reference_wrapper construct/copy/destroydone   
2.1.2.2reference_wrapper assignmentdone   
2.1.2.3reference_wrapper accessdone   
2.1.2.4reference_wrapper invocationdone   
2.1.2.5reference_wrapper helper functionsdone   
2.2Smart pointersdone   
2.2.1Additions to header <memory> synopsisdone   
2.2.2Class bad_weak_ptrdone   
2.2.3Class template shared_ptrdone  See Footnotes
2.2.3.1shared_ptr constructorsdone   
2.2.3.2shared_ptr destructordone   
2.2.3.3shared_ptr assignmentdone   
2.2.3.4shared_ptr modifiersdone   
2.2.3.5shared_ptr observersdone   
2.2.3.6shared_ptr comparisondone   
2.2.3.7shared_ptr I/Odone   
2.2.3.8shared_ptr specialized algorithmsdone   
2.2.3.9shared_ptr castsdone   
2.2.3.10get_deleterdone   
2.2.4Class template weak_ptrdone   
2.2.4.1weak_ptr constructorsdone   
2.2.4.2weak_ptr destructordone   
2.2.4.3weak_ptr assignmentdone   
2.2.4.4weak_ptr modifiersdone   
2.2.4.5weak_ptr observersdone   
2.2.4.6weak_ptr comparisondone   
2.2.4.7weak_ptr specialized algorithmsdone   
2.2.5Class template enable_shared_from_thisdone   
3Function Objects
3.1Definitionsdone   
3.2Additions to <functional> synopsisdone   
3.3Requirementsdone   
3.4Function return typesdone   
3.5Function template mem_fndone   
3.6Function object bindersdone   
3.6.1Class template is_bind_expressiondone   
3.6.2Class template is_placeholderdone   
3.6.3Function template binddone   
3.6.4Placeholdersdone   
3.7Polymorphic function wrappersdone   
3.7.1Class bad_function_calldone   
3.7.1.1bad_function_call constructordone   
3.7.2Class template functiondone   
3.7.2.1function construct/copy/destroydone   
3.7.2.2function modifiersdone   
3.7.2.3function capacitydone   
3.7.2.4function invocationdone   
3.7.2.5function target accessdone   
3.7.2.6undefined operatorsdone   
3.7.2.7null pointer comparison operatorsdone   
3.7.2.8specialized algorithmsdone   
4Metaprogramming and type traits
4.1Requirementsdone   
4.2Header <type_traits> synopsisdone   
4.3Helper classesdone   
4.4General Requirementsdone   
4.5Unary Type Traitsdone   
4.5.1Primary Type Categoriesdone   
4.5.2Composite type traitsdone   
4.5.3Type propertiesdone   
4.6Relationships between typesdone   
4.7Transformations between typesdone   
4.7.1Const-volatile modificationsdone   
4.7.2Reference modificationsdone   
4.7.3Array modificationsdone   
4.7.4Pointer modificationsdone   
4.8Other transformationsdone   
4.9Implementation requirementsdone   
5Numerical Facilities
5.1Random number generationdone   
5.1.1Requirementsdone   
5.1.2Header <random> synopsisdone   
5.1.3Class template variate_generatordone   
5.1.4Random number engine class templatesdone   
5.1.4.1Class template linear_congruentialdone   
5.1.4.2Class template mersenne_twisterdone   
5.1.4.3Class template subtract_with_carrydone   
5.1.4.4Class template subtract_with_carry_01done   
5.1.4.5Class template discard_blockdone   
5.1.4.6Class template xor_combinedone  operator()() per N2079
5.1.5Engines with predefined parametersdone   
5.1.6Class random_devicedone   
5.1.7Random distribution class templatesdone   
5.1.7.1Class template uniform_intdone   
5.1.7.2Class bernoulli_distributiondone   
5.1.7.3Class template geometric_distributiondone   
5.1.7.4Class template poisson_distributiondone   
5.1.7.5Class template binomial_distributiondone   
5.1.7.6Class template uniform_realdone   
5.1.7.7Class template exponential_distributiondone   
5.1.7.8Class template normal_distributiondone   
5.1.7.9Class template gamma_distributiondone   
5.2Mathematical special functionsdone   
5.2.1Additions to header <cmath> synopsisdone   
5.2.1.1associated Laguerre polynomialsdone   
5.2.1.2associated Legendre functionsdone   
5.2.1.3beta functiondone   
5.2.1.4(complete) elliptic integral of the first kinddone   
5.2.1.5(complete) elliptic integral of the second kinddone   
5.2.1.6(complete) elliptic integral of the third kinddone   
5.2.1.7confluent hypergeometric functionsdone   
5.2.1.8regular modified cylindrical Bessel functionsdone   
5.2.1.9cylindrical Bessel functions (of the first kind)done   
5.2.1.10irregular modified cylindrical Bessel functionsdone   
5.2.1.11cylindrical Neumann functionsdone   
5.2.1.12(incomplete) elliptic integral of the first kinddone   
5.2.1.13(incomplete) elliptic integral of the second kinddone   
5.2.1.14(incomplete) elliptic integral of the third kinddone   
5.2.1.15exponential integraldone   
5.2.1.16Hermite polynomialsdone   
5.2.1.17hypergeometric functionsdone   
5.2.1.18Laguerre polynomialsdone   
5.2.1.19Legendre polynomialsdone   
5.2.1.20Riemann zeta functiondone   
5.2.1.21spherical Bessel functions (of the first kind)done   
5.2.1.22spherical associated Legendre functionsdone   
5.2.1.23spherical Neumann functionsdone   
5.2.2Additions to header <math.h> synopsisdone   
6Containers
6.1Tuple typesdone   
6.1.1Header <tuple> synopsisdone   
6.1.2Additions to header <utility> synopsisdone   
6.1.3Class template tupledone   
6.1.3.1Constructiondone   
6.1.3.2Tuple creation functionsdone   
6.1.3.3Tuple helper classesdone   
6.1.3.4Element accessdone   
6.1.3.5Relational operatorsdone   
6.1.4Pairsdone   
6.2Fixed size arraydone   
6.2.1Header <array> synopsisdone   
6.2.2Class template arraydone   
6.2.2.1array constructors, copy, and assignmentdone   
6.2.2.2array specialized algorithmsdone   
6.2.2.3array sizedone   
6.2.2.4Zero sized arraysdone   
6.2.2.5Tuple interface to class template arraydone   
6.3Unordered associative containersdone   
6.3.1Unordered associative container requirementsdone   
6.3.1.1Exception safety guaranteesdone   
6.3.2Additions to header <functional> synopsisdone   
6.3.3Class template hashdone   
6.3.4Unordered associative container classesdone   
6.3.4.1Header <unordered_set> synopsisdone   
6.3.4.2Header <unordered_map> synopsisdone   
6.3.4.3Class template unordered_setdone   
6.3.4.3.1unordered_set constructorsdone   
6.3.4.3.2unordered_set swapdone   
6.3.4.4Class template unordered_mapdone   
6.3.4.4.1unordered_map constructorsdone   
6.3.4.4.2unordered_map element accessdone   
6.3.4.4.3unordered_map swapdone   
6.3.4.5Class template unordered_multisetdone   
6.3.4.5.1unordered_multiset constructorsdone   
6.3.4.5.2unordered_multiset swapdone   
6.3.4.6Class template unordered_multimapdone   
6.3.4.6.1unordered_multimap constructorsdone   
6.3.4.6.2unordered_multimap swapdone   
7Regular Expressions
7.1Definitions  missing 
7.2Requirements  missing 
7.3Regular expressions summary  missing 
7.4Header <regex> synopsis  missing 
7.5Namespace tr1::regex_constants  missing 
7.5.1Bitmask Type syntax_option_type  missing 
7.5.2Bitmask Type regex_constants::match_flag_type  missing 
7.5.3Implementation defined error_type  missing 
7.6Class regex_error  missing 
7.7Class template regex_traits  missing 
7.8Class template basic_regex  missing 
7.8.1basic_regex constants  missing 
7.8.2basic_regex constructors  missing 
7.8.3basic_regex assign  missing 
7.8.4basic_regex constant operations  missing 
7.8.5basic_regex locale  missing 
7.8.6basic_regex swap  missing 
7.8.7basic_regex non-member functions  missing 
7.8.7.1basic_regex non-member swap  missing 
7.9Class template sub_match  missing 
7.9.1sub_match members  missing 
7.9.2sub_match non-member operators  missing 
7.10Class template match_results  missing 
7.10.1match_results constructors  missing 
7.10.2match_results size  missing 
7.10.3match_results element access  missing 
7.10.4match_results formatting  missing 
7.10.5match_results allocator  missing 
7.10.6match_results swap  missing 
7.11Regular expression algorithms  missing 
7.11.1exceptions  missing 
7.11.2regex_match  missing 
7.11.3regex_search  missing 
7.11.4regex_replace  missing 
7.12Regular expression Iterators  missing 
7.12.1Class template regex_iterator  missing 
7.12.1.1regex_iterator constructors  missing 
7.12.1.2regex_iterator comparisons  missing 
7.12.1.3regex_iterator dereference  missing 
7.12.1.4regex_iterator increment  missing 
7.12.2Class template regex_token_iterator  missing 
7.12.2.1regex_token_iterator constructors  missing 
7.12.2.2regex_token_iterator comparisons  missing 
7.12.2.3regex_token_iterator dereference  missing 
7.12.2.4regex_token_iterator increment  missing 
7.13Modified ECMAScript regular expression grammar  missing 
8C Compatibility
8.1Additions to header <complex>done   
8.1.1Synopsisdone   
8.1.2Function acosdone   
8.1.3Function asindone   
8.1.4Function atandone   
8.1.5Function acoshdone   
8.1.6Function asinhdone   
8.1.7Function atanhdone   
8.1.8Function fabsdone   
8.1.9Additional Overloadsdone   
8.2Header <ccomplex>  missingDR 551
8.3Header <complex.h>  missingDR 551
8.4Additions to header <cctype>done   
8.4.1Synopsisdone   
8.4.2Function isblankdone   
8.5Additions to header <ctype.h>done   
8.6Header <cfenv>done   
8.6.1Synopsisdone   
8.6.2Definitionsdone   
8.7Header <fenv.h>done   
8.8Additions to header <cfloat>done   
8.9Additions to header <float.h>done   
8.10Additions to header <ios>  missing 
8.10.1Synopsis  missing 
8.10.2Function hexfloat  missing 
8.11Header <cinttypes>done   
8.11.1Synopsisdone  DR 557
8.11.2Definitionsdone   
8.12Header <inttypes.h>done   
8.13Additions to header <climits>done   
8.14Additions to header <limits.h>done   
8.15Additions to header <locale>  missing 
8.16Additions to header <cmath>done   
8.16.1Synopsisdone   
8.16.2Definitionsdone   
8.16.3Function template definitionsdone   
8.16.4Additional overloadsdone  DR 568; DR 550
8.17Additions to header <math.h>done   
8.18Additions to header <cstdarg>done   
8.19Additions to header <stdarg.h>done   
8.20The header <cstdbool>done   
8.21The header <stdbool.h>done   
8.22The header <cstdint>done   
8.22.1Synopsisdone   
8.22.2Definitionsdone   
8.23The header <stdint.h>done   
8.24Additions to header <cstdio>done   
8.24.1Synopsisdone   
8.24.2Definitionsdone   
8.24.3Additional format specifiersdone  C library responsibility
8.24.4Additions to header <stdio.h>done   
8.25Additions to header <cstdlib>done   
8.25.1Synopsisdone   
8.25.2Definitionsdone   
8.25.3Function absdone   
8.25.4Function divdone   
8.26Additions to header <stdlib.h>done   
8.27Header <ctgmath>done  DR 551
8.28Header <tgmath.h>done  DR 551
8.29Additions to header <ctime>done  C library responsibility
8.30Additions to header <cwchar>done   
8.30.1Synopsisdone   
8.30.2Definitionsdone   
8.30.3Additional wide format specifiersdone  C library responsibility
8.31Additions to header <wchar.h>done   
8.32Additions to header <cwctype>done   
8.32.1Synopsisdone   
8.32.2Function iswblankdone   
8.33Additions to header <wctype.h>done   

+

Table 1.1. C++ TR1 Implementation Status

SectionDescriptionDoneBrokenMissingComments
2General Utilities
2.1Reference wrappersdone   
2.1.1Additions to header <functional> synopsisdone   
2.1.2Class template reference_wrapperdone   
2.1.2.1reference_wrapper construct/copy/destroydone   
2.1.2.2reference_wrapper assignmentdone   
2.1.2.3reference_wrapper accessdone   
2.1.2.4reference_wrapper invocationdone   
2.1.2.5reference_wrapper helper functionsdone   
2.2Smart pointersdone   
2.2.1Additions to header <memory> synopsisdone   
2.2.2Class bad_weak_ptrdone   
2.2.3Class template shared_ptrdone  See Footnotes
2.2.3.1shared_ptr constructorsdone   
2.2.3.2shared_ptr destructordone   
2.2.3.3shared_ptr assignmentdone   
2.2.3.4shared_ptr modifiersdone   
2.2.3.5shared_ptr observersdone   
2.2.3.6shared_ptr comparisondone   
2.2.3.7shared_ptr I/Odone   
2.2.3.8shared_ptr specialized algorithmsdone   
2.2.3.9shared_ptr castsdone   
2.2.3.10get_deleterdone   
2.2.4Class template weak_ptrdone   
2.2.4.1weak_ptr constructorsdone   
2.2.4.2weak_ptr destructordone   
2.2.4.3weak_ptr assignmentdone   
2.2.4.4weak_ptr modifiersdone   
2.2.4.5weak_ptr observersdone   
2.2.4.6weak_ptr comparisondone   
2.2.4.7weak_ptr specialized algorithmsdone   
2.2.5Class template enable_shared_from_thisdone   
3Function Objects
3.1Definitionsdone   
3.2Additions to <functional> synopsisdone   
3.3Requirementsdone   
3.4Function return typesdone   
3.5Function template mem_fndone   
3.6Function object bindersdone   
3.6.1Class template is_bind_expressiondone   
3.6.2Class template is_placeholderdone   
3.6.3Function template binddone   
3.6.4Placeholdersdone   
3.7Polymorphic function wrappersdone   
3.7.1Class bad_function_calldone   
3.7.1.1bad_function_call constructordone   
3.7.2Class template functiondone   
3.7.2.1function construct/copy/destroydone   
3.7.2.2function modifiersdone   
3.7.2.3function capacitydone   
3.7.2.4function invocationdone   
3.7.2.5function target accessdone   
3.7.2.6undefined operatorsdone   
3.7.2.7null pointer comparison operatorsdone   
3.7.2.8specialized algorithmsdone   
4Metaprogramming and type traits
4.1Requirementsdone   
4.2Header <type_traits> synopsisdone   
4.3Helper classesdone   
4.4General Requirementsdone   
4.5Unary Type Traitsdone   
4.5.1Primary Type Categoriesdone   
4.5.2Composite type traitsdone   
4.5.3Type propertiesdone   
4.6Relationships between typesdone   
4.7Transformations between typesdone   
4.7.1Const-volatile modificationsdone   
4.7.2Reference modificationsdone   
4.7.3Array modificationsdone   
4.7.4Pointer modificationsdone   
4.8Other transformationsdone   
4.9Implementation requirementsdone   
5Numerical Facilities
5.1Random number generationdone   
5.1.1Requirementsdone   
5.1.2Header <random> synopsisdone   
5.1.3Class template variate_generatordone   
5.1.4Random number engine class templatesdone   
5.1.4.1Class template linear_congruentialdone   
5.1.4.2Class template mersenne_twisterdone   
5.1.4.3Class template subtract_with_carrydone   
5.1.4.4Class template subtract_with_carry_01done   
5.1.4.5Class template discard_blockdone   
5.1.4.6Class template xor_combinedone  operator()() per N2079
5.1.5Engines with predefined parametersdone   
5.1.6Class random_devicedone   
5.1.7Random distribution class templatesdone   
5.1.7.1Class template uniform_intdone   
5.1.7.2Class bernoulli_distributiondone   
5.1.7.3Class template geometric_distributiondone   
5.1.7.4Class template poisson_distributiondone   
5.1.7.5Class template binomial_distributiondone   
5.1.7.6Class template uniform_realdone   
5.1.7.7Class template exponential_distributiondone   
5.1.7.8Class template normal_distributiondone   
5.1.7.9Class template gamma_distributiondone   
5.2Mathematical special functionsdone   
5.2.1Additions to header <cmath> synopsisdone   
5.2.1.1associated Laguerre polynomialsdone   
5.2.1.2associated Legendre functionsdone   
5.2.1.3beta functiondone   
5.2.1.4(complete) elliptic integral of the first kinddone   
5.2.1.5(complete) elliptic integral of the second kinddone   
5.2.1.6(complete) elliptic integral of the third kinddone   
5.2.1.7confluent hypergeometric functionsdone   
5.2.1.8regular modified cylindrical Bessel functionsdone   
5.2.1.9cylindrical Bessel functions (of the first kind)done   
5.2.1.10irregular modified cylindrical Bessel functionsdone   
5.2.1.11cylindrical Neumann functionsdone   
5.2.1.12(incomplete) elliptic integral of the first kinddone   
5.2.1.13(incomplete) elliptic integral of the second kinddone   
5.2.1.14(incomplete) elliptic integral of the third kinddone   
5.2.1.15exponential integraldone   
5.2.1.16Hermite polynomialsdone   
5.2.1.17hypergeometric functionsdone   
5.2.1.18Laguerre polynomialsdone   
5.2.1.19Legendre polynomialsdone   
5.2.1.20Riemann zeta functiondone   
5.2.1.21spherical Bessel functions (of the first kind)done   
5.2.1.22spherical associated Legendre functionsdone   
5.2.1.23spherical Neumann functionsdone   
5.2.2Additions to header <math.h> synopsisdone   
6Containers
6.1Tuple typesdone   
6.1.1Header <tuple> synopsisdone   
6.1.2Additions to header <utility> synopsisdone   
6.1.3Class template tupledone   
6.1.3.1Constructiondone   
6.1.3.2Tuple creation functionsdone   
6.1.3.3Tuple helper classesdone   
6.1.3.4Element accessdone   
6.1.3.5Relational operatorsdone   
6.1.4Pairsdone   
6.2Fixed size arraydone   
6.2.1Header <array> synopsisdone   
6.2.2Class template arraydone   
6.2.2.1array constructors, copy, and assignmentdone   
6.2.2.2array specialized algorithmsdone   
6.2.2.3array sizedone   
6.2.2.4Zero sized arraysdone   
6.2.2.5Tuple interface to class template arraydone   
6.3Unordered associative containersdone   
6.3.1Unordered associative container requirementsdone   
6.3.1.1Exception safety guaranteesdone   
6.3.2Additions to header <functional> synopsisdone   
6.3.3Class template hashdone   
6.3.4Unordered associative container classesdone   
6.3.4.1Header <unordered_set> synopsisdone   
6.3.4.2Header <unordered_map> synopsisdone   
6.3.4.3Class template unordered_setdone   
6.3.4.3.1unordered_set constructorsdone   
6.3.4.3.2unordered_set swapdone   
6.3.4.4Class template unordered_mapdone   
6.3.4.4.1unordered_map constructorsdone   
6.3.4.4.2unordered_map element accessdone   
6.3.4.4.3unordered_map swapdone   
6.3.4.5Class template unordered_multisetdone   
6.3.4.5.1unordered_multiset constructorsdone   
6.3.4.5.2unordered_multiset swapdone   
6.3.4.6Class template unordered_multimapdone   
6.3.4.6.1unordered_multimap constructorsdone   
6.3.4.6.2unordered_multimap swapdone   
7Regular Expressions
7.1Definitions  missing 
7.2Requirements  missing 
7.3Regular expressions summary  missing 
7.4Header <regex> synopsis  missing 
7.5Namespace tr1::regex_constants  missing 
7.5.1Bitmask Type syntax_option_type  missing 
7.5.2Bitmask Type regex_constants::match_flag_type  missing 
7.5.3Implementation defined error_type  missing 
7.6Class regex_error  missing 
7.7Class template regex_traits  missing 
7.8Class template basic_regex  missing 
7.8.1basic_regex constants  missing 
7.8.2basic_regex constructors  missing 
7.8.3basic_regex assign  missing 
7.8.4basic_regex constant operations  missing 
7.8.5basic_regex locale  missing 
7.8.6basic_regex swap  missing 
7.8.7basic_regex non-member functions  missing 
7.8.7.1basic_regex non-member swap  missing 
7.9Class template sub_match  missing 
7.9.1sub_match members  missing 
7.9.2sub_match non-member operators  missing 
7.10Class template match_results  missing 
7.10.1match_results constructors  missing 
7.10.2match_results size  missing 
7.10.3match_results element access  missing 
7.10.4match_results formatting  missing 
7.10.5match_results allocator  missing 
7.10.6match_results swap  missing 
7.11Regular expression algorithms  missing 
7.11.1exceptions  missing 
7.11.2regex_match  missing 
7.11.3regex_search  missing 
7.11.4regex_replace  missing 
7.12Regular expression Iterators  missing 
7.12.1Class template regex_iterator  missing 
7.12.1.1regex_iterator constructors  missing 
7.12.1.2regex_iterator comparisons  missing 
7.12.1.3regex_iterator dereference  missing 
7.12.1.4regex_iterator increment  missing 
7.12.2Class template regex_token_iterator  missing 
7.12.2.1regex_token_iterator constructors  missing 
7.12.2.2regex_token_iterator comparisons  missing 
7.12.2.3regex_token_iterator dereference  missing 
7.12.2.4regex_token_iterator increment  missing 
7.13Modified ECMAScript regular expression grammar  missing 
8C Compatibility
8.1Additions to header <complex>done   
8.1.1Synopsisdone   
8.1.2Function acosdone   
8.1.3Function asindone   
8.1.4Function atandone   
8.1.5Function acoshdone   
8.1.6Function asinhdone   
8.1.7Function atanhdone   
8.1.8Function fabsdone   
8.1.9Additional Overloadsdone   
8.2Header <ccomplex>  missingDR 551
8.3Header <complex.h>  missingDR 551
8.4Additions to header <cctype>done   
8.4.1Synopsisdone   
8.4.2Function isblankdone   
8.5Additions to header <ctype.h>done   
8.6Header <cfenv>done   
8.6.1Synopsisdone   
8.6.2Definitionsdone   
8.7Header <fenv.h>done   
8.8Additions to header <cfloat>done   
8.9Additions to header <float.h>done   
8.10Additions to header <ios>  missing 
8.10.1Synopsis  missing 
8.10.2Function hexfloat  missing 
8.11Header <cinttypes>done   
8.11.1Synopsisdone  DR 557
8.11.2Definitionsdone   
8.12Header <inttypes.h>done   
8.13Additions to header <climits>done   
8.14Additions to header <limits.h>done   
8.15Additions to header <locale>  missing 
8.16Additions to header <cmath>done   
8.16.1Synopsisdone   
8.16.2Definitionsdone   
8.16.3Function template definitionsdone   
8.16.4Additional overloadsdone  DR 568; DR 550
8.17Additions to header <math.h>done   
8.18Additions to header <cstdarg>done   
8.19Additions to header <stdarg.h>done   
8.20The header <cstdbool>done   
8.21The header <stdbool.h>done   
8.22The header <cstdint>done   
8.22.1Synopsisdone   
8.22.2Definitionsdone   
8.23The header <stdint.h>done   
8.24Additions to header <cstdio>done   
8.24.1Synopsisdone   
8.24.2Definitionsdone   
8.24.3Additional format specifiersdone  C library responsibility
8.24.4Additions to header <stdio.h>done   
8.25Additions to header <cstdlib>done   
8.25.1Synopsisdone   
8.25.2Definitionsdone   
8.25.3Function absdone   
8.25.4Function divdone   
8.26Additions to header <stdlib.h>done   
8.27Header <ctgmath>done  DR 551
8.28Header <tgmath.h>done  DR 551
8.29Additions to header <ctime>done  C library responsibility
8.30Additions to header <cwchar>done   
8.30.1Synopsisdone   
8.30.2Definitionsdone   
8.30.3Additional wide format specifiersdone  C library responsibility
8.31Additions to header <wchar.h>done   
8.32Additions to header <cwctype>done   
8.32.1Synopsisdone   
8.32.2Function iswblankdone   
8.33Additions to header <wctype.h>done   

Footnotes

The shared_ptr implementation uses some code from the @@ -6120,7 +6120,7 @@ presence of the required flag.

This page describes the C++0x support in mainline GCC SVN, not in any particular release. -

Table 1.2. C++ 200x Implementation Status

SectionDescriptionDoneBrokenMissingComments
20General Utilities
20.2Utility Components  incomplete 
20.2.1Operators  partial 
20.2.2forward/move helpers  partial 
20.2.3Pairsdone   
20.3Header <tuple> synopsisdone   
20.3.1Class template tupledone   
20.3.1.1Constructiondone   
20.3.1.2Tuple creation functionsdone   
20.3.1.3Tuple helper classesdone   
20.3.1.4Element accessdone   
20.3.1.5Relational operatorsdone   
20.4Metaprogramming and type traits
20.4.1Requirementsdone   
20.4.2Header <type_traits> synopsisdone   
20.4.3Helper classesdone   
20.4.4General Requirementsdone   
20.4.5Unary Type Traitsdone   
20.4.5.1Primary Type Categoriesdone   
20.4.5.2Composite type traitsdone   
20.4.5.3Type propertiesdone   
20.4.6Relationships between typesdone   
20.4.7Transformations between typesdone   
20.4.7.1Const-volatile modificationsdone   
20.4.7.2Reference modificationsdone   
20.4.7.3Array modificationsdone   
20.4.7.4Pointer modificationsdone   
20.4.8Other transformationsdone   
20.4.9Implementation requirementsdone   
20.5 Function Objectsdone   
20.5Additions to header <functional> synopsisdone   
20.5.1Definitionsdone   
20.5.2Requirementsdone   
20.5.3Basedone   
20.5.4Function return typesdone   
20.5.5Class template reference_wrapperdone   
20.5.5.1reference_wrapper construct/copy/destroydone   
20.5.5.2reference_wrapper assignmentdone   
20.5.5.3reference_wrapper accessdone   
20.5.5.4reference_wrapper invocationdone   
20.5.5.5reference_wrapper helper functionsdone   
20.5.14Function template mem_fndone   
20.5.11Template function binddone   
20.5.11.1Function object bindersdone   
20.5.11.1.1Class template is_bind_expressiondone   
20.5.11.1.2Class template is_placeholderdone   
20.5.11.1.3Function template binddone   
20.5.11.1.4Placeholdersdone   
20.5.15Polymorphic function wrappersdone   
20.5.15.1Class bad_function_calldone   
20.5.15.1.1bad_function_call constructordone   
20.5.15.2Class template functiondone   
20.5.15.2.1function construct/copy/destroydone   
20.5.15.2.2function modifiersdone   
20.5.15.2.3function capacitydone   
20.5.15.2.4function invocationdone   
20.5.15.2.5function target accessdone   
20.5.15.2.7null pointer comparison operatorsdone   
20.5.15.2.8specialized algorithmsdone   
20.5.16Class template hashdone   
20.6Additions to header <memory> synopsis  partialmissing unique_ptr
20.6.5Class template unique_ptr  missing 
20.6.6Smart pointersdone   
20.6.6.1Class bad_weak_ptrdone   
20.6.6.2Class template shared_ptrdone  See Footnotes.
20.6.6.2.1shared_ptr constructorsdone   
20.6.6.2.2shared_ptr destructordone   
20.6.6.2.3shared_ptr assignmentdone   
20.6.6.2.4shared_ptr modifiersdone   
20.6.6.2.5shared_ptr observersdone   
20.6.6.2.6shared_ptr creationdone   +

Table 1.2. C++ 200x Implementation Status

SectionDescriptionDoneBrokenMissingComments
20General Utilities
20.2Utility Components  incomplete 
20.2.1Operators  partial 
20.2.2forward/move helpers  partial 
20.2.3Pairsdone   
20.3Header <tuple> synopsisdone   
20.3.1Class template tupledone   
20.3.1.1Constructiondone   
20.3.1.2Tuple creation functionsdone   
20.3.1.3Tuple helper classesdone   
20.3.1.4Element accessdone   
20.3.1.5Relational operatorsdone   
20.4Metaprogramming and type traits
20.4.1Requirementsdone   
20.4.2Header <type_traits> synopsisdone   
20.4.3Helper classesdone   
20.4.4General Requirementsdone   
20.4.5Unary Type Traitsdone   
20.4.5.1Primary Type Categoriesdone   
20.4.5.2Composite type traitsdone   
20.4.5.3Type propertiesdone   
20.4.6Relationships between typesdone   
20.4.7Transformations between typesdone   
20.4.7.1Const-volatile modificationsdone   
20.4.7.2Reference modificationsdone   
20.4.7.3Array modificationsdone   
20.4.7.4Pointer modificationsdone   
20.4.8Other transformationsdone   
20.4.9Implementation requirementsdone   
20.5 Function Objectsdone   
20.5Additions to header <functional> synopsisdone   
20.5.1Definitionsdone   
20.5.2Requirementsdone   
20.5.3Basedone   
20.5.4Function return typesdone   
20.5.5Class template reference_wrapperdone   
20.5.5.1reference_wrapper construct/copy/destroydone   
20.5.5.2reference_wrapper assignmentdone   
20.5.5.3reference_wrapper accessdone   
20.5.5.4reference_wrapper invocationdone   
20.5.5.5reference_wrapper helper functionsdone   
20.5.14Function template mem_fndone   
20.5.11Template function binddone   
20.5.11.1Function object bindersdone   
20.5.11.1.1Class template is_bind_expressiondone   
20.5.11.1.2Class template is_placeholderdone   
20.5.11.1.3Function template binddone   
20.5.11.1.4Placeholdersdone   
20.5.15Polymorphic function wrappersdone   
20.5.15.1Class bad_function_calldone   
20.5.15.1.1bad_function_call constructordone   
20.5.15.2Class template functiondone   
20.5.15.2.1function construct/copy/destroydone   
20.5.15.2.2function modifiersdone   
20.5.15.2.3function capacitydone   
20.5.15.2.4function invocationdone   
20.5.15.2.5function target accessdone   
20.5.15.2.7null pointer comparison operatorsdone   
20.5.15.2.8specialized algorithmsdone   
20.5.16Class template hashdone   
20.6Additions to header <memory> synopsis  partialmissing unique_ptr
20.6.5Class template unique_ptr  missing 
20.6.6Smart pointersdone   
20.6.6.1Class bad_weak_ptrdone   
20.6.6.2Class template shared_ptrdone  See Footnotes.
20.6.6.2.1shared_ptr constructorsdone   
20.6.6.2.2shared_ptr destructordone   
20.6.6.2.3shared_ptr assignmentdone   
20.6.6.2.4shared_ptr modifiersdone   
20.6.6.2.5shared_ptr observersdone   
20.6.6.2.6shared_ptr creationdone   N2351
20.6.6.2.7shared_ptr comparisondone   
20.6.6.2.8shared_ptr I/Odone   
20.6.6.2.9shared_ptr specialized algorithmsdone   
20.6.6.2.10shared_ptr castsdone   
20.6.6.2.11get_deleterdone   
20.6.6.3Class template weak_ptrdone   
20.6.6.3.1weak_ptr constructorsdone   
20.6.6.3.2weak_ptr destructordone   
20.6.6.3.3weak_ptr assignmentdone   
20.6.6.3.4weak_ptr modifiersdone   
20.6.6.3.5weak_ptr observersdone   
20.6.6.3.6weak_ptr comparisondone   
20.6.6.3.7weak_ptr specialized algorithmsdone   
20.6.6.4Class template enable_shared_from_thisdone   
23Containers
23.2.1Header <array> synopsisdone   
23.2.1Class template arraydone   
23.2.1.1array constructors, copy, and assignmentdone   
23.2.1.2array specialized algorithmsdone   
23.2.1.3array sizedone   
23.2.1.4array datadone   
23.2.1.5Zero sized arraysdone   
23.2.1.6Tuple interface to class template arraydone   
23.4Unordered associative containersdone   
23.4.1Class template unordered_mapdone   
23.4.1.1unordered_map constructorsdone   
23.4.1.2unordered_map element accessdone   
23.4.1.3unordered_map swapdone   
23.4.2Class template unordered_multimapdone   
23.4.2.1unordered_multimap constructorsdone   
23.4.2.2unordered_multimap swapdone   
23.4.3Class template unordered_setdone   
23.4.3.1unordered_set constructorsdone   
23.4.3.2unordered_set swapdone   
23.4.4Class template unordered_multisetdone   
23.4.4.1unordered_multiset constructorsdone   
23.4.4.2unordered_multiset swapdone   
26Numerics
26.4Random number generationdone   
26.4.1Requirementsdone   
26.4.2Header <random> synopsis  partial 
26.4.3Random number engine class templatesdone   
26.4.3.1Class template linear_congruential_enginedone   
26.4.3.2Class template mersenne_twister_enginedone   
26.4.3.3Class template subtract_with_carry_enginedone   
26.4.4Random number engine adaptor class templatesdone   
26.4.4.1Class template discard_block_enginedone   
26.4.4.2Class template independent_bits_enginedone   
26.4.4.3Class template shuffle_order_enginedone   
26.4.4.4Class template xor_combine_enginedone  operator()() per N2079
26.4.5Engines and engine adaptors with predefined parametersdone   
26.4.6Class random_devicedone   
26.4.7Utilitiesdone   
26.4.7.1Class seed_seq  missing 
26.4.7.2Function template generate_canonical  missing 
26.4.8Random number generation class templatesdone   
26.4.8.1Uniform distributions  partial 
26.4.8.1Class template uniform_int_distribution  missing 
26.4.8.1Class template uniform_real_distribution  missing 
26.4.8.2Bernoulli distributions  partial 
26.4.8.2.1Class bernoulli_distributiondone   
26.4.8.2.2Class template binomial_distributiondone   
26.4.8.2.3Class template geometric_distributiondone   
26.4.8.2.4Class template negative_binomial_distribution  missing 
26.4.8.3Poisson distributions  partial 
26.4.8.3.1Class template poisson_distributiondone   
26.4.8.3.2Class template exponential_distributiondone   
26.4.8.3.3Class template gamma_distributiondone   
26.4.8.3.4Class template weibull_distribution  missing 
26.4.8.3.5Class template extreme_value_distribution  missing 
26.4.8.4Normal distributions  partial 
26.4.8.4.1Class template normal_distributiondone   
26.4.8.4.2Class template lognormal_distribution  missing 
26.4.8.4.3Class template chi_squared_distribution  missing 
26.4.8.4.4Class template cauchy_distribution  missing 
26.4.8.4.5Class template fisher_f_distribution  missing 
26.4.8.4.6Class template student_t_distribution  missing 
26.4.8.5Sampling distributions  missing 
26.4.8.5.1Class template discrete_distribution  missing 
26.4.8.5.1Class template piecewise_constant_distribution  missing 
26.4.8.5.1Class template general_pdf_distribution  missing 
28Regular Expressions
28.1Definitions  missing 
28.2Requirements  missing 
28.3Regular expressions summary  missing 
28.4Header <regex> synopsis  missing 
28.5Namespace tr1::regex_constants  missing 
28.5.1Bitmask Type syntax_option_type  missing 
28.5.2Bitmask Type regex_constants::match_flag_type  missing 
28.5.3Implementation defined error_type  missing 
28.6Class regex_error  missing 
28.7Class template regex_traits  missing 
28.8Class template basic_regex  missing 
28.8.1basic_regex constants  missing 
28.8.2basic_regex constructors  missing 
28.8.3basic_regex assign  missing 
28.8.4basic_regex constant operations  missing 
28.8.5basic_regex locale  missing 
28.8.6basic_regex swap  missing 
28.8.7basic_regex non-member functions  missing 
28.8.7.1basic_regex non-member swap  missing 
28.9Class template sub_match  missing 
28.9.1sub_match members  missing 
28.9.2sub_match non-member operators  missing 
28.10Class template match_results  missing 
28.10.1match_results constructors  missing 
28.10.2match_results size  missing 
28.10.3match_results element access  missing 
28.10.4match_results formatting  missing 
28.10.5match_results allocator  missing 
28.10.6match_results swap  missing 
28.11Regular expression algorithms  missing 
28.11.1exceptions  missing 
28.11.2regex_match  missing 
28.11.3regex_search  missing 
28.11.4regex_replace  missing 
28.12Regular expression Iterators  missing 
28.12.1Class template regex_iterator  missing 
28.12.1.1regex_iterator constructors  missing 
28.12.1.2regex_iterator comparisons  missing 
28.12.1.3regex_iterator dereference  missing 
28.12.1.4regex_iterator increment  missing 
28.12.2Class template regex_token_iterator  missing 
28.12.2.1regex_token_iterator constructors  missing 
28.12.2.2regex_token_iterator comparisons  missing 
28.12.2.3regex_token_iterator dereference  missing 
28.12.2.4regex_token_iterator increment  missing 
28.13Modified ECMAScript regular expression grammar  missing 
CC Compatibility
C2.1Additions to header <complex>done   
C2.1.1Synopsisdone   
C2.1.2Function acosdone   
C2.1.3Function asindone   
C2.1.4Function atandone   
C2.1.5Function acoshdone   
C2.1.6Function asinhdone   
C2.1.7Function atanhdone   
C2.1.8Function fabsdone   
C2.1.9Additional Overloadsdone   
C2.2Header <ccomplex>  missingDR 551
C2.3Header <complex.h>  missingDR 551
C2.4Additions to header <cctype>done   
C2.4.1Synopsisdone   
C2.4.2Function isblankdone   
C2.5Additions to header <ctype.h>done   
C2.6Header <cfenv>done   
C2.6.1Synopsisdone   
C2.6.2Definitionsdone   
C2.7Header <fenv.h>done   
C2.8Additions to header <cfloat>done   
C2.9Additions to header <float.h>done   
C2.10Additions to header <ios>  missing 
C2.10.1Synopsis  missing 
C2.10.2Function hexfloat  missing 
C2.11Header <cinttypes>done   
C2.11.1Synopsisdone  DR 557
C2.11.2Definitionsdone   
C2.12Header <inttypes.h>done   
C2.13Additions to header <climits>done   
C2.14Additions to header <limits.h>done   
C2.15Additions to header <locale>  missing 
C2.16Additions to header <cmath>done   
C2.16.1Synopsisdone   
C2.16.2Definitionsdone   
C2.16.3Function template definitionsdone   
C2.16.4Additional overloadsdone  DR 568; DR 550
C2.17Additions to header <math.h>done   
C2.18Additions to header <cstdarg>done   
C2.19Additions to header <stdarg.h>done   
C2.20The header <cstdbool>done   
C2.21The header <stdbool.h>done   
C2.22The header <cstdint>done   
C2.22.1Synopsisdone   
C2.22.2Definitionsdone   
C2.23The header <stdint.h>done   
C2.24Additions to header <cstdio>done   
C2.24.1Synopsisdone   
C2.24.2Definitionsdone   
C2.24.3Additional format specifiersdone  C library responsibility
C2.24.4Additions to header <stdio.h>done   
C2.25Additions to header <cstdlib>done   
C2.25.1Synopsisdone   
C2.25.2Definitionsdone   
C2.25.3Function absdone   
C2.25.4Function divdone   
C2.26Additions to header <stdlib.h>done   
C2.27Header <ctgmath>done  DR 551
C2.28Header <tgmath.h>done  DR 551
C2.29Additions to header <ctime>done  C library responsibility
C2.30Additions to header <cwchar>done   
C2.30.1Synopsisdone   
C2.30.2Definitionsdone   
C2.30.3Additional wide format specifiersdone  C library responsibility
C2.31Additions to header <wchar.h>done   
C2.32Additions to header <cwctype>done   
C2.32.1Synopsisdone   
C2.32.2Function iswblankdone   
C2.33Additions to header <wctype.h>done   
DCompatibility Features
D.6Old iostream membersdone   
D.8Bindersdone  33911
D.9Class template auto_ptrdone  33911

Footnotes diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html index cbca8f3..d9a5a69 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html @@ -36,49 +36,49 @@ _GLIBCXX_RESOLVE_LIB_DEFECTS for examples of style. Note that we usually do not make changes to the code until an issue has reached DR status. -

5: +

5: string::compare specification questionable

This should be two overloaded functions rather than a single function. -

17: +

17: Bad bool parsing

Apparently extracting Boolean values was messed up... -

19: +

19: "Noconv" definition too vague

If codecvt::do_in returns noconv there are no changes to the values in [to, to_limit). -

22: +

22: Member open vs flags

Re-opening a file stream does not clear the state flags. -

25: +

25: String operator<< uses width() value wrong

Padding issues. -

48: +

48: Use of non-existent exception constructor

An instance of ios_base::failure is constructed instead. -

49: +

49: Underspecification of ios_base::sync_with_stdio

The return type is the previous state of synchronization. -

50: +

50: Copy constructor and assignment operator of ios_base

These members functions are declared private and are thus inaccessible. Specifying the correct semantics of "copying stream state" was deemed too complicated. -

60: +

60: What is a formatted input function?

This DR made many widespread changes to basic_istream and basic_ostream all of which have been implemented. -

63: +

63: Exception-handling policy for unformatted output

Make the policy consistent with that of formatted input, unformatted input, and formatted output. -

68: +

68: Extractors for char* should store null at end

And they do now. An editing glitch in the last item in the list of [27.6.1.2.3]/7. -

74: +

74: Garbled text for codecvt::do_max_length

The text of the standard was gibberish. Typos gone rampant. -

75: +

75: Contradiction in codecvt::length's argument types

Change the first parameter to stateT& and implement the new effects paragraph. @@ -86,202 +86,240 @@ string::npos vs. string::max_size()

Safety checks on the size of the string should test against max_size() rather than npos. -

90: +

90: Incorrect description of operator>> for strings

The effect contain isspace(c,getloc()) which must be replaced by isspace(c,is.getloc()). -

91: +

91: Description of operator>> and getline() for string<> might cause endless loop

They behave as a formatted input function and as an unformatted input function, respectively (except that getline is not required to set gcount). -

103: +

103: set::iterator is required to be modifiable, but this allows modification of keys.

For associative containers where the value type is the same as the key type, both iterator and const_iterator are constant iterators. -

109: +

109: Missing binders for non-const sequence elements

The binder1st and binder2nd didn't have an operator() taking a non-const parameter. -

110: +

110: istreambuf_iterator::equal not const

This was not a const member function. Note that the DR says to replace the function with a const one; we have instead provided an overloaded version with identical contents. -

117: +

117: basic_ostream uses nonexistent num_put member functions

num_put::put() was overloaded on the wrong types. -

118: +

118: basic_istream uses nonexistent num_get member functions

Same as 117, but for num_get::get(). -

129: +

129: Need error indication from seekp() and seekg()

These functions set failbit on error now. -

136: +

136: seekp, seekg setting wrong streams?

seekp should only set the output stream, and seekg should only set the input stream. -

167: +

167: Improper use of traits_type::length()

op<< with a const char* was calculating an incorrect number of characters to write. -

169: +

169: Bad efficiency of overflow() mandated

Grow efficiently the internal array object. -

171: +

171: Strange seekpos() semantics due to joint position

Quite complex to summarize... -

181: +

181: make_pair() unintended behavior

This function used to take its arguments as reference-to-const, now it copies them (pass by value). -

195: +

195: Should basic_istream::sentry's constructor ever set eofbit?

Yes, it can, specifically if EOF is reached while skipping whitespace. -

211: +

211: operator>>(istream&, string&) doesn't set failbit

If nothing is extracted into the string, op>> now sets failbit (which can cause an exception, etc., etc.). -

214: +

214: set::find() missing const overload

Both set and multiset were missing overloaded find, lower_bound, upper_bound, and equal_range functions for const instances. -

231: +

231: Precision in iostream?

For conversion from a floating-point type, str.precision() is specified in the conversion specification. -

233: +

233: Insertion hints in associative containers

Implement N1780, first check before then check after, insert as close to hint as possible. -

235: +

235: No specification of default ctor for reverse_iterator

The declaration of reverse_iterator lists a default constructor. However, no specification is given what this constructor should do. -

241: +

241: Does unique_copy() require CopyConstructible and Assignable?

Add a helper for forward_iterator/output_iterator, fix the existing one for input_iterator/output_iterator to not rely on Assignability. -

243: +

243: get and getline when sentry reports failure

Store a null character only if the character array has a non-zero size. -

251: +

251: basic_stringbuf missing allocator_type

This nested typedef was originally not specified. -

253: +

253: valarray helper functions are almost entirely useless

Make the copy constructor and copy-assignment operator declarations public in gslice_array, indirect_array, mask_array, slice_array; provide definitions. -

265: +

265: std::pair::pair() effects overly restrictive

The default ctor would build its members from copies of temporaries; now it simply uses their respective default ctors. -

266: +

266: bad_exception::~bad_exception() missing Effects clause

The bad_* classes no longer have destructors (they are trivial), since no description of them was ever given. -

271: +

271: basic_iostream missing typedefs

The typedefs it inherits from its base classes can't be used, since (for example) basic_iostream<T>::traits_type is ambiguous. -

275: +

275: Wrong type in num_get::get() overloads

Similar to 118. -

280: +

280: Comparison of reverse_iterator to const reverse_iterator

Add global functions with two template parameters. (NB: not added for now a templated assignment operator) -

292: +

292: Effects of a.copyfmt (a)

If (this == &rhs) do nothing. -

300: +

300: List::merge() specification incomplete

If (this == &x) do nothing. -

303: +

303: Bitset input operator underspecified -

Basically, compare the input character to is.widen(0) - and is.widen(1). -

305: - Default behavior of codecvt<wchar_t, char, mbstate_t>::length() -

Do not specify what codecvt<wchar_t, char, mbstate_t>::do_length - must return. -

328: - Bad sprintf format modifier in money_put<>::do_put() +

Basically, compare the input character to + is.widen(0) and is.widen(1). +

305: + Default behavior of codecvt<wchar_t, char, + mbstate_t>::length() +

Do not specify what codecvt<wchar_t, char, + mbstate_t>::do_length must return. +

328: + Bad sprintf format modifier in + money_put<>::do_put()

Change the format string to "%.0Lf". -

365: +

365: Lack of const-qualification in clause 27

Add const overloads of is_open. -

389: - Const overload of valarray::operator[] returns by value +

387: + std::complex over-encapsulated +

Add the real(T) and imag(T) + members; in C++0x mode, also adjust the existing + real() and imag() members and + free functions. +

389: + Const overload of valarray::operator[] returns + by value

Change it to return a const T&. -

402: +

402: Wrong new expression in [some_]allocator::construct

Replace "new" with "::new". -

409: +

409: Closing an fstream should clear the error state

Have open clear the error flags. -

431: +

431: Swapping containers with unequal allocators

Implement Option 3, as per N1599. -

432: +

432: stringbuf::overflow() makes only one write position available

Implement the resolution, beyond DR 169. -

434: +

434: bitset::to_string() hard to use

Add three overloads, taking fewer template arguments. -

438: +

438: Ambiguity in the "do the right thing" clause

Implement the resolution, basically cast less. -

453: +

453: basic_stringbuf::seekoff need not always fail for an empty stream

Don't fail if the next pointer is null and newoff is zero. -

455: +

455: cerr::tie() and wcerr::tie() are overspecified

Initialize cerr tied to cout and wcerr tied to wcout. -

464: +

464: Suggestion for new member functions in standard containers

Add data() to std::vector and at(const key_type&) to std::map. -

508: +

508: Bad parameters for ranlux64_base_01

Fix the parameters. -

512: +

512: Seeding subtract_with_carry_01 from a single unsigned long

Construct a linear_congruential engine and seed with it. -

526: +

526: Is it undefined if a function in the standard changes in parameters?

Use &value. -

538: +

538: 241 again: Does unique_copy() require CopyConstructible and Assignable?

In case of input_iterator/output_iterator rely on Assignability of input_iterator' value_type. -

541: +

541: shared_ptr template assignment and void

Add an auto_ptr<void> specialization. -

543: +

543: valarray slice default constructor

Follow the straightforward proposed resolution. -

586: +

550: + What should the return type of pow(float,int) be? +

In C++0x mode, remove the pow(float,int), etc., signatures. +

586: string inserter not a formatted function

Change it to be a formatted output function (i.e. catch exceptions). -

596: +

596: 27.8.1.3 Table 112 omits "a+" and "a+b" modes

Add the missing modes to fopen_mode. -

660: +

660: Missing bitwise operations

Add the missing operations. -

693: +

691: + const_local_iterator cbegin, cend missing from TR1 +

In C++0x mode add cbegin(size_type) and cend(size_type) + to the unordered containers. +

693: std::bitset::all() missing

Add it, consistently with the discussion. -

695: +

695: ctype<char>::classic_table() not accessible

Make the member functions table and classic_table public. +

761: + unordered_map needs an at() member function +

In C++0x mode, add at() and at() const. +

775: + Tuple indexing should be unsigned? +

Implement the int -> size_t replacements. +

776: + Undescribed assign function of std::array +

In C++0x mode, remove assign, add fill. +

778: + std::bitset does not have any constructor taking a string + literal +

Add it. +

781: + std::complex should add missing C99 functions +

In C++0x mode, add std::proj. +

809: + std::swap should be overloaded for array types +

Add the overload. +

844: + complex pow return type is ambiguous +

In C++0x mode, remove the pow(complex<T>, int) signature.

diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html index 6daf436..7065e20 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html @@ -20,14 +20,14 @@ upcoming 200x standard.

C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -

Table 3.1. C++ 1998 Library Headers

algorithmiomaniplistostreamstreambuf
bitsetioslocalequeuestring
complexiosfwdmapsettypeinfo
dequeiostreammemorysstreamutility
exceptionistreamnewstackvalarray
fstreamiteratornumericstdexceptvector
functionallimits   

Table 3.2. C++ 1998 Library Headers for C Library Facilities

cassertciso646csetjmpcstdioctime
cctypeclimitscsignalcstdlibcwchar
cerrnoclocalecstdargcstringcwctype
cfloatcmathcstddef  

C++0x include files. These are only available in C++0x compilation mode, i.e. -std=c++0x or -std=gnu++0x. -

Table 3.3. C++ 200x Library Headers

algorithmiomaniplocaleregextuple
arrayiosmapsettypeinfo
bitsetiosfwdmemorysstreamtype_traits
complexiostreamnewstackunordered_map
dequeistreamnumericstdexceptunordered_set
exceptioniteratorostreamstreambufutility
fstreamlimitsqueuestringvalarray
functionallistrandomsystem_errorvector

Table 3.4. C++ 200x Library Headers for C Library Facilities

cassertcfloatcmathcstddefctgmath
ccomplexcinttypescsetjmpcstdintctime
cctypeciso646csignalcstdiocuchar
cerrnoclimitscstdargcstdlibcwchar
cfenvclocalecstdboolcstringcwctype

+

Table 3.1. C++ 1998 Library Headers

algorithmiomaniplistostreamstreambuf
bitsetioslocalequeuestring
complexiosfwdmapsettypeinfo
dequeiostreammemorysstreamutility
exceptionistreamnewstackvalarray
fstreamiteratornumericstdexceptvector
functionallimits   

Table 3.2. C++ 1998 Library Headers for C Library Facilities

cassertciso646csetjmpcstdioctime
cctypeclimitscsignalcstdlibcwchar
cerrnoclocalecstdargcstringcwctype
cfloatcmathcstddef  

C++0x include files. These are only available in C++0x compilation mode, i.e. -std=c++0x or -std=gnu++0x. +

Table 3.3. C++ 200x Library Headers

algorithmiomaniplocaleregextuple
arrayiosmapsettypeinfo
bitsetiosfwdmemorysstreamtype_traits
complexiostreamnewstackunordered_map
dequeistreamnumericstdexceptunordered_set
exceptioniteratorostreamstreambufutility
fstreamlimitsqueuestringvalarray
functionallistrandomsystem_errorvector
condition_variablemutexthread  

Table 3.4. C++ 200x Library Headers for C Library Facilities

cassertcfloatcmathcstddefctgmath
ccomplexcinttypescsetjmpcstdintctime
cctypeciso646csignalcstdiocuchar
cerrnoclimitscstdargcstdlibcwchar
cfenvclocalecstdboolcstringcwctype
cstdatomic    

In addition, TR1 includes as: -

Table 3.5. C++ TR1 Library Headers

tr1/arraytr1/memorytr1/regextr1/type_traitstr1/unordered_set
tr1/complextr1/randomtr1/tupletr1/unordered_maptr1/utility
tr1/functional    

Table 3.6. C++ TR1 Library Headers for C Library Facilities

tr1/cmathtr1/cfloattr1/cstdargtr1/cstdiotr1/ctime
tr1/ccomplextr1/cinttypestr1/cstdbooltr1/cstdlibtr1/cwchar
tr1/cfenvtr1/climitstr1/cstdinttr1/ctgmathtr1/cwctype

+

Table 3.5. C++ TR1 Library Headers

tr1/arraytr1/memorytr1/regextr1/type_traitstr1/unordered_set
tr1/complextr1/randomtr1/tupletr1/unordered_maptr1/utility
tr1/functional    

Table 3.6. C++ TR1 Library Headers for C Library Facilities

tr1/cmathtr1/cfloattr1/cstdargtr1/cstdiotr1/ctime
tr1/ccomplextr1/cinttypestr1/cstdbooltr1/cstdlibtr1/cwchar
tr1/cfenvtr1/climitstr1/cstdinttr1/ctgmathtr1/cwctype

Also included are files for the C++ ABI interface: -

Table 3.7. C++ ABI Headers

cxxabi.hcxxabi_forced.h

+

Table 3.7. C++ ABI Headers

cxxabi.hcxxabi_forced.h

And a large variety of extensions. -

Table 3.8. Extension Headers

ext/algorithmext/debug_allocator.hext/mt_allocator.hext/pod_char_traits.hext/stdio_sync_filebuf.h
ext/array_allocator.hext/enc_filebuf.hext/new_allocator.hext/pool_allocator.hext/throw_allocator.h
ext/atomicity.hext/functionalext/numericext/rb_treeext/typelist.h
ext/bitmap_allocator.hext/iteratorext/numeric_traits.hext/ropeext/type_traits.h
ext/codecvt_specializations.hext/malloc_allocator.hext/pb_ds/assoc_container.hext/slistext/vstring.h
ext/concurrence.hext/memoryext/pb_ds/priority_queue.hext/stdio_filebuf.h 

Table 3.9. Extension Debug Headers

debug/bitsetdebug/listdebug/setdebug/unordered_mapdebug/vector
debug/dequedebug/mapdebug/stringdebug/unordered_set 

Table 3.10. Extension Parallel Headers

parallel/algorithmparallel/numeric

Mixing Headers

A few simple rules. +

Table 3.8. Extension Headers

ext/algorithmext/debug_allocator.hext/mt_allocator.hext/pod_char_traits.hext/stdio_sync_filebuf.h
ext/array_allocator.hext/enc_filebuf.hext/new_allocator.hext/pool_allocator.hext/throw_allocator.h
ext/atomicity.hext/functionalext/numericext/rb_treeext/typelist.h
ext/bitmap_allocator.hext/iteratorext/numeric_traits.hext/ropeext/type_traits.h
ext/codecvt_specializations.hext/malloc_allocator.hext/pb_ds/assoc_container.hext/slistext/vstring.h
ext/concurrence.hext/memoryext/pb_ds/priority_queue.hext/stdio_filebuf.h 

Table 3.9. Extension Debug Headers

debug/bitsetdebug/listdebug/setdebug/unordered_mapdebug/vector
debug/dequedebug/mapdebug/stringdebug/unordered_set 

Table 3.10. Extension Parallel Headers

parallel/algorithmparallel/numeric

Mixing Headers

A few simple rules.

First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
index 7a9d2eb..c590c7d 100644
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
+++ b/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
@@ -1,6 +1,6 @@
 
 
-Concurrency

Concurrency

This section discusses issues surrounding the proper compilation +Concurrency

Concurrency

This section discusses issues surrounding the proper compilation of multithreaded applications which use the Standard C++ library. This information is GCC-specific since the C++ standard does not address matters of multithreaded applications. @@ -216,4 +216,4 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) is a better way to tune an application for high-speed using this implementation of the STL. There is more information on allocators here. -

+

diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html index 1b7bbfe..4bee96e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html +++ b/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html @@ -1,3 +1,6 @@ -Exception Safety

Exception Safety

+Exceptions

Exceptions

Propagating Exceptions aka Exception Neutrality

+

Exception Safety

+

Support for -fno-exceptions

+

diff --git a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html index 811d492..2d36c3f 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html @@ -1,6 +1,6 @@ -

+

This part deals with the functions called and objects created automatically during the course of a program's existence.

diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html b/libstdc++-v3/doc/html/manual/bk01pt04ch11.html index 4682fe3..6602bf4 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html +++ b/libstdc++-v3/doc/html/manual/bk01pt04ch11.html @@ -90,7 +90,7 @@ or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support abi::__cxa_atexit is not recommended. -

Implementation

Interface Design

+

Implementation

Interface Design

The only allocator interface that is support is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have @@ -103,7 +103,7 @@

The base class that allocator is derived from may not be user-configurable. -

Selecting Default Allocation Policy

+

Selecting Default Allocation Policy

It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure @@ -140,7 +140,7 @@ The current default choice for allocator is __gnu_cxx::new_allocator. -

Disabling Memory Caching

+

Disabling Memory Caching

In use, allocator may allocate and deallocate using implementation-specified strategies and heuristics. Because of this, every call to an allocator object's @@ -305,11 +305,11 @@ A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own documentation, found here. -

Bibliography

+

Bibliography

ISO/IEC 14882:1998 Programming languages - C++ . isoc++_1998 - 20.4 Memory.

The Standard Librarian: What Are Allocators Good + 20.4 Memory.

The Standard Librarian: What Are Allocators Good . austernm Matt Austern. @@ -317,28 +317,28 @@ . - .

The Hoard Memory Allocator. + .

The Hoard Memory Allocator. emeryb Emery Berger. - .

Reconsidering Custom Memory Allocation. + .

Reconsidering Custom Memory Allocation. bergerzorn Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA. - .

Allocator Types. + .

Allocator Types. kreftlanger Klaus Kreft. Angelika Langer. C/C++ Users Journal . - .

The C++ Programming Language. + .

The C++ Programming Language. tcpl Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. Addison Wesley - .

Yalloc: A Recycling C++ Allocator. + .

Bibliography

+

Bibliography

The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

+ . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

Correspondence - . Ulrich Drepper. Copyright © 2002 .

+ . Ulrich Drepper. Copyright © 2002 .

ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

+ . Copyright © 1998 ISO.

ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

+ . Copyright © 1999 ISO.

System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) . Copyright © 1999 The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. - .

+ .

The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

+ .

Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference diff --git a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html b/libstdc++-v3/doc/html/manual/bk01pt06ch15.html index 7bad31d..65551aa 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html +++ b/libstdc++-v3/doc/html/manual/bk01pt06ch15.html @@ -1,6 +1,6 @@ -Chapter 15. Facets aka Categories

Chapter 15. Facets aka Categories

ctype

Implementation

Specializations

+Chapter 15. Facets aka Categories

Chapter 15. Facets aka Categories

ctype

Implementation

Specializations

For the required specialization codecvt<wchar_t, char, mbstate_t> , conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the @@ -47,25 +47,25 @@ characters.

  • Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. -

  • Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) . Copyright © 1999 The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference diff --git a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html index 365ae11..4f560ca 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html @@ -1,6 +1,6 @@ -

    +

    The neatest accomplishment of the algorithms chapter is that all the work is done via iterators, not containers directly. This means two important things: diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html index e293caa..b13e08b 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html @@ -19,6 +19,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -

    Table 30.1. Debugging Containers

    ContainerHeaderDebug containerDebug header  
    std::bitsetbitset__gnu_debug::bitsetbitset  
    std::dequedeque__gnu_debug::dequedeque  
    std::listlist__gnu_debug::listlist  
    std::mapmap__gnu_debug::mapmap  
    std::multimapmap__gnu_debug::multimapmap  
    std::multisetset__gnu_debug::multisetset  
    std::setset__gnu_debug::setset  
    std::stringstring__gnu_debug::stringstring  
    std::wstringstring__gnu_debug::wstringstring  
    std::basic_stringstring__gnu_debug::basic_stringstring  
    std::vectorvector__gnu_debug::vectorvector  

    In addition, when compiling in C++0x mode, these additional +

    Table 30.1. Debugging Containers

    ContainerHeaderDebug containerDebug header  
    std::bitsetbitset__gnu_debug::bitsetbitset  
    std::dequedeque__gnu_debug::dequedeque  
    std::listlist__gnu_debug::listlist  
    std::mapmap__gnu_debug::mapmap  
    std::multimapmap__gnu_debug::multimapmap  
    std::multisetset__gnu_debug::multisetset  
    std::setset__gnu_debug::setset  
    std::stringstring__gnu_debug::stringstring  
    std::wstringstring__gnu_debug::wstringstring  
    std::basic_stringstring__gnu_debug::basic_stringstring  
    std::vectorvector__gnu_debug::vectorvector  

    In addition, when compiling in C++0x mode, these additional containers have additional debug capability. -

    Table 30.2. Debugging Containers C++0x

    ContainerHeaderDebug containerDebug header  
    std::unordered_mapunordered_map__gnu_debug::unordered_mapunordered_map  
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimapunordered_map  
    std::unordered_setunordered_set__gnu_debug::unordered_setunordered_set  
    std::unordered_multisetunordered_set__gnu_debug::unordered_multisetunordered_set  

    +

    Table 30.2. Debugging Containers C++0x

    ContainerHeaderDebug containerDebug header  
    std::unordered_mapunordered_map__gnu_debug::unordered_mapunordered_map  
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimapunordered_map  
    std::unordered_setunordered_set__gnu_debug::unordered_setunordered_set  
    std::unordered_multisetunordered_set__gnu_debug::unordered_multisetunordered_set  

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html index a22fd09..58468b1 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html @@ -2,6 +2,8 @@ Semantics

    Semantics

    The parallel mode STL algorithms are currently not exception-safe, i.e. user-defined functors must not throw exceptions. +Also, the order of execution is not guaranteed for some functions, of course. +Therefore, user-defined functors should not have any concurrent side effects.

    Since the current GCC OpenMP implementation does not support OpenMP parallel regions in concurrent threads, it is not possible to call parallel STL algorithm in diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html index 2e03e0e..3fc8575 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html @@ -1,14 +1,32 @@ -Using

    Using

    Using Parallel Mode

    +Using

    Using

    Prerequisite Compiler Flags

    + Any use of parallel functionality requires additional compiler + and runtime support, in particular support for OpenMP. Adding this support is + not difficult: just compile your application with the compiler + flag -fopenmp. This will link + in libgomp, the GNU + OpenMP implementation, + whose presence is mandatory. +

    +In addition, hardware that supports atomic operations and a compiler + capable of producing atomic operations is mandatory: GCC defaults to no + support for atomic operations on some common hardware + architectures. Activating atomic operations may require explicit + compiler flags on some targets (like sparc and x86), such + as -march=i686, + -march=native or -mcpu=v9. See + the GCC manual for more information. +

    Using Parallel Mode

    To use the libstdc++ parallel mode, compile your application with - the compiler flag -D_GLIBCXX_PARALLEL -fopenmp. This - will link in libgomp, the GNU OpenMP implementation, - whose presence is mandatory. In addition, hardware capable of atomic - operations is mandatory. Actually activating these atomic - operations may require explicit compiler flags on some targets - (like sparc and x86), such as -march=i686, - -march=native or -mcpu=v9. + the prerequisite flags as detailed above, and in addition + add -D_GLIBCXX_PARALLEL. This will convert all + use of the standard (sequential) algorithms to the appropriate parallel + equivalents. Please note that this doesn't necessarily mean that + everything will end up being executed in a parallel manner, but + rather that the heuristics and settings coded into the parallel + versions will be used to determine if all, some, or no algorithms + will be executed using parallel variants.

    Note that the _GLIBCXX_PARALLEL define may change the sizes and behavior of standard class templates such as std::search, and therefore one can only link code @@ -16,13 +34,33 @@ if no instantiation of a container is passed between the two translation units. Parallel mode functionality has distinct linkage, and cannot be confused with normal mode symbols. -

    Using Specific Parallel Components

    When it is not feasible to recompile your entire application, or +

    Using Specific Parallel Components

    When it is not feasible to recompile your entire application, or only specific algorithms need to be parallel-aware, individual parallel algorithms can be made available explicitly. These parallel algorithms are functionally equivalent to the standard drop-in algorithms used in parallel mode, but they are available in a separate namespace as GNU extensions and may be used in programs - compiled with either release mode or with parallel mode. The - following table provides the names and headers of the parallel - algorithms: -

    Table 31.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    + compiled with either release mode or with parallel mode. +

    An example of using a parallel version +of std::sort, but no other parallel algorithms, is: +

    +#include <vector>
    +#include <parallel/algorithm>
    +
    +int main()
    +{
    +  std::vector<int> v(100);
    +
    +  // ...
    +
    +  // Explicitly force a call to parallel sort.
    +  __gnu_parallel::sort(v.begin(), v.end());
    +  return 0;
    +}
    +

    +Then compile this code with the prerequisite compiler flags +(-fopenmp and any necessary architecture-specific +flags for atomic operations.) +

    The following table provides the names and headers of all the + parallel algorithms that can be used in a similar manner: +

    Table 31.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html b/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html index 49db41c..029f55e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html @@ -34,26 +34,10 @@ overloads are used to dispatch calls from the ISO C++ function signature to the appropriate parallel function (or sequential function, if no parallel functions are deemed worthy), based on either compile-time or run-time conditions. -

    Compile-time conditions are referred to as "embarrassingly -parallel," and are denoted with the appropriate dispatch object, i.e., -one of __gnu_parallel::sequential_tag, -__gnu_parallel::parallel_tag, -__gnu_parallel::balanced_tag, -__gnu_parallel::unbalanced_tag, -__gnu_parallel::omp_loop_tag, or -__gnu_parallel::omp_loop_static_tag. -

    Run-time conditions depend on the hardware being used, the number -of threads available, etc., and are denoted by the use of the enum -__gnu_parallel::parallelism. Values of this enum include -__gnu_parallel::sequential, -__gnu_parallel::parallel_unbalanced, -__gnu_parallel::parallel_balanced, -__gnu_parallel::parallel_omp_loop, -__gnu_parallel::parallel_omp_loop_static, or -__gnu_parallel::parallel_taskqueue. -

    Putting all this together, the general view of overloads for the -parallel algorithms look like this: -

    • ISO C++ signature

    • ISO C++ signature + sequential_tag argument

    • ISO C++ signature + parallelism argument

    Please note that the implementation may use additional functions +

    The available signature options are specific for the different +algorithms/algorithm classes.

    The general view of overloads for the parallel algorithms look like this: +

    • ISO C++ signature

    • ISO C++ signature + sequential_tag argument

    • ISO C++ signature + algorithm-specific tag type + (several signatures)

    Please note that the implementation may use additional functions (designated with the _switch suffix) to dispatch from the ISO C++ signature to the correct parallel version. Also, some of the algorithms do not have support for run-time conditions, so the last @@ -62,8 +46,8 @@ overload is therefore missing. Several aspects of the overall runtime environment can be manipulated by standard OpenMP function calls.

    -To specify the number of threads to be used for an algorithm, use the -function omp_set_num_threads. An example: +To specify the number of threads to be used for the algorithms globally, +use the function omp_set_num_threads. An example:

     #include <stdlib.h>
     #include <omp.h>
    @@ -75,11 +59,15 @@ int main()
       omp_set_dynamic(false);
       omp_set_num_threads(threads_wanted);
     
    -  // Do work.
    +  // Call parallel mode algorithms.
     
       return 0;
     }
     

    + Some algorithms allow the number of threads being set for a particular call, + by augmenting the algorithm variant. + See the next section for further information. +

    Other parts of the runtime environment able to be manipulated include nested parallelism (omp_set_nested), schedule kind (omp_set_schedule), and others. See the OpenMP @@ -88,22 +76,56 @@ documentation for more information. To force an algorithm to execute sequentially, even though parallelism is switched on in general via the macro _GLIBCXX_PARALLEL, add __gnu_parallel::sequential_tag() to the end -of the algorithm's argument list, or explicitly qualify the algorithm -with the __gnu_parallel:: namespace. +of the algorithm's argument list.

    Like so:

     std::sort(v.begin(), v.end(), __gnu_parallel::sequential_tag());
     

    -or -

    -__gnu_serial::sort(v.begin(), v.end());
    -

    -In addition, some parallel algorithm variants can be enabled/disabled/selected -at compile-time. +Some parallel algorithm variants can be excluded from compilation by +preprocessor defines. See the doxygen documentation on +compiletime_settings.h and features.h for details.

    -See compiletime_settings.h and -See features.h for details. +For some algorithms, the desired variant can be chosen at compile-time by +appending a tag object. The available options are specific to the particular +algorithm (class). +

    +For the "embarrassingly parallel" algorithms, there is only one "tag object +type", the enum _Parallelism. +It takes one of the following values, +__gnu_parallel::parallel_tag, +__gnu_parallel::balanced_tag, +__gnu_parallel::unbalanced_tag, +__gnu_parallel::omp_loop_tag, +__gnu_parallel::omp_loop_static_tag. +This means that the actual parallelization strategy is chosen at run-time. +(Choosing the variants at compile-time will come soon.) +

    +For the following algorithms in general, we have +__gnu_parallel::parallel_tag and +__gnu_parallel::default_parallel_tag, in addition to +__gnu_parallel::sequential_tag. +__gnu_parallel::default_parallel_tag chooses the default +algorithm at compiletime, as does omitting the tag. +__gnu_parallel::parallel_tag postpones the decision to runtime +(see next section). +For all tags, the number of threads desired for this call can optionally be +passed to the respective tag's constructor. +

    +The multiway_merge algorithm comes with the additional choices, +__gnu_parallel::exact_tag and +__gnu_parallel::sampling_tag. +Exact and sampling are the two available splitting strategies. +

    +For the sort and stable_sort algorithms, there are +several additional choices, namely +__gnu_parallel::multiway_mergesort_tag, +__gnu_parallel::multiway_mergesort_exact_tag, +__gnu_parallel::multiway_mergesort_sampling_tag, +__gnu_parallel::quicksort_tag, and +__gnu_parallel::balanced_quicksort_tag. +Multiway mergesort comes with the two splitting strategies for multi-way +merging. The quicksort options cannot be used for stable_sort.

    Run Time Settings and Defaults

    The default parallelization strategy, the choice of specific algorithm strategy, the minimum threshold limits for individual parallel @@ -112,16 +134,15 @@ desired via manipulation of __gnu_parallel::_Settings member data.

    First off, the choice of parallelization strategy: serial, parallel, -or implementation-deduced. This corresponds +or heuristically deduced. This corresponds to __gnu_parallel::_Settings::algorithm_strategy and is a value of enum __gnu_parallel::_AlgorithmStrategy type. Choices include: heuristic, force_sequential, -and force_parallel. The default is -implementation-deduced, i.e. heuristic. +and force_parallel. The default is heuristic.

    -Next, the sub-choices for algorithm implementation. Specific -algorithms like find or sort +Next, the sub-choices for algorithm variant, if not fixed at compile-time. +Specific algorithms like find or sort can be implemented in multiple ways: when this is the case, a __gnu_parallel::_Settings member exists to pick the default strategy. For @@ -140,14 +161,22 @@ active __gnu_parallel::_Settings object. This threshold variable follows the following naming scheme: __gnu_parallel::_Settings::[algorithm]_minimal_n. So, for fill, the threshold variable -is __gnu_parallel::_Settings::fill_minimal_n +is __gnu_parallel::_Settings::fill_minimal_n,

    Finally, hardware details like L1/L2 cache size can be hardwired via __gnu_parallel::_Settings::L1_cache_size and friends.

    +

    All these configuration variables can be changed by the user, if -desired. Please -see settings.h +desired. +There exists one global instance of the class _Settings, +i. e. it is a singleton. It can be read and written by calling +__gnu_parallel::_Settings::get and +__gnu_parallel::_Settings::set, respectively. +Please note that the first call return a const object, so direct manipulation +is forbidden. +See + settings.h for complete details.

    A small example of tuning the default: diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html b/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html index 2e4aee7..6fd675d 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12ch40s02.html @@ -12,8 +12,11 @@ missing reference to __sync_fetch_and_add_4.) conditionally, via the -march command line flag. This makes usage vary depending on the target hardware and the flags used during compile. -

    If builtins are possible, _GLIBCXX_ATOMIC_BUILTINS -will be defined. +

    +If builtins are possible for bool-sized integral types, +_GLIBCXX_ATOMIC_BUILTINS_1 will be defined. +If builtins are possible for int-sized integral types, +_GLIBCXX_ATOMIC_BUILTINS_4 will be defined.

    For the following hosts, intrinsics are enabled by default.

    • alpha

    • ia64

    • powerpc

    • s390

    For others, some form of -march may work. On non-ancient x86 hardware, -march=native usually does the diff --git a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html index 589c107..e813ee2 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt12pr03.html @@ -1,6 +1,6 @@ -

    +

    Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from SGI's STL, some of these are GNU's, and some just seemed to appear on the doorstep. diff --git a/libstdc++-v3/doc/html/manual/codecvt.html b/libstdc++-v3/doc/html/manual/codecvt.html index 3af9d23..a6a66b4 100644 --- a/libstdc++-v3/doc/html/manual/codecvt.html +++ b/libstdc++-v3/doc/html/manual/codecvt.html @@ -337,41 +337,41 @@ codecvt usage.

  • wchar_t/char internal buffers and conversions between internal/external buffers? -

  • Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) . Copyright © 1999 The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    A brief description of Normative Addendum 1 . Clive Feather. Extended Character Sets. - .

    + .

    The Unicode HOWTO . Bruno Haible. - .

    + .

    UTF-8 and Unicode FAQ for Unix/Linux . Markus Khun. diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html index 9dd254e..a975621 100644 --- a/libstdc++-v3/doc/html/manual/debug.html +++ b/libstdc++-v3/doc/html/manual/debug.html @@ -1,6 +1,6 @@ -Debugging Support

    Debugging Support

    +Debugging Support

    Debugging Support

    There are numerous things that can be done to improve the ease with which C++ binaries are debugged when using the GNU tool chain. Here are some of them. @@ -145,4 +145,4 @@ has compile and run-time checks for many containers.

    Compile Time Checking

    The Compile-Time Checks Extension has compile-time checks for many algorithms. -

    +

    diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index c4f6ac8..3b7cf34 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -1,3 +1,3 @@ -Part XII. Extensions +Part XII. Extensions diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html index 50287fb..9020ed8 100644 --- a/libstdc++-v3/doc/html/manual/intro.html +++ b/libstdc++-v3/doc/html/manual/intro.html @@ -1,3 +1,3 @@ -Part I. Introduction +Part I. Introduction diff --git a/libstdc++-v3/doc/html/manual/messages.html b/libstdc++-v3/doc/html/manual/messages.html index e2ca0d2..16f373c 100644 --- a/libstdc++-v3/doc/html/manual/messages.html +++ b/libstdc++-v3/doc/html/manual/messages.html @@ -241,38 +241,38 @@ void test01() model. As of this writing, it is unknown how to query to see if a specified message catalog exists using the gettext package. -

    Bibliography

    +

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization - .

    + .

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) . Copyright © 1999 The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    Java 2 Platform, Standard Edition, v 1.3.1 API Specification . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle. - .

    + .

    GNU gettext tools, version 0.10.38, Native Language Support Library and Tools. . diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index 17c3ead..6ee676c 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -1,6 +1,6 @@ -Chapter 31. Parallel Mode

    Chapter 31. Parallel Mode

    The libstdc++ parallel mode is an experimental parallel +Chapter 31. Parallel Mode

    Chapter 31. Parallel Mode

    The libstdc++ parallel mode is an experimental parallel implementation of many algorithms the C++ Standard Library.

    Several of the standard algorithms, for instance @@ -10,11 +10,11 @@ explicit source declaration or by compiling existing sources with a specific compiler flag.

    Intro

    The following library components in the include numeric are included in the parallel mode:

    • std::accumulate

    • std::adjacent_difference

    • std::inner_product

    • std::partial_sum

    The following library components in the include -algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    +algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) - .

    + .

    The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) diff --git a/libstdc++-v3/doc/html/manual/shared_ptr.html b/libstdc++-v3/doc/html/manual/shared_ptr.html index c5aed38..9bb3114 100644 --- a/libstdc++-v3/doc/html/manual/shared_ptr.html +++ b/libstdc++-v3/doc/html/manual/shared_ptr.html @@ -29,7 +29,7 @@ drops to zero. Derived classes override those functions to destroy resources in a context where the correct dynamic type is known. This is an application of the technique known as type erasure. -

    Implementation

    Class Hierarchy

    +

    Implementation

    Class Hierarchy

    A shared_ptr<T> contains a pointer of type T* and an object of type __shared_count. The shared_count contains a @@ -71,7 +71,7 @@ be forwarded to Tp's constructor. Unlike the other _Sp_counted_* classes, this one is parameterized on the type of object, not the type of pointer; this is purely a convenience that simplifies the implementation slightly. -

    Thread Safety

    +

    Thread Safety

    The interface of tr1::shared_ptr was extended for C++0x with support for rvalue-references and the other features from N2351. As with other libstdc++ headers shared by TR1 and C++0x, @@ -129,7 +129,7 @@ compiler, standard library, platform etc. For the version of shared_ptr in libstdc++ the compiler and library are fixed, which makes things much simpler: we have an atomic CAS or we don't, see Lock Policy below for details. -

    Selecting Lock Policy

    +

    Selecting Lock Policy

    There is a single _Sp_counted_base class, which is a template parameterized on the enum @@ -170,7 +170,7 @@ used when libstdc++ is built without --enable-threadsext/atomicity.h, which detect if the program is multi-threaded. If only one thread of execution exists in the program then less expensive non-atomic operations are used. -

    Dual C++0x and TR1 Implementation

    +

    Dual C++0x and TR1 Implementation

    The classes derived from _Sp_counted_base (see Class Hierarchy below) and __shared_count are implemented separately for C++0x and TR1, in bits/boost_sp_shared_count.h and @@ -181,7 +181,7 @@ The TR1 implementation is considered relatively stable, so is unlikely to change unless bug fixes require it. If the code that is common to both C++0x and TR1 modes needs to diverge further then it might be necessary to duplicate additional classes and only make changes to the C++0x versions. -

    Related functions and classes

    dynamic_pointer_cast, static_pointer_cast, +

    Related functions and classes

    dynamic_pointer_cast, static_pointer_cast, const_pointer_cast

    As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available @@ -214,10 +214,10 @@ is called. Users should not try to use this. As well as the extra constructors, this implementation also needs some members of _Sp_counted_deleter to be protected where they could otherwise be private. -

    Use

    Examples

    +

    Use

    Examples

    Examples of use can be found in the testsuite, under testsuite/tr1/2_general_utilities/shared_ptr. -

    Unresolved Issues

    +

    Unresolved Issues

    The resolution to C++ Standard Library issue 674, "shared_ptr interface changes for consistency with N1856" will need to be implemented after it is accepted into the working @@ -265,7 +265,7 @@ be private. code to work with, Peter Dimov in particular for his help and invaluable advice on thread safety. Phillip Jordan and Paolo Carlini for the lock policy implementation. -

    Bibliography

    [ +

    Bibliography

    [ n2351 ] Improving shared_ptr for C++0x, Revision 2 @@ -274,7 +274,7 @@ be private. . - .

    [ + .

    [ n2456 ] C++ Standard Library Active Issues List (Revision R52) @@ -283,7 +283,7 @@ be private. . - .

    [ + .

    [ n2461 ] Working Draft, Standard for Programming Language C++ @@ -292,7 +292,7 @@ be private. . - .

    [ + .

    [ boostshared_ptr ] Boost C++ Libraries documentation - shared_ptr class template diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html index 0a0b3d7..8e79dbc 100644 --- a/libstdc++-v3/doc/html/manual/spine.html +++ b/libstdc++-v3/doc/html/manual/spine.html @@ -2,6 +2,6 @@ The GNU C++ Library

    The GNU C++ Library

    +


    Table of Contents

    I. Introduction
    1. Status
    Implementation Status
    C++ 1998
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Configure
    Build
    Prerequisites
    Make
    Test
    Organization
    Naming Conventions
    Utilities
    Running the Testsuite
    New Test Cases
    Test Harness Details
    Future
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exception Safety
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. Diagnostics
    7. Exceptions
    Exception Classes
    Adding Data to Exceptions
    Cancellation
    8. Concept Checking
    IV. Utilities
    9. Functors
    10. Pairs
    11. Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Use
    Acknowledgments
    12. Traits
    V. Strings
    13. String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    VI. Localization
    14. Locales
    locale
    Requirements
    Design
    Implementation
    Future
    15. Facets aka Categories
    ctype
    Implementation
    Future
    codecvt
    Requirements
    Design
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Use
    Future
    VII. Containers
    16. Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    17. Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    18. Interacting with C
    Containers vs. Arrays
    VIII. Iterators
    19. Predefined
    Iterators vs. Pointers
    One Past the End
    IX. Algorithms
    20. Mutating
    swap
    Specializations
    X. Numerics
    21. Complex
    complex Processing
    22. Generalized Operations
    23. Interacting with C
    Numerics vs. Arrays
    C99
    XI. Input and Output
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    More Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. Porting and Maintenance
    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    Backwards Compatibility
    First
    Second
    Third
    C. Free Software Needs Free Documentation
    D. GNU General Public License
    Preamble
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    Section 0
    Section 1
    Section 2
    Section 3
    Section 4
    Section 5
    Section 6
    Section 7
    Section 8
    Section 9
    Section 10
    NO WARRANTY Section 11
    Section 12
    How to Apply These Terms to Your New Programs
    E. GNU Free Documentation License
    +


    Table of Contents

    I. Introduction
    1. Status
    Implementation Status
    C++ 1998
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Configure
    Build
    Prerequisites
    Make
    Test
    Organization
    Naming Conventions
    Utilities
    Running the Testsuite
    New Test Cases
    Test Harness Details
    Future
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. Diagnostics
    7. Exceptions
    Exception Classes
    Adding Data to Exceptions
    Cancellation
    8. Concept Checking
    IV. Utilities
    9. Functors
    10. Pairs
    11. Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Use
    Acknowledgments
    12. Traits
    V. Strings
    13. String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    VI. Localization
    14. Locales
    locale
    Requirements
    Design
    Implementation
    Future
    15. Facets aka Categories
    ctype
    Implementation
    Future
    codecvt
    Requirements
    Design
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Use
    Future
    VII. Containers
    16. Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    17. Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    18. Interacting with C
    Containers vs. Arrays
    VIII. Iterators
    19. Predefined
    Iterators vs. Pointers
    One Past the End
    IX. Algorithms
    20. Mutating
    swap
    Specializations
    X. Numerics
    21. Complex
    complex Processing
    22. Generalized Operations
    23. Interacting with C
    Numerics vs. Arrays
    C99
    XI. Input and Output
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    More Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. Porting and Maintenance
    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    Backwards Compatibility
    First
    Second
    Third
    C. Free Software Needs Free Documentation
    D. GNU General Public License
    Preamble
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    Section 0
    Section 1
    Section 2
    Section 3
    Section 4
    Section 5
    Section 6
    Section 7
    Section 8
    Section 9
    Section 10
    NO WARRANTY Section 11
    Section 12
    How to Apply These Terms to Your New Programs
    E. GNU Free Documentation License
    diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index 140e063..72213ba 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -69,8 +69,7 @@ util Files for libtestc++, utilities and testing routines.

    All new tests should be written with the policy of one test case, one file in mind. -

    Naming Conventions

    -

    +

    Naming Conventions

    In addition, there are some special names and suffixes that are used within the testsuite to designate particular kinds of tests. diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index e1b5ad7..8ad8311 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -1,6 +1,6 @@ -Chapter 3. Using

    Chapter 3. Using

    Linking Library Binary Files

    +Chapter 3. Using

    Chapter 3. Using

    Linking Library Binary Files

    If you only built a static library (libstdc++.a), or if you specified static linking, you don't have to worry about this. But if you built a shared library (libstdc++.so) and linked diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html index e6812da..87cbe66 100644 --- a/libstdc++-v3/doc/html/spine.html +++ b/libstdc++-v3/doc/html/spine.html @@ -2,4 +2,4 @@ The GNU C++ Library Documentation

    The GNU C++ Library Documentation

    Paolo Carlini

    Phil Edwards

    Doug Gregor

    Benjamin Kosnik

    Dhruv Matani

    Jason Merrill

    Mark Mitchell

    Nathan Myers

    Felix Natter

    Stefan Olsson

    Johannes Singler

    Ami Tavory

    Jonathan Wakely


    Table of Contents

    The GNU C++ Library
    I. Introduction
    1. Status
    Implementation Status
    C++ 1998
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Configure
    Build
    Prerequisites
    Make
    Test
    Organization
    Naming Conventions
    Utilities
    Running the Testsuite
    New Test Cases
    Test Harness Details
    Future
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exception Safety
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. Diagnostics
    7. Exceptions
    Exception Classes
    Adding Data to Exceptions
    Cancellation
    8. Concept Checking
    IV. Utilities
    9. Functors
    10. Pairs
    11. Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Use
    Acknowledgments
    12. Traits
    V. Strings
    13. String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    VI. Localization
    14. Locales
    locale
    Requirements
    Design
    Implementation
    Future
    15. Facets aka Categories
    ctype
    Implementation
    Future
    codecvt
    Requirements
    Design
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Use
    Future
    VII. Containers
    16. Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    17. Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    18. Interacting with C
    Containers vs. Arrays
    VIII. Iterators
    19. Predefined
    Iterators vs. Pointers
    One Past the End
    IX. Algorithms
    20. Mutating
    swap
    Specializations
    X. Numerics
    21. Complex
    complex Processing
    22. Generalized Operations
    23. Interacting with C
    Numerics vs. Arrays
    C99
    XI. Input and Output
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    More Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. Porting and Maintenance
    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    Backwards Compatibility
    First
    Second
    Third
    C. Free Software Needs Free Documentation
    D. GNU General Public License
    Preamble
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    Section 0
    Section 1
    Section 2
    Section 3
    Section 4
    Section 5
    Section 6
    Section 7
    Section 8
    Section 9
    Section 10
    NO WARRANTY Section 11
    Section 12
    How to Apply These Terms to Your New Programs
    E. GNU Free Documentation License
    API and Source Level Documentation
    Frequently Asked Questions
    +


    Table of Contents

    The GNU C++ Library
    I. Introduction
    1. Status
    Implementation Status
    C++ 1998
    C++ TR1
    C++ 200x
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Configure
    Build
    Prerequisites
    Make
    Test
    Organization
    Naming Conventions
    Utilities
    Running the Testsuite
    New Test Cases
    Test Harness Details
    Future
    3. Using
    Linking Library Binary Files
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Macros
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Containers
    Exceptions
    Propagating Exceptions aka Exception Neutrality
    Exception Safety
    Support for -fno-exceptions
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    II. Support
    4. Types
    Fundamental Types
    Numeric Properties
    NULL
    5. Dynamic Memory
    6. Termination
    Termination Handlers
    Verbose Terminate Handler
    III. Diagnostics
    7. Exceptions
    Exception Classes
    Adding Data to Exceptions
    Cancellation
    8. Concept Checking
    IV. Utilities
    9. Functors
    10. Pairs
    11. Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Use
    Acknowledgments
    12. Traits
    V. Strings
    13. String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    VI. Localization
    14. Locales
    locale
    Requirements
    Design
    Implementation
    Future
    15. Facets aka Categories
    ctype
    Implementation
    Future
    codecvt
    Requirements
    Design
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Use
    Future
    VII. Containers
    16. Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    17. Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    18. Interacting with C
    Containers vs. Arrays
    VIII. Iterators
    19. Predefined
    Iterators vs. Pointers
    One Past the End
    IX. Algorithms
    20. Mutating
    swap
    Specializations
    X. Numerics
    21. Complex
    complex Processing
    22. Generalized Operations
    23. Interacting with C
    Numerics vs. Arrays
    C99
    XI. Input and Output
    24. Iostream Objects
    25. Stream Buffers
    Derived streambuf Classes
    Buffering
    26. Memory Based Streams
    Compatibility With strstream
    27. File Based Streams
    Copying a File
    Binary Input and Output
    More Binary Input and Output
    28. Interacting with C
    Using FILE* and file descriptors
    Performance
    XII. Extensions
    29. Compile Time Checks
    30. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    Other Implementations
    31. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Implementation Namespaces
    Testing
    Bibliography
    32. Allocators
    mt_allocator
    Intro
    Design Issues
    Implementation
    Single Thread Example
    Multiple Thread Example
    bitmap_allocator
    Design
    Implementation
    33. Containers
    Policy Based Data Structures
    HP/SGI
    Deprecated HP/SGI
    34. Utilities
    35. Algorithms
    36. Numerics
    37. Iterators
    38. Input and Output
    Derived filebufs
    39. Demangling
    40. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    A. Contributing
    Contributor Checklist
    Reading
    Assignment
    Getting Sources
    Submitting Patches
    Directory Layout and Source Conventions
    Coding Style
    Bad Identifiers
    By Example
    Documentation Style
    Doxygen
    Docbook
    Design Notes
    B. Porting and Maintenance
    Configure and Build Hacking
    Prerequisites
    Overview: What Comes from Where
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    ABI Policy and Guidelines
    The C++ Interface
    Versioning
    Allowed Changes
    Prohibited Changes
    Implementation
    Testing
    Outstanding Issues
    API Evolution and Deprecation History
    3.0
    3.1
    3.2
    3.3
    3.4
    4.0
    4.1
    4.2
    4.3
    Backwards Compatibility
    First
    Second
    Third
    C. Free Software Needs Free Documentation
    D. GNU General Public License
    Preamble
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    Section 0
    Section 1
    Section 2
    Section 3
    Section 4
    Section 5
    Section 6
    Section 7
    Section 8
    Section 9
    Section 10
    NO WARRANTY Section 11
    Section 12
    How to Apply These Terms to Your New Programs
    E. GNU Free Documentation License
    API and Source Level Documentation
    Frequently Asked Questions
    diff --git a/libstdc++-v3/doc/xml/manual/parallel_mode.xml b/libstdc++-v3/doc/xml/manual/parallel_mode.xml index faea5a9..7cb2a05 100644 --- a/libstdc++-v3/doc/xml/manual/parallel_mode.xml +++ b/libstdc++-v3/doc/xml/manual/parallel_mode.xml @@ -105,18 +105,45 @@ It might work with other compilers, though. Using + + Prerequisite Compiler Flags + + + Any use of parallel functionality requires additional compiler + and runtime support, in particular support for OpenMP. Adding this support is + not difficult: just compile your application with the compiler + flag -fopenmp. This will link + in libgomp, the GNU + OpenMP implementation, + whose presence is mandatory. + + + +In addition, hardware that supports atomic operations and a compiler + capable of producing atomic operations is mandatory: GCC defaults to no + support for atomic operations on some common hardware + architectures. Activating atomic operations may require explicit + compiler flags on some targets (like sparc and x86), such + as -march=i686, + -march=native or -mcpu=v9. See + the GCC manual for more information. + + + + Using Parallel Mode To use the libstdc++ parallel mode, compile your application with - the compiler flag -D_GLIBCXX_PARALLEL -fopenmp. This - will link in libgomp, the GNU OpenMP implementation, - whose presence is mandatory. In addition, hardware capable of atomic - operations is mandatory. Actually activating these atomic - operations may require explicit compiler flags on some targets - (like sparc and x86), such as -march=i686, - -march=native or -mcpu=v9. + the prerequisite flags as detailed above, and in addition + add -D_GLIBCXX_PARALLEL. This will convert all + use of the standard (sequential) algorithms to the appropriate parallel + equivalents. Please note that this doesn't necessarily mean that + everything will end up being executed in a parallel manner, but + rather that the heuristics and settings coded into the parallel + versions will be used to determine if all, some, or no algorithms + will be executed using parallel variants. Note that the _GLIBCXX_PARALLEL define may change the @@ -129,7 +156,7 @@ It might work with other compilers, though. - + Using Specific Parallel Components When it is not feasible to recompile your entire application, or @@ -138,9 +165,38 @@ It might work with other compilers, though. parallel algorithms are functionally equivalent to the standard drop-in algorithms used in parallel mode, but they are available in a separate namespace as GNU extensions and may be used in programs - compiled with either release mode or with parallel mode. The - following table provides the names and headers of the parallel - algorithms: + compiled with either release mode or with parallel mode. + + + +An example of using a parallel version +of std::sort, but no other parallel algorithms, is: + + + +#include <vector> +#include <parallel/algorithm> + +int main() +{ + std::vector<int> v(100); + + // ... + + // Explicitly force a call to parallel sort. + __gnu_parallel::sort(v.begin(), v.end()); + return 0; +} + + + +Then compile this code with the prerequisite compiler flags +(-fopenmp and any necessary architecture-specific +flags for atomic operations.) + + + The following table provides the names and headers of all the + parallel algorithms that can be used in a similar manner: @@ -416,7 +472,6 @@ It might work with other compilers, though. Interface Basics - All parallel algorithms are intended to have signatures that are equivalent to the ISO C++ algorithms replaced. For instance, the diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml index f9abbfd..58eaf98 100644 --- a/libstdc++-v3/doc/xml/manual/test.xml +++ b/libstdc++-v3/doc/xml/manual/test.xml @@ -113,8 +113,6 @@ util Files for libtestc++, utilities and testing routines. Naming Conventions - - In addition, there are some special names and suffixes that are diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml index 861058d..00d9f56 100644 --- a/libstdc++-v3/doc/xml/manual/using.xml +++ b/libstdc++-v3/doc/xml/manual/using.xml @@ -1015,18 +1015,24 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) Exceptions - + Propagating Exceptions aka Exception Neutrality + + Exception Safety + + - + Support for <literal>-fno-exceptions</literal> + + -- 2.7.4