From 109a3af40faf2fe7b93cefcdca45029714fe800d Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 9 Jun 2014 15:47:17 +0100 Subject: [PATCH] Makefile.am: Add missing file. * doc/Makefile.am: Add missing file. Use generate.consistent.ids parameter for DocBook HTML generation. * doc/Makefile.in: Regenerate. * doc/doxygen/user.cfg.in: Unset DOT_FONTNAME. * doc/xml/faq.xml: Update content and improve formatting. * doc/xml/manual/abi.xml: Add stable ID attribute and fix links. * doc/xml/manual/allocator.xml: Add stable ID attribute. * doc/xml/manual/bitmap_allocator.xml: Likewise. * doc/xml/manual/build_hacking.xml: Likewise. * doc/xml/manual/codecvt.xml: Change URL. * doc/xml/manual/ctype.xml: Add stable ID attribute. * doc/xml/manual/debug_mode.xml: Likewise. * doc/xml/manual/documentation_hacking.xml: Likewise. * doc/xml/manual/evolution.xml: Likewise. * doc/xml/manual/extensions.xml: Likewise. * doc/xml/manual/locale.xml: Likewise. * doc/xml/manual/messages.xml: Make section id consistent, improve markup, change URL. * doc/xml/manual/parallel_mode.xml: Add stable ID attributes. * doc/xml/manual/profile_mode.xml: Likewise. * doc/xml/manual/shared_ptr.xml: Likewise. Also remove old info. * doc/xml/manual/status_cxx1998.xml: Add stable ID attributes. * doc/xml/manual/status_cxx2011.xml: Likewise. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxxtr1.xml: Likewise. * doc/xml/manual/status_cxxtr24733.xml: Likewise. * doc/xml/manual/using.xml: Likewise. * doc/html/*: Regenerate. From-SVN: r211376 --- libstdc++-v3/ChangeLog | 31 +++ libstdc++-v3/doc/Makefile.am | 3 +- libstdc++-v3/doc/Makefile.in | 3 +- libstdc++-v3/doc/doxygen/user.cfg.in | 2 +- libstdc++-v3/doc/html/api.html | 2 +- libstdc++-v3/doc/html/faq.html | 252 +++++++++-------- libstdc++-v3/doc/html/index.html | 4 +- libstdc++-v3/doc/html/manual/abi.html | 26 +- libstdc++-v3/doc/html/manual/algorithms.html | 2 +- libstdc++-v3/doc/html/manual/api.html | 4 +- .../html/manual/appendix_contributing.html | 16 +- .../doc/html/manual/appendix_free.html | 2 +- .../doc/html/manual/appendix_gpl.html | 4 +- .../doc/html/manual/appendix_porting.html | 4 +- libstdc++-v3/doc/html/manual/associative.html | 4 +- libstdc++-v3/doc/html/manual/atomics.html | 2 +- libstdc++-v3/doc/html/manual/backwards.html | 10 +- .../html/manual/bitmap_allocator_impl.html | 2 +- libstdc++-v3/doc/html/manual/concurrency.html | 2 +- libstdc++-v3/doc/html/manual/configure.html | 6 +- libstdc++-v3/doc/html/manual/containers.html | 2 +- libstdc++-v3/doc/html/manual/debug.html | 3 +- .../doc/html/manual/debug_mode_using.html | 4 +- libstdc++-v3/doc/html/manual/diagnostics.html | 2 +- .../html/manual/documentation_hacking.html | 47 ++-- .../doc/html/manual/dynamic_memory.html | 6 +- .../doc/html/manual/ext_concurrency_impl.html | 2 +- libstdc++-v3/doc/html/manual/ext_preface.html | 2 +- libstdc++-v3/doc/html/manual/extensions.html | 2 +- libstdc++-v3/doc/html/manual/facets.html | 88 +++--- libstdc++-v3/doc/html/manual/index.html | 20 +- libstdc++-v3/doc/html/manual/intro.html | 2 +- libstdc++-v3/doc/html/manual/io.html | 2 +- libstdc++-v3/doc/html/manual/iterators.html | 2 +- .../doc/html/manual/localization.html | 22 +- libstdc++-v3/doc/html/manual/memory.html | 48 ++-- libstdc++-v3/doc/html/manual/numerics.html | 2 +- .../doc/html/manual/parallel_mode.html | 4 +- .../doc/html/manual/parallel_mode_using.html | 2 +- .../html/manual/policy_data_structures.html | 14 +- .../manual/policy_data_structures_design.html | 66 ++--- .../manual/policy_data_structures_using.html | 2 +- .../doc/html/manual/profile_mode.html | 2 +- .../doc/html/manual/profile_mode_design.html | 2 +- .../html/manual/profile_mode_diagnostics.html | 2 +- libstdc++-v3/doc/html/manual/setup.html | 10 +- libstdc++-v3/doc/html/manual/status.html | 14 +- .../doc/html/manual/std_contents.html | 4 +- libstdc++-v3/doc/html/manual/strings.html | 2 +- libstdc++-v3/doc/html/manual/support.html | 2 +- libstdc++-v3/doc/html/manual/termination.html | 2 +- libstdc++-v3/doc/html/manual/test.html | 2 +- libstdc++-v3/doc/html/manual/using.html | 2 +- .../doc/html/manual/using_exceptions.html | 18 +- .../doc/html/manual/using_headers.html | 12 +- libstdc++-v3/doc/html/manual/utilities.html | 4 +- libstdc++-v3/doc/xml/faq.xml | 258 ++++++++++-------- libstdc++-v3/doc/xml/manual/abi.xml | 10 +- libstdc++-v3/doc/xml/manual/allocator.xml | 6 +- .../doc/xml/manual/bitmap_allocator.xml | 2 +- libstdc++-v3/doc/xml/manual/build_hacking.xml | 2 +- libstdc++-v3/doc/xml/manual/codecvt.xml | 2 +- libstdc++-v3/doc/xml/manual/ctype.xml | 2 +- libstdc++-v3/doc/xml/manual/debug_mode.xml | 4 +- .../doc/xml/manual/documentation_hacking.xml | 10 +- libstdc++-v3/doc/xml/manual/evolution.xml | 4 +- libstdc++-v3/doc/xml/manual/extensions.xml | 2 +- libstdc++-v3/doc/xml/manual/locale.xml | 2 +- libstdc++-v3/doc/xml/manual/messages.xml | 32 +-- libstdc++-v3/doc/xml/manual/parallel_mode.xml | 2 +- libstdc++-v3/doc/xml/manual/profile_mode.xml | 4 +- libstdc++-v3/doc/xml/manual/shared_ptr.xml | 20 +- .../doc/xml/manual/status_cxx1998.xml | 2 +- .../doc/xml/manual/status_cxx2011.xml | 2 +- .../doc/xml/manual/status_cxx2014.xml | 4 +- libstdc++-v3/doc/xml/manual/status_cxxtr1.xml | 2 +- .../doc/xml/manual/status_cxxtr24733.xml | 2 +- libstdc++-v3/doc/xml/manual/using.xml | 26 +- 78 files changed, 640 insertions(+), 563 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4670d0022a5..0ea3bb970fd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,34 @@ +2014-06-09 Jonathan Wakely + + * doc/Makefile.am: Add missing file. Use generate.consistent.ids + parameter for DocBook HTML generation. + * doc/Makefile.in: Regenerate. + * doc/doxygen/user.cfg.in: Unset DOT_FONTNAME. + * doc/xml/faq.xml: Update content and improve formatting. + * doc/xml/manual/abi.xml: Add stable ID attribute and fix links. + * doc/xml/manual/allocator.xml: Add stable ID attribute. + * doc/xml/manual/bitmap_allocator.xml: Likewise. + * doc/xml/manual/build_hacking.xml: Likewise. + * doc/xml/manual/codecvt.xml: Change URL. + * doc/xml/manual/ctype.xml: Add stable ID attribute. + * doc/xml/manual/debug_mode.xml: Likewise. + * doc/xml/manual/documentation_hacking.xml: Likewise. + * doc/xml/manual/evolution.xml: Likewise. + * doc/xml/manual/extensions.xml: Likewise. + * doc/xml/manual/locale.xml: Likewise. + * doc/xml/manual/messages.xml: Make section id consistent, improve + markup, change URL. + * doc/xml/manual/parallel_mode.xml: Add stable ID attributes. + * doc/xml/manual/profile_mode.xml: Likewise. + * doc/xml/manual/shared_ptr.xml: Likewise. Also remove old info. + * doc/xml/manual/status_cxx1998.xml: Add stable ID attributes. + * doc/xml/manual/status_cxx2011.xml: Likewise. + * doc/xml/manual/status_cxx2014.xml: Likewise. + * doc/xml/manual/status_cxxtr1.xml: Likewise. + * doc/xml/manual/status_cxxtr24733.xml: Likewise. + * doc/xml/manual/using.xml: Likewise. + * doc/html/*: Regenerate. + 2014-06-09 Jonathan Wakely * include/tr1/beta_function.tcc: Fix spelling of include guard in diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am index b21e9390944..0838043c56f 100644 --- a/libstdc++-v3/doc/Makefile.am +++ b/libstdc++-v3/doc/Makefile.am @@ -339,6 +339,7 @@ xml_sources_manual = \ ${xml_dir}/manual/spine.xml \ ${xml_dir}/manual/status_cxx1998.xml \ ${xml_dir}/manual/status_cxx2011.xml \ + ${xml_dir}/manual/status_cxx2014.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ @@ -462,7 +463,7 @@ xml_noinst = \ XSLTPROC = xsltproc XSLT_FLAGS = --nonet --xinclude -XSLT_PARAM = --param toc.section.depth 4 +XSLT_PARAM = --param toc.section.depth 4 --param generate.consistent.ids 1 #XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns #XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 04e0d7d97f0..85f6e3f3031 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -405,6 +405,7 @@ xml_sources_manual = \ ${xml_dir}/manual/spine.xml \ ${xml_dir}/manual/status_cxx1998.xml \ ${xml_dir}/manual/status_cxx2011.xml \ + ${xml_dir}/manual/status_cxx2014.xml \ ${xml_dir}/manual/status_cxxtr1.xml \ ${xml_dir}/manual/status_cxxtr24733.xml \ ${xml_dir}/manual/strings.xml \ @@ -526,7 +527,7 @@ xml_noinst = \ ${xml_image_dir}/confdeps.pdf XSLT_FLAGS = --nonet --xinclude -XSLT_PARAM = --param toc.section.depth 4 +XSLT_PARAM = --param toc.section.depth 4 --param generate.consistent.ids 1 #XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns #XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in index c2ac1362dcc..26395d6384e 100644 --- a/libstdc++-v3/doc/doxygen/user.cfg.in +++ b/libstdc++-v3/doc/doxygen/user.cfg.in @@ -2282,7 +2282,7 @@ DOT_NUM_THREADS = 0 # The default value is: Helvetica. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = FreeSans +DOT_FONTNAME = # The DOT_FONTSIZE tag can be used to set the size (in points) of the font of # dot graphs. diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index ce28ec91dca..d6ff4ad4412 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -6,7 +6,7 @@ FSF -

+


diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 81b295f036f..cac00d292b8 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -1,9 +1,9 @@ Frequently Asked Questions

Frequently Asked Questions


1.1. +


1.1. What is libstdc++?
1.2. Why should I use libstdc++? @@ -109,50 +109,49 @@

The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in - clauses 17 through 27 and annex D. For those who want to see + clauses 17 through 30 and annex D. For those who want to see exactly how far the project has come, or just want the latest bleeding-edge code, the up-to-date source is available over - anonymous SVN, and can even be browsed over - the web. + anonymous SVN, and can be browsed over + the web.

1.2.

Why should I use libstdc++?

- The completion of the ISO C++ standardization gave the C++ + The completion of the initial ISO C++ standardization effort gave the C++ community a powerful set of reuseable tools in the form of the C++ - Standard Library. However, all existing C++ implementations are + Standard Library. However, for several years C++ implementations were (as the Draft Standard used to say) incomplet and - incorrekt, and many suffer from limitations of the compilers - that use them. + incorrekt”, and many suffered from limitations of the compilers + that used them.

The GNU compiler collection (gcc, g++, etc) is widely considered to be one of the leading compilers in the world. Its development is overseen by the - GCC team. All of + GCC team. All of the rapid development and near-legendary - portability - that are the hallmarks of an open-source project are being - applied to libstdc++. + portability + that are the hallmarks of an open-source project are applied to libstdc++.

- That means that all of the Standard classes and functions will be - freely available and fully compliant. (Such as - string, - vector<>, iostreams, and algorithms.) - Programmers will no longer need to roll their own - nor be worried about platform-specific incompatibilities. + All of the standard classes and functions from C++98/C++03 + (such as string, + vector<>, iostreams, algorithms etc.) + are freely available and atempt to be fully compliant. + Work is ongoing to complete support for the current revision of the + ISO C++ Standard.

1.3.

Who's in charge of it?

The libstdc++ project is contributed to by several developers all over the world, in the same way as GCC or the Linux kernel. - Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper, - Loren James Rittle, and Paolo Carlini are the lead maintainers of - the SVN archive. + The current maintainers are listed in the + MAINTAINERS + file (look for "c++ runtime libs").

Development and discussion is held on the libstdc++ mailing list. Subscribing to the list, or searching the list archives, is open to everyone. You can read instructions for - doing so on the homepage. + doing so on the GCC mailing lists page. If you have questions, ideas, code, or are just curious, sign up!

1.4.

When is libstdc++ going to be finished? @@ -163,8 +162,8 @@

1.5.

How do I contribute to the effort?

- Here is a page devoted to - this topic. Subscribing to the mailing list (see above, or + See the Contributing section in + the manual. Subscribing to the mailing list (see above, or the homepage) is a very good idea if you have something to contribute, or if you have spare time and want to help. Contributions don't have to be in the form of source code; @@ -174,15 +173,19 @@

1.6.

What happened to the older libg++? I need that!

- The most recent libg++ README states that libg++ is no longer - being actively maintained. It should not be used for new - projects, and is only being kicked along to support older code. + The last libg++ README states + This package is considered obsolete and is no longer + being developed. + It should not be used for new projects, and won't even compile with + recent releases of GCC (or most other C++ compilers).

- More information in the backwards compatibility documentation + More information can be found in the + Backwards + Compatibility section of the libstdc++ manual.

1.7.

What if I have more questions?

- If you have read the README file, and your question remains + If you have read the documentation, and your question remains unanswered, then just ask the mailing list. At present, you do not need to be subscribed to the list to send a message to it. More information is available on the homepage (including how to browse @@ -250,7 +253,7 @@

Libstdc++ sources for all official releases can be obtained as part of the GCC sources, available from various sites and - mirrors. A full list of + mirrors. A full list of download sites is provided on the main GCC site.

Current libstdc++ sources can always be checked out of the main @@ -269,7 +272,7 @@ the latest libstdc++ sources.

For more information - see SVN + see SVN details.

3.3.

How do I know if it works?

@@ -277,7 +280,9 @@ conformance testing, regression testing, ABI testing, and performance testing. Please consult the testing - documentation for more details. + documentation for GCC and + Test in the libstdc++ + manual for more details.

If you find bugs in the testsuite programs themselves, or if you think of a new test program that should be added to the suite, @@ -312,22 +317,22 @@ how to find the newer libstdc++ shared library.

The simplest way to fix this is - to use the LD_LIBRARY_PATH environment variable, + to use the LD_LIBRARY_PATH environment variable, which is a colon-separated list of directories in which the linker will search for shared libraries: -

-    LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
-    export LD_LIBRARY_PATH
-    

- Here the shell variable ${prefix} is assumed to contain +


+    export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
+    

+ Here the shell variable ${prefix} is assumed to contain the directory prefix where GCC was installed to. The directory containing the library might depend on whether you want the 32-bit or 64-bit copy of the library, so for example would be ${prefix}/lib64 on some systems. The exact environment variable to use will depend on your - platform, e.g. DYLD_LIBRARY_PATH for Darwin, - LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit - and SHLIB_PATH for HP-UX. + platform, e.g. DYLD_LIBRARY_PATH for Darwin, + LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 + for Solaris 32-/64-bit, + and SHLIB_PATH for HP-UX.

See the man pages for ld, ldd and ldconfig for more information. The dynamic @@ -335,7 +340,8 @@ is usually called something such as ld.so, rtld or dld.so.

- Using LD_LIBRARY_PATH is not always the best solution, Finding Dynamic or Shared + Using LD_LIBRARY_PATH is not always the best solution, + Finding Dynamic or Shared Libraries in the manual gives some alternatives.

3.5.

What's libsupc++? @@ -348,7 +354,7 @@ libsupc++.a, which is a subset of libstdc++.a. (Using gcc instead of g++ and explicitly linking in - libsupc++.a via -lsupc++ + libsupc++.a via -lsupc++ for the final link step will do it). This library contains only those support routines, one per object file. But if you are using anything from the rest of the library, such as IOStreams @@ -366,14 +372,15 @@ or libstdc++ about this; it's just common behavior, given here for background reasons.)

- Some of the object files which make up libstdc++.a are rather large. + Some of the object files which make up + libstdc++.a are rather large. If you create a statically-linked executable with - -static, those large object files are suddenly part + -static, those large object files are suddenly part of your executable. Historically the best way around this was to only place a very few functions (often only a single one) in each source/object file; then extracting a single function is the same - as extracting a single .o file. For libstdc++ this is only - possible to a certain extent; the object files in question contain + as extracting a single .o file. For libstdc++ this + is only possible to a certain extent; the object files in question contain template classes and template functions, pre-instantiated, and splitting those up causes severe maintenance headaches.

@@ -381,8 +388,8 @@ collection in the GNU linker to get a result similar to separating each symbol into a separate source and object files. On these platforms, GNU ld can place each function and variable into its own - section in a .o file. The GNU linker can then perform garbage - collection on unused sections; this reduces the situation to only + section in a .o file. The GNU linker can then perform + garbage collection on unused sections; this reduces the situation to only copying needed functions into the executable, as before, but all happens automatically.

4.1. @@ -411,18 +418,19 @@ usable under any ISO-compliant compiler, at least in theory.

However, the reality is that libstdc++ is targeted and optimized - for GCC/g++. This means that often libstdc++ uses specific, - non-standard features of g++ that are not present in older + for GCC/G++. This means that often libstdc++ uses specific, + non-standard features of G++ that are not present in older versions of proprietary compilers. It may take as much as a year or two after an official release of GCC that contains these features for proprietary tools to support these constructs.

+ Recent versions of libstdc++ are known to work with the Clang compiler. In the near past, specific released versions of libstdc++ have been known to work with versions of the EDG C++ compiler, and vendor-specific proprietary C++ compilers such as the Intel ICC C++ compiler.

4.2.

- No 'long long' type on Solaris? + No 'long long' type on Solaris?

By default we try to support the C99 long long type. This requires that certain functions from your C library be present. @@ -435,12 +443,13 @@ This has been fixed for libstdc++ releases greater than 3.0.3.

4.3.

_XOPEN_SOURCE and _GNU_SOURCE are always defined? -

On Solaris, g++ (but not gcc) always defines the preprocessor - macro _XOPEN_SOURCE. On GNU/Linux, the same happens +

On Solaris, g++ (but not gcc) + always defines the preprocessor macro + _XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This is not an exhaustive list; other macros and other platforms are also affected.)

These macros are typically used in C library headers, guarding new - versions of functions from their older versions. The C++ standard + versions of functions from their older versions. The C++98 standard library includes the C standard library, but it requires the C90 version, which for backwards-compatibility reasons is often not the default for many vendors. @@ -448,12 +457,13 @@ available on certain platforms after certain symbols are defined. Usually the issue involves I/O-related typedefs. In order to ensure correctness, the compiler simply predefines those symbols. -

Note that it's not enough to #define them only when the library is +

Note that it's not enough to #define them only when the library is being built (during installation). Since we don't have an 'export' keyword, much of the library exists as headers, which means that the symbols must also be defined as your programs are parsed and compiled. -

To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in +

To see which symbols are defined, look for + CPLUSPLUS_CPP_SPEC in the gcc config headers for your target (and try changing them to see what happens when building complicated code). You can also run g++ -E -dM - < /dev/null" to display @@ -464,14 +474,13 @@ solution, but nobody yet has contributed the time.

4.4.

Mac OS X ctype.h is broken! How can I fix it? -

This is a long-standing bug in the OS X support. Fortunately, - the patch is quite simple, and well-known. - Here's a - link to the solution. +

Note

This answer is old and probably no longer be relevant.

+ This was a long-standing bug in the OS X support. Fortunately, the + patch + was quite simple, and well-known.

4.5.

Threading is broken on i386? -

-

Support for atomic integer operations is/was broken on i386 +

Note

This answer is old and probably no longer be relevant.

Support for atomic integer operations was broken on i386 platforms. The assembly code accidentally used opcodes that are only available on the i486 and later. So if you configured GCC to target, for example, i386-linux, but actually used the programs @@ -480,7 +489,7 @@

This is fixed in 3.2.2.

4.6.

MIPS atomic operations -

+

Note

This answer is old and probably no longer be relevant.

The atomic locking routines for MIPS targets requires MIPS II and later. A patch went in just after the 3.3 release to make mips* use the generic implementation instead. You can also @@ -493,7 +502,7 @@

When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system C library (glibc) version 2.2.5 which contains necessary bugfixes. - Most GNU/Linux distros make more recent versions available now. + All GNU/Linux distros make more recent versions available now. libstdc++ 4.6.0 and later require glibc 2.3 or later for this localization and formatting code.

The guideline is simple: the more recent the C++ library, the @@ -501,10 +510,10 @@ GCC installation instructions.)

4.8.

Can't use wchar_t/wstring on FreeBSD -

+

Note

This answer is old and probably no longer be relevant.

Older versions of FreeBSD's C library do not have sufficient support for wide character functions, and as a result the - libstdc++ configury decides that wchar_t support should be + libstdc++ configury decides that wchar_t support should be disabled. In addition, the libstdc++ platform checks that enabled wchar_t were quite strict, and not granular enough to detect when the minimal support to @@ -523,7 +532,7 @@

Short answer: Pretty much everything works except for some corner cases. Support for localization - in locale may be incomplete on non-GNU + in locale may be incomplete on some non-GNU platforms. Also dependent on the underlying platform is support for wchar_t and long long specializations, and details of thread support. @@ -543,11 +552,11 @@ place), a public list of the library defects is occasionally published on the WG21 website. - Some of these issues have resulted in code changes in libstdc++. + Many of these issues have resulted in code changes in libstdc++.

If you think you've discovered a new bug that is not listed, please post a message describing your problem to the author of - the library issues list or the Usenet group comp.lang.c++.moderated. + the library issues list.

5.3.

Bugs in the compiler (gcc/g++) and not libstdc++

@@ -587,16 +596,16 @@ Reopening a stream fails

One of the most-reported non-bug reports. Executing a sequence like: -


-    #include <fstream>
-    ...
-    std::fstream  fs(a_file);
-    // .
-    // . do things with fs...
-    // .
-    fs.close();
-    fs.open(a_new_file);
-    

+

+    #include <fstream>
+    ...
+    std::fstream  fs("a_file");
+    // .
+    // . do things with fs...
+    // .
+    fs.close();
+    fs.open("a_new_file");
+    

All operations on the re-opened fs will fail, or at least act very strangely. Yes, they often will, especially if fs reached the EOF state on the previous file. The @@ -613,14 +622,14 @@

6.2.

-Weffc++ complains too much

- Many warnings are emitted when -Weffc++ is used. Making - libstdc++ -Weffc++-clean is not a goal of the project, + Many warnings are emitted when -Weffc++ is used. Making + libstdc++ -Weffc++-clean is not a goal of the project, for a few reasons. Mainly, that option tries to enforce object-oriented programming, while the Standard Library isn't necessarily trying to be OO.

We do, however, try to have libstdc++ sources as clean as possible. If - you see some simple changes that pacify -Weffc++ + you see some simple changes that pacify -Weffc++ without other drawbacks, send us a patch.

6.3.

Ambiguous overloads after including an old-style header @@ -638,24 +647,25 @@ The g++-3 headers are not ours

If you are using headers in - ${prefix}/include/g++-3, or if the installed - library's name looks like libstdc++-2.10.a or - libstdc++-libc6-2.10.so, then you are using the - old libstdc++-v2 library, which is nonstandard and + ${prefix}/include/g++-3, or if + the installed library's name looks like + libstdc++-2.10.a or + libstdc++-libc6-2.10.so, then + you are using the old libstdc++-v2 library, which is non-standard and unmaintained. Do not report problems with -v2 to the -v3 mailing list.

- For GCC versions 3.0 and 3.1 the libstdc++ header files are - installed in ${prefix}/include/g++-v3 (see the - 'v'?). Starting with version 3.2 the headers are installed in - ${prefix}/include/c++/${version} as this prevents - headers from previous versions being found by mistake. + For GCC versions 3.0 and 3.1 the libstdc++ header files are installed in + ${prefix}/include/g++-v3 + (see the 'v'?). Starting with version 3.2 the headers are installed in + ${prefix}/include/c++/${version} + as this prevents headers from previous versions being found by mistake.

6.5.

Errors about *Concept and constraints in the STL

If you see compilation errors containing messages about - foo Concept and something to do with a + foo Concept and something to do with a constraints member function, then most likely you have violated one of the requirements for types used during instantiation of template containers and functions. For @@ -675,23 +685,23 @@ objects, make certain that you are passing the correct options when compiling and linking:


-    // compile your library components
-    g++ -fPIC -c a.cc
-    g++ -fPIC -c b.cc
+    Compile your library components:
+    g++ -fPIC -c a.cc
+    g++ -fPIC -c b.cc
    ...
-    g++ -fPIC -c z.cc
+    g++ -fPIC -c z.cc

-    // create your library
-    g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o
+    Create your library:
+    g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o

-    // link the executable
-    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
+    Link the executable:
+    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
    

6.7.

Memory leaks in containers

A few people have reported that the standard containers appear to leak memory when tested with memory checkers such as - valgrind. + valgrind. Under some configurations the library's allocators keep free memory in a pool for later reuse, rather than returning it to the OS. Although this memory is always reachable by the library and is never @@ -791,8 +801,8 @@ and backwards compatibility documentation.

- The FAQ for SGI's STL (one jump off of their main page) is - still recommended reading. + The FAQ + for SGI's STL is still recommended reading.

7.4.

Extensions and Backward Compatibility

@@ -832,7 +842,7 @@ What's an ABI and why is it so messy?

ABI stands for Application Binary - Interface. Conventionally, it refers to a great + Interface”. Conventionally, it refers to a great mass of details about how arguments are arranged on the call stack and/or in registers, and how various types are arranged and padded in structs. A single CPU design may suffer @@ -849,17 +859,23 @@ Users usually want an ABI to encompass more detail, allowing libraries built with different compilers (or different releases of the same compiler!) to be linked together. For C++, this includes many more - details than for C, and CPU designers (for good reasons elaborated - below) have not stepped up to publish C++ ABIs. The details include - virtual function implementation, struct inheritance layout, name - mangling, and exception handling. Such an ABI has been defined for - GNU C++, and is immediately useful for embedded work relying only on - a free-standing implementation that doesn't include (much - of) the standard library. It is a good basis for the work to come. -

+ details than for C, and most CPU designers (for good reasons elaborated + below) have not stepped up to publish C++ ABIs. Such an ABI has been + defined for the Itanium architecture (see + C++ + ABI for Itanium) and that is used by G++ and other compilers + as the de facto standard ABI on many common architectures (including x86). + G++ can also use the ARM architecture's EABI, for embedded + systems relying only on a free-standing implementation that + doesn't include (much of) the standard library, and the GNU EABI for + hosted implementations on ARM. Those ABIs cover low-level details + such as virtual function implementation, struct inheritance layout, + name mangling, and exception handling. +

A useful C++ ABI must also incorporate many details of the standard library implementation. For a C ABI, the layouts of a few structs - (such as FILE, stat, jmpbuf, and the like) and a few macros suffice. + (such as FILE, stat, jmpbuf, + and the like) and a few macros suffice. For C++, the details include the complete set of names of functions and types used, the offsets of class members and virtual functions, and the actual definitions of all inlines. C++ exposes many more @@ -870,9 +886,9 @@ force breaking the ABI.

There are ways to help isolate library implementation details from the - ABI, but they trade off against speed. Library details used in - inner loops (e.g., getchar) must be exposed and frozen for all - time, but many others may reasonably be kept hidden from user code, + ABI, but they trade off against speed. Library details used in inner + loops (e.g., getchar) must be exposed and frozen for + all time, but many others may reasonably be kept hidden from user code, so they may later be changed. Deciding which, and implementing the decisions, must happen before you can reasonably document a candidate C++ ABI that encompasses the standard library. diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index c75ab2dac83..049e9fb997f 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -34,13 +34,13 @@

Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Unordered Associative
Insertion Hints
Hash Code
Hash Code Caching Policy
Interacting with C
Containers vs. Arrays
10. diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index af4237d1e33..2d60a023a53 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -493,40 +493,40 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. C++ ABI Summary - .

+ .

+ .

+ .

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

+ . Benjamin Kosnik.

Versioning With Namespaces . ISO C++ J16/06-0083 - . Benjamin Kosnik.

+ Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html index a336433a27c..3a04d8360ee 100644 --- a/libstdc++-v3/doc/html/manual/algorithms.html +++ b/libstdc++-v3/doc/html/manual/algorithms.html @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 11.  Algorithms - +

The neatest accomplishment of the algorithms section is that all the work is done via iterators, not containers directly. This means two diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 9dc90a7b9f7..92c407514b4 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -77,11 +77,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.6. 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.6. 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.7. 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.7. 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/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index a4efa23f293..a482fa5b281 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -6,7 +6,7 @@ Appendices  Next


Contributing - +

The GNU C++ Library is part of GCC and follows the same development model, so the general rules for @@ -59,12 +59,14 @@ While not strictly necessary, humoring the maintainers and answering this question would be appreciated.

- Please contact Benjamin Kosnik at - if you are confused - about the assignment or have general licensing questions. When - requesting an assignment form from - , please cc the libstdc++ - maintainer above so that progress can be monitored. + Please contact + Paolo Carlini at + or + Jonathan Wakely at + if you are confused about the assignment or have general licensing + questions. When requesting an assignment form from + , please CC the libstdc++ + maintainers above so that progress can be monitored.

Getting Sources

Getting write access (look for "Write after approval") diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index 66d4dd3bf4a..92b159adcd4 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -6,7 +6,7 @@ Appendices  Next


Free Software Needs Free Documentation - +

The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html index 21a45a9686f..182545d625e 100644 --- a/libstdc++-v3/doc/html/manual/appendix_gpl.html +++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html @@ -77,7 +77,7 @@

The precise terms and conditions for copying, distribution and modification follow. -

+

TERMS AND CONDITIONS

0. Definitions. @@ -618,7 +618,7 @@ waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. -

+

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index d460e594cf9..29f846733f9 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -6,7 +6,7 @@ Appendices  Next

Porting and Maintenance - +

What Comes from Where

Figure B.1. Configure and Build File Dependencies

Dependency Graph for Configure and Build Files

+

What Comes from Where

Figure B.1. Configure and Build File Dependencies

Dependency Graph for Configure and Build Files

Regenerate all generated files by using the command autoreconf at the top level of the libstdc++ source directory. diff --git a/libstdc++-v3/doc/html/manual/associative.html b/libstdc++-v3/doc/html/manual/associative.html index 3ba38d006db..ddf6116ad84 100644 --- a/libstdc++-v3/doc/html/manual/associative.html +++ b/libstdc++-v3/doc/html/manual/associative.html @@ -180,11 +180,11 @@ For now you can simply make a temporary string object using the constructor expression:

-      std::bitset<5> b ( std::string(10110) );
+      std::bitset<5> b ( std::string("10110") );
    

instead of

-      std::bitset<5> b ( 10110 );    // invalid
+      std::bitset<5> b ( "10110" );    // invalid
     

Chapter 14.  Atomics - +

Table of Contents

API Reference

Facilities for atomic operations.

API Reference

diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index ab42ec40b39..0c6ff0f015b 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -242,7 +242,7 @@ erase(size_type __pos = 0, size_type __n = npos) std::ostrstream oss; #endif -oss << Name= << m_name << , number= << m_number << std::endl; +oss << "Name=" << m_name << ", number=" << m_number << std::endl; ... #ifndef HAVE_SSTREAM oss << std::ends; // terminate the char*-string @@ -947,19 +947,19 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ This is a change in behavior from older versions. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. -

Bibliography

+

Bibliography

Migrating to GCC 4.1 - . Dan Kegel.

+ . Dan Kegel.

+ . Martin Michlmayr.

+ \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html b/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html index f87bda144f0..44bd192131b 100644 --- a/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html +++ b/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html @@ -75,7 +75,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 21.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

+

Table 21.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/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html index e6dec7aebe4..dbeb49066d7 100644 --- a/libstdc++-v3/doc/html/manual/concurrency.html +++ b/libstdc++-v3/doc/html/manual/concurrency.html @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 15.  Concurrency - +

Table of Contents

API Reference

Facilities for concurrent operation, and control thereof.

API Reference

diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html index eb8b26e36da..e1ca43c9822 100644 --- a/libstdc++-v3/doc/html/manual/configure.html +++ b/libstdc++-v3/doc/html/manual/configure.html @@ -88,8 +88,7 @@ configuration instructions. This option can change the library ABI.

--enable-libstdcxx-threads

Enable C++11 threads support. If not explicitly specified, - the configure process enables it if possible. It defaults to 'off' - on Solaris 9, where it would break symbol versioning. This + the configure process enables it if possible. This option can change the library ABI.

--enable-libstdcxx-time

This is an abbreviated form of '--enable-libstdcxx-time=yes'(described next). @@ -104,7 +103,8 @@ desirable because, in glibc, for example, in turn it triggers the linking of libpthread too, which activates locking, a large overhead for single-thread programs. OPTION=no skips the tests completely. - The default is OPTION=no. + The default is OPTION=auto, which skips the checks and enables the + features only for targets known to support them.

--enable-libstdcxx-debug

Build separate debug libraries in addition to what is normally built. By default, the debug libraries are compiled with CXXFLAGS='-g3 -O0 -fno-inline' diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html index 8769d3542a8..4e22f74f4de 100644 --- a/libstdc++-v3/doc/html/manual/containers.html +++ b/libstdc++-v3/doc/html/manual/containers.html @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 9.  Containers - +

Sequences

list

list::size() is O(n)

Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html index 6e4fea8094a..e02507b9e63 100644 --- a/libstdc++-v3/doc/html/manual/debug.html +++ b/libstdc++-v3/doc/html/manual/debug.html @@ -162,7 +162,8 @@ Helgrind, and - ThreadSanitizer. + ThreadSanitizer (this refers to ThreadSanitizer v1, not the + new "tsan" feature built-in to GCC itself).

With DRD, Helgrind and ThreadSanitizer you will need to define the macros like this: diff --git a/libstdc++-v3/doc/html/manual/debug_mode_using.html b/libstdc++-v3/doc/html/manual/debug_mode_using.html index 0a23688b106..756d4793c3b 100644 --- a/libstdc++-v3/doc/html/manual/debug_mode_using.html +++ b/libstdc++-v3/doc/html/manual/debug_mode_using.html @@ -18,6 +18,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional +

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

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

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

\ No newline at end of file +

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

\ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html index e2d091ea317..30002b7a96e 100644 --- a/libstdc++-v3/doc/html/manual/diagnostics.html +++ b/libstdc++-v3/doc/html/manual/diagnostics.html @@ -6,7 +6,7 @@ Standard Contents  Next

Chapter 5.  Diagnostics - +

Exceptions

API Reference

All exception objects are defined in one of the standard header files: exception, diff --git a/libstdc++-v3/doc/html/manual/documentation_hacking.html b/libstdc++-v3/doc/html/manual/documentation_hacking.html index 3819a89efea..26d8a6fba03 100644 --- a/libstdc++-v3/doc/html/manual/documentation_hacking.html +++ b/libstdc++-v3/doc/html/manual/documentation_hacking.html @@ -112,7 +112,7 @@ supported, and are always aliased to dummy rules. These unsupported formats are: info, ps, and dvi. -

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

+

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

Prerequisite tools are Bash 2.0 or later, Doxygen, and the GNU @@ -125,7 +125,9 @@ Graphviz package will need to be installed. For PDF output, - pdflatex is required. + pdflatex is required as well as a number of TeX packages + such as texlive-xtab and + texlive-tocloft.

Be warned the PDF file generated via doxygen is extremely large. At last count, the PDF file is over three thousand @@ -178,8 +180,7 @@ doc-pdf-doxygen).

Working on the doxygen path only, closely examine the - contents of the following build directory: - build/target/libstdc++-v3/doc/doxygen/latex. + contents of the following build directory: build/target/libstdc++-v3/doc/doxygen/latex. Pay attention to three files enclosed within, annotated as follows.

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

+

Table B.2. HTML to Doxygen Markup Comparison

HTMLDoxygen
\\\
"\"
'\'
<i>@a word
<b>@b word
<code>@c word
<em>@a word
<em><em>two words or more</em>

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

Editing the DocBook sources requires an XML editor. Many exist: some notable options include emacs, Kate, @@ -402,7 +415,7 @@ make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal The actual latex file, or partial latex file. This is generated via dblatex, and is the LaTeX version of the DocBook XML file spine.xml. Go to a specific - line, and look at the genrated LaTeX, and try to deduce what + line, and look at the generated LaTeX, and try to deduce what markup in spine.xml is causing it.

  • spine.out @@ -519,11 +532,11 @@ make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal online. An incomplete reference for HTML to Docbook conversion is detailed in the table below. -

    Table B.4. HTML to Docbook XML Markup Comparison

    HTMLDocbook
    <p><para>
    <pre><computeroutput>, <programlisting>, +

    Table B.4. HTML to Docbook XML Markup Comparison

    HTMLDocbook
    <p><para>
    <pre><computeroutput>, <programlisting>, <literallayout>
    <ul><itemizedlist>
    <ol><orderedlist>
    <il><listitem>
    <dl><variablelist>
    <dt><term>
    <dd><listitem>
    <a href=""><ulink url="">
    <code><literal>, <programlisting>
    <strong><emphasis>
    <em><emphasis>
    "<quote>

    And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -

    Table B.5. Docbook XML Element Use

    ElementUse
    <structname><structname>char_traits</structname>
    <classname><classname>string</classname>
    <function> +

    Table B.5. Docbook XML Element Use

    ElementUse
    <structname><structname>char_traits</structname>
    <classname><classname>string</classname>
    <function>

    <function>clear()</function>

    <function>fs.clear()</function>

    <type><type>long long</type>
    <varname><varname>fs</varname>
    <literal> diff --git a/libstdc++-v3/doc/html/manual/dynamic_memory.html b/libstdc++-v3/doc/html/manual/dynamic_memory.html index a5914804221..3bd6ca10e23 100644 --- a/libstdc++-v3/doc/html/manual/dynamic_memory.html +++ b/libstdc++-v3/doc/html/manual/dynamic_memory.html @@ -49,9 +49,9 @@ void my_new_handler () { delete[] safety; - popup_window ("Dude, you are running low on heap memory. You - should, like, close some windows, or something. - The next time you run out, we're gonna burn!"); + popup_window ("Dude, you are running low on heap memory. You" + " should, like, close some windows, or something." + " The next time you run out, we're gonna burn!"); set_new_handler (old_handler); return; } diff --git a/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html b/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html index d760c540095..84db3da9709 100644 --- a/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html +++ b/libstdc++-v3/doc/html/manual/ext_concurrency_impl.html @@ -41,4 +41,4 @@ use this layer. More detail as to the specific interface can be found in the sou functions, and usage found in the usual <pthread.h> file, including pthread_t, pthread_once_t, pthread_create, etc. -

    +

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/ext_preface.html b/libstdc++-v3/doc/html/manual/ext_preface.html index aa6418e89d3..7913fde2f7a 100644 --- a/libstdc++-v3/doc/html/manual/ext_preface.html +++ b/libstdc++-v3/doc/html/manual/ext_preface.html @@ -2,7 +2,7 @@

    +

     Next

    Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index 4d68bc53deb..435e0b383a8 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -4,7 +4,7 @@

    Prev The GNU C++ Library Manual Next

    Part III.  Extensions - +

    Table of Contents

    16. Compile Time Checks
    17. Debug Mode
    Intro
    Semantics
    Using
    Using the Debug Mode
    Using a Specific Debug Container
    Design
    Goals
    Methods
    The Wrapper Model
    Safe Iterators
    Safe Sequences (Containers)
    Precondition Checking
    Release- and debug-mode coexistence
    Compile-time coexistence of release- and debug-mode components
    Link- and run-time coexistence of release- and debug-mode components
    Alternatives for Coexistence
    Other Implementations
    18. Parallel Mode
    Intro
    Semantics
    Using
    Prerequisite Compiler Flags
    Using Parallel Mode
    Using Specific Parallel Components
    Design
    Interface Basics
    Configuration and Tuning
    Setting up the OpenMP Environment
    Compile Time Switches
    Run Time Settings and Defaults
    Implementation Namespaces
    Testing
    Bibliography
    19. Profile Mode
    Intro
    Using the Profile Mode
    Tuning the Profile Mode
    Design
    Wrapper Model
    Instrumentation
    Run Time Behavior
    Analysis and Diagnostics
    Cost Model
    Reports
    Testing
    Extensions for Custom Containers
    Empirical Cost Model
    Implementation Issues
    Stack Traces
    Symbolization of Instruction Addresses
    Concurrency
    Using the Standard Library in the Instrumentation Implementation
    Malloc Hooks
    Construction and Destruction of Global Objects
    Developer Information
    Big Picture
    How To Add A Diagnostic
    Diagnostics
    Diagnostic Template
    Containers
    Hashtable Too Small
    Hashtable Too Large
    Inefficient Hash
    Vector Too Small
    Vector Too Large
    Vector to Hashtable
    Hashtable to Vector
    Vector to List
    List to Vector
    List to Forward List (Slist)
    Ordered to Unordered Associative Container
    Algorithms
    Sort Algorithm Performance
    Data Locality
    Need Software Prefetch
    Linked Structure Locality
    Multithreaded Data Access
    Data Dependence Violations at Container Level
    False Sharing
    Statistics
    Bibliography
    20. The mt_allocator
    Intro
    Design Issues
    Overview
    Implementation
    Tunable Parameters
    Initialization
    Deallocation Notes
    Single Thread Example
    Multiple Thread Example
    21. The bitmap_allocator
    Design
    Implementation
    Free List Store
    Super Block
    Super Block Data Layout
    Maximum Wasted Percentage
    allocate
    deallocate
    Questions
    1
    2
    3
    Locality
    Overhead and Grow Policy
    22. Policy-Based Data Structures
    Intro
    Performance Issues
    Associative
    Priority Que
    Goals
    Associative
    Policy Choices
    Underlying Data Structures
    Iterators
    Functional
    Priority Queues
    Policy Choices
    Underlying Data Structures
    Binary Heaps
    Using
    Prerequisites
    Organization
    Tutorial
    Basic Use
    Configuring via Template Parameters diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html index 6cb0a947f91..0a5b79e2be2 100644 --- a/libstdc++-v3/doc/html/manual/facets.html +++ b/libstdc++-v3/doc/html/manual/facets.html @@ -2,7 +2,7 @@ Facets

    Facets

    ctype

    Implementation

    Specializations

    +

     Next

    Facets

    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 @@ -53,24 +53,24 @@ 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.

    The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) . Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    + 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 @@ -424,51 +424,51 @@ 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 - .

    + .

    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.

    + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 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.

    + . Clive Feather. Extended Character Sets.

    The Unicode HOWTO - . Bruno Haible.

    + . Bruno Haible.

    messages

    -The std::messages facet implements message retrieval functionality -equivalent to Java's java.text.MessageFormat .using either GNU gettext + . Markus Khun.

    messages

    +The std::messages facet implements message retrieval functionality +equivalent to Java's java.text.MessageFormat using either GNU gettext or IEEE 1003.1-200 functions.

    Requirements

    -The std::messages facet is probably the most vaguely defined facet in +The std::messages facet is probably the most vaguely defined facet in the standard library. It's assumed that this facility was built into the standard library in order to convert string literals from one locale to the other. For instance, converting the "C" locale's @@ -490,30 +490,30 @@ The public member functions are:

    While the virtual functions are:

    -catalog do_open(const string&, const locale&) const +catalog do_open(const string& name, const locale& loc) const

    --1- Returns: A value that may be passed to get() to retrieve a -message, from the message catalog identified by the string name +-1- Returns: A value that may be passed to get() to retrieve a +message, from the message catalog identified by the string name according to an implementation-defined mapping. The result can be used -until it is passed to close(). Returns a value less than 0 if no such +until it is passed to close(). Returns a value less than 0 if no such catalog can be opened.

    -string_type do_get(catalog, int, int, const string_type&) const +string_type do_get(catalog cat, int set , int msgid, const string_type& dfault) const

    --3- Requires: A catalog cat obtained from open() and not yet closed. --4- Returns: A message identified by arguments set, msgid, and dfault, +-3- Requires: A catalog cat obtained from open() and not yet closed. +-4- Returns: A message identified by arguments set, msgid, and dfault, according to an implementation-defined mapping. If no such message can -be found, returns dfault. +be found, returns dfault.

    -void do_close(catalog) const +void do_close(catalog cat) const

    --5- Requires: A catalog cat obtained from open() and not yet closed. --6- Effects: Releases unspecified resources associated with cat. +-5- Requires: A catalog cat obtained from open() and not yet closed. +-6- Effects: Releases unspecified resources associated with cat. -7- Notes: The limit on such resources, if any, is implementation-defined.

    Design

    @@ -705,39 +705,39 @@ 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.

    + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 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 - .

    + .

    API Specifications, Java Platform . 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/index.html b/libstdc++-v3/doc/html/manual/index.html index 62ae73d790d..58dd9bc0e40 100644 --- a/libstdc++-v3/doc/html/manual/index.html +++ b/libstdc++-v3/doc/html/manual/index.html @@ -15,13 +15,13 @@

    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Unordered Associative
    Insertion Hints
    Hash Code
    Hash Code Caching Policy
    Interacting with C
    Containers vs. Arrays
    10. @@ -143,19 +143,19 @@ Support for C++11 dialect.
    D. GNU General Public License version 3 -
    E. GNU Free Documentation License
    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index 42cb03466d4..b67a08fb3fa 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -6,7 +6,7 @@ Standard Contents  Next

    Chapter 13.  Input and Output - +

    Iostream Objects

    To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include <iostream> when they don't diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html index 365382044d1..70dbe491be5 100644 --- a/libstdc++-v3/doc/html/manual/iterators.html +++ b/libstdc++-v3/doc/html/manual/iterators.html @@ -6,7 +6,7 @@ Standard Contents  Next


    Chapter 10.  Iterators - +

    Predefined

    Iterators vs. Pointers

    The following FAQ entry points out that diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index 19ba126bdce..fe283a7b68e 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -6,8 +6,8 @@ Standard Contents  Next


    Locales

    locale

    Describes the basic locale object, including nested classes id, facet, and the reference-counted implementation object, class _Impl. @@ -55,7 +55,7 @@ which include the Single Unix (nee X/Open.) Because C and earlier versions of POSIX fall down so completely, portability is an issue.

    Implementation

    Interacting with "C" locales
    • - `locale -a` displays available locales. + locale -a displays available locales.

       af_ZA
       ar_AE
      @@ -402,29 +402,29 @@ global locale" (emphasis Paolo), that is:
              What should non-required facet instantiations do?  If the
              generic implementation is provided, then how to end-users
              provide specializations?
      -   

    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.

    + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 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/memory.html b/libstdc++-v3/doc/html/manual/memory.html index 9c0ca2388bf..cf58f632b78 100644 --- a/libstdc++-v3/doc/html/manual/memory.html +++ b/libstdc++-v3/doc/html/manual/memory.html @@ -92,7 +92,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 supported is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have @@ -105,7 +105,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 @@ -142,7 +142,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-specific strategies and heuristics. Because of this, a given call to an allocator object's @@ -309,33 +309,33 @@ of the used and unused memory locations. It has its own chapter in the documentation. -

    Bibliography

    +

    Bibliography

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

    + 20.4 Memory.

    The Standard Librarian: What Are Allocators Good For? . Matt Austern. C/C++ Users Journal - .

    + .

    + . Emery Berger.

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

    + . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

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

    The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. + .

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

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can + .

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can happen with misuse of the auto_ptr class template (called AP here) would take some time. Suffice it to say that the use of AP @@ -445,7 +445,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 @@ -492,7 +492,7 @@ C++11-only features are: rvalue-ref/move support, allocator support, aliasing constructor, make_shared & allocate_shared. Additionally, the constructors taking auto_ptr parameters are deprecated in C++11 mode. -

    Thread Safety

    +

    Thread Safety

    The Thread Safety section of the Boost shared_ptr documentation says "shared_ptr @@ -537,7 +537,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 @@ -578,7 +578,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. -

    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 @@ -611,21 +611,15 @@ 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, testsuite/20_util/shared_ptr and testsuite/20_util/weak_ptr. -

    Unresolved Issues

    +

    Unresolved Issues

    The shared_ptr atomic access clause in the C++11 standard is not implemented in GCC. -

    - The _S_single policy uses atomics when used in MT - code, because it uses the same dispatcher functions that check - __gthread_active_p(). This could be - addressed by providing template specialisations for some members - of _Sp_counted_base<_S_single>.

    Unlike Boost, this implementation does not use separate classes for the pointer+deleter and pointer+deleter+allocator cases in @@ -658,28 +652,28 @@ 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. -

    + .

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index edcc89cdda8..17e6fc3210d 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -6,7 +6,7 @@ Standard Contents  Next

    Chapter 12.  Numerics - +

    Complex

    complex Processing

    Using complex<> becomes even more comple- er, sorry, diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index 4391923b57a..09510fddf89 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -12,11 +12,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/parallel_mode_using.html b/libstdc++-v3/doc/html/manual/parallel_mode_using.html index fb9e240258d..863f910508b 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode_using.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode_using.html @@ -62,4 +62,4 @@ Then compile this code with the prerequisite compiler flags 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 18.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

    \ No newline at end of file +

    Table 18.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

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures.html b/libstdc++-v3/doc/html/manual/policy_data_structures.html index 302d1b8f21c..9abd8a44b51 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures.html @@ -248,7 +248,7 @@ these invariants, one must supply some policy that is aware of these changes. Without this, it would be better to use a linked list (in itself very efficient for these purposes). -

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    +

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of @@ -256,7 +256,7 @@

    The figure below shows the different underlying data structures currently supported in this library. -

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    +

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the @@ -375,7 +375,7 @@ no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. -

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    +

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it @@ -426,7 +426,7 @@ list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. -

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    +

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. @@ -442,7 +442,7 @@ container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. -

    Figure 22.5. Effect of erase in different underlying data structures

    Effect of erase in different underlying data structures

    1. +

      Figure 22.5. Effect of erase in different underlying data structures

      Effect of erase in different underlying data structures

      1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. @@ -678,7 +678,7 @@ typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. -

        Figure 22.6. Underlying Priority Queue Data Structures

        Underlying Priority Queue Data Structures

        +

        Figure 22.6. Underlying Priority Queue Data Structures

        Underlying Priority Queue Data Structures

        No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have @@ -1304,4 +1304,4 @@ Wickland . National Psychological Institute - .

    + .

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html index 601eb56185c..633c5dca8c7 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_design.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_design.html @@ -170,7 +170,7 @@ naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. -

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    +

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the @@ -252,7 +252,7 @@ first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. -

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    +

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see @@ -305,7 +305,7 @@ shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" - containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers + containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys @@ -344,7 +344,7 @@ to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. -

    Figure 22.12. Invalidation Guarantee Tags Hierarchy

    Invalidation Guarantee Tags Hierarchy

    • +

      Figure 22.12. Invalidation Guarantee Tags Hierarchy

      Invalidation Guarantee Tags Hierarchy

      • basic_invalidation_guarantee corresponds to a basic guarantee that a point-type iterator, a found pointer, or a found reference, remains valid as long @@ -428,7 +428,7 @@

        This library contains a container tag hierarchy corresponding to the diagram below. -

        Figure 22.13. Container Tag Hierarchy

        Container Tag Hierarchy

        +

        Figure 22.13. Container Tag Hierarchy

        Container Tag Hierarchy

        Given any container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category. @@ -487,7 +487,7 @@ collision-chaining container, except for the following.

        1. Comb_Probe_Fn describes how to transform a probe sequence into a sequence of positions within the table.

        2. Probe_Fn describes a probe sequence policy.

        Some of the default template values depend on the values of other parameters, and are explained below.

      Details
      Hash Policies
      General

      Following is an explanation of some functions which hashing - involves. The graphic below illustrates the discussion.

      Figure 22.14. Hash functions, ranged-hash functions, and + involves. The graphic below illustrates the discussion.

      Figure 22.14. Hash functions, ranged-hash functions, and range-hashing functions

      Hash functions, ranged-hash functions, and range-hashing functions

      Let U be a domain (e.g., the integers, or the strings of 3 characters). A hash-table algorithm needs to map elements of U "uniformly" into the range [0,..., m - @@ -504,7 +504,7 @@ Z+,

      which maps a non-negative hash value, and a non-negative range upper-bound into a non-negative integral in the range between 0 (inclusive) and the range upper bound (exclusive), - i.e., for any r in Z+,

      0 ≤ g(r, m) ≤ m - 1

      The resulting ranged-hash function, is

      Equation 22.1. Ranged Hash Function

      + i.e., for any r in Z+,

      0 ≤ g(r, m) ≤ m - 1

      The resulting ranged-hash function, is

      Equation 22.1. Ranged Hash Function

      f(u , m) = g(h(u), m)

      From the above, it is obvious that given g and h, f can always be composed (however the converse @@ -524,7 +524,7 @@ transforming the sequence of hash values into a sequence of positions.

      Range Hashing

      Some common choices for range-hashing functions are the division, multiplication, and middle-square methods ([biblio.knuth98sorting]), defined - as

      Equation 22.2. Range-Hashing, Division Method

      + as

      Equation 22.2. Range-Hashing, Division Method

      g(r, m) = r mod m

      g(r, m) = ⌈ u/v ( a r mod v ) ⌉

      and

      g(r, m) = ⌈ u/v ( r2 mod v ) ⌉

      respectively, for some positive integrals u and v (typically powers of 2), and some a. Each of @@ -535,9 +535,9 @@ implement using the low level % (modulo) operation (for any m), or the low level & (bit-mask) operation (for the case where - m is a power of 2), i.e.,

      Equation 22.3. Division via Prime Modulo

      + m is a power of 2), i.e.,

      Equation 22.3. Division via Prime Modulo

      g(r, m) = r % m -

      and

      Equation 22.4. Division via Bit Mask

      +

      and

      Equation 22.4. Division via Bit Mask

      g(r, m) = r & m - 1, (with m = 2k for some k)

      respectively.

      The % (modulo) implementation has the advantage that for @@ -563,7 +563,7 @@ s = [ s0,..., st - 1]

      be a string of t characters, each of which is from domain S. Consider the following ranged-hash - function:

      Equation 22.5.  + function:

      Equation 22.5.  A Standard String Hash Function

      f1(s, m) = ∑ i = @@ -575,7 +575,7 @@ of a long DNA sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the entire string might be prohibitively expensive. A possible alternative might be to use - only the first k characters of the string, where

      |S|k ≥ m ,

      i.e., using the hash function

      Equation 22.6.  + only the first k characters of the string, where

      |S|k ≥ m ,

      i.e., using the hash function

      Equation 22.6.  Only k String DNA Hash

      f2(s, m) = ∑ i @@ -606,12 +606,12 @@ the container transforms the key into a non-negative integral using the hash functor (points B and C), and transforms the result into a position using the combining functor (points D - and E).

      Figure 22.15. Insert hash sequence diagram

      Insert hash sequence diagram

      If cc_hash_table's + and E).

      Figure 22.15. Insert hash sequence diagram

      Insert hash sequence diagram

      If cc_hash_table's hash-functor, Hash_Fn is instantiated by null_type , then Comb_Hash_Fn is taken to be a ranged-hash function. The graphic below shows an insert sequence diagram. The user inserts an element (point A), the container transforms the key into a position using the combining functor - (points B and C).

      Figure 22.16. Insert hash sequence diagram with a null policy

      Insert hash sequence diagram with a null policy

      + (points B and C).

      Figure 22.16. Insert hash sequence diagram with a null policy

      Insert hash sequence diagram with a null policy

      Probing tables

      gp_hash_table is parametrized by Hash_Fn, Probe_Fn, @@ -634,7 +634,7 @@ a linear probe and a quadratic probe function, respectively.

    The graphic below shows the relationships. -

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or +

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table @@ -667,10 +667,10 @@ and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would - be found with probability at most 1/m.

      Figure 22.18. Balls and bins

      Balls and bins

      Denote the probability that a probe sequence of length + be found with probability at most 1/m.

      Figure 22.18. Balls and bins

      Balls and bins

      Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by - li, and assume uniform distribution. Then

      Equation 22.7.  + li, and assume uniform distribution. Then

      Equation 22.7.  Probability of Probe Sequence of Length k

      p1 = @@ -684,7 +684,7 @@ li are negatively-dependent ([biblio.dubhashi98neg]) . Let - I(.) denote the indicator function. Then

      Equation 22.8.  + I(.) denote the indicator function. Then

      Equation 22.8.  Probability Probe Sequence in Some Bin

      P( existsi li ≥ k ) = @@ -723,7 +723,7 @@ a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).

      Figure 22.19. Insert resize sequence diagram

      Insert resize sequence diagram

      In practice, a resize policy can be usually orthogonally + inserted, and the policy notified (point I).

      Figure 22.19. Insert resize sequence diagram

      Insert resize sequence diagram

      In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy @@ -732,8 +732,8 @@ both, and acts as a standard delegate ([biblio.gof]) to these policies.

      The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy - and its trigger and size policies, respectively.

      Figure 22.20. Standard resize policy trigger sequence - diagram

      Standard resize policy trigger sequence diagram

      Figure 22.21. Standard resize policy size sequence + and its trigger and size policies, respectively.

      Figure 22.20. Standard resize policy trigger sequence + diagram

      Standard resize policy trigger sequence diagram

      Figure 22.21. Standard resize policy size sequence diagram

      Standard resize policy size sequence diagram

      Predefined Policies

      The library includes the following instantiations of size and trigger policies:

      1. hash_load_check_resize_trigger implements a load check trigger policy.

      2. cc_hash_max_collision_check_resize_trigger @@ -876,7 +876,7 @@ each node, and maintains node invariants (see [biblio.clrs2001].) The first stores in each node the size of the sub-tree rooted at the node; the second stores at each node the maximal endpoint of the - intervals at the sub-tree rooted at the node.

        Figure 22.22. Tree node invariants

        Tree node invariants

        Supporting such trees is difficult for a number of + intervals at the sub-tree rooted at the node.

        Figure 22.22. Tree node invariants

        Tree node invariants

        Supporting such trees is difficult for a number of reasons:

        1. There must be a way to specify what a node's metadata should be (if any).

        2. Various operations can invalidate node invariants. The graphic below shows how a right rotation, @@ -890,7 +890,7 @@ metadata.

        3. It is not feasible to know in advance which methods trees can support. Besides the usual find method, the first tree can support a find_by_order method, while - the second can support an overlaps method.

        Figure 22.23. Tree node invalidation

        Tree node invalidation

        These problems are solved by a combination of two means: + the second can support an overlaps method.

      Figure 22.23. Tree node invalidation

      Tree node invalidation

      These problems are solved by a combination of two means: node iterators, and template-template node updater parameters.

      Node Iterators

      Each tree-based container defines two additional iterator types, const_node_iterator @@ -919,7 +919,7 @@ node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained - below).

      Figure 22.24. A tree and its update policy

      A tree and its update policy

      node_update (an instantiation of + below).

      Figure 22.24. A tree and its update policy

      A tree and its update policy

      node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. @@ -938,7 +938,7 @@ nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three - nodes should have valid invariants, as in label B.

      Figure 22.25. Restoring node invariants

      Restoring node invariants

      When a tree operation might invalidate some node invariant, + nodes should have valid invariants, as in label B.

      Figure 22.25. Restoring node invariants

      Restoring node invariants

      When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some @@ -946,7 +946,7 @@ C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) - .

      Figure 22.26. Insert update sequence

      Insert update sequence

      To complete the description of the scheme, three questions + .

      Figure 22.26. Insert update sequence

      Insert update sequence

      To complete the description of the scheme, three questions need to be answered:

      1. How can a tree which supports order statistics define a method such as find_by_order?

      2. How can the node updater base access methods of the tree?

      3. How can the following cyclic dependency be resolved? @@ -988,7 +988,7 @@ node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying - redundant updates all the way.

      Figure 22.27. Useless update path

      Useless update path

      A null policy class, null_node_update + redundant updates all the way.

    Figure 22.27. Useless update path

    Useless update path

    A null policy class, null_node_update solves both these problems. The tree detects that node invariants are irrelevant, and defines all accordingly.

    Split and Join

    Tree-based containers support split and join methods. It is possible to split a tree so that it passes @@ -1071,7 +1071,7 @@ sub-tree with leafs "a" and "as". The maximal common prefix is "a". The internal node contains, consequently, to const iterators, one pointing to 'a', and the other to - 's'.

    Figure 22.28. A PATRICIA trie

    A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do + 's'.

    Figure 22.28. A PATRICIA trie

    A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    1. A trie's Node_Update template-template @@ -1080,7 +1080,7 @@ parametrized by Cmp_Fn.

    2. Tree-based containers store values in all nodes, while trie-based containers (at least in this implementation) store values in leafs.

    The graphic below shows the scheme, as well as some predefined - policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node + policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node updating policies:

    1. trie_order_statistics_node_update supports order statistics. @@ -1128,7 +1128,7 @@ simple list of integer keys. If we search for the integer 6, we are paying an overhead: the link with key 6 is only the fifth link; if it were the first link, it could be accessed - faster.

      Figure 22.30. A simple list

      A simple list

      List-update algorithms reorder lists as elements are + faster.

      Figure 22.30. A simple list

      A simple list

      List-update algorithms reorder lists as elements are accessed. They try to determine, by the access history, which keys to move to the front of the list. Some of these algorithms require adding some metadata alongside each entry.

      For example, in the graphic below label A shows the counter @@ -1138,7 +1138,7 @@ predetermined value, say 10, as shown in label C, the count is set to 0 and the node is moved to the front of the list, as in label D. -

      Figure 22.31. The counter algorithm

      The counter algorithm

    Policies

    this library allows instantiating lists with policies +

    Figure 22.31. The counter algorithm

    The counter algorithm

    Policies

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a @@ -1310,7 +1310,7 @@ sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are - shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped + shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based @@ -1390,7 +1390,7 @@ container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. -

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a +

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the diff --git a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html index 311f47c0f14..a698152ef84 100644 --- a/libstdc++-v3/doc/html/manual/policy_data_structures_using.html +++ b/libstdc++-v3/doc/html/manual/policy_data_structures_using.html @@ -61,7 +61,7 @@ In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. -

    Figure 22.7. Exception Hierarchy

    Exception Hierarchy

    Tutorial

    Basic Use

    +

    Figure 22.7. Exception Hierarchy

    Exception Hierarchy

    Tutorial

    Basic Use

    For the most part, the policy-based containers containers in namespace __gnu_pbds have the same interface as the equivalent containers in the standard C++ library, except for diff --git a/libstdc++-v3/doc/html/manual/profile_mode.html b/libstdc++-v3/doc/html/manual/profile_mode.html index c98b4923938..5b4ffd03fe0 100644 --- a/libstdc++-v3/doc/html/manual/profile_mode.html +++ b/libstdc++-v3/doc/html/manual/profile_mode.html @@ -137,7 +137,7 @@ vector-size: improvement = 3: call stack = 0x804842c ... call context. (Environment variable not supported.)

    -

    Bibliography

    +

    Bibliography

    Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation diff --git a/libstdc++-v3/doc/html/manual/profile_mode_design.html b/libstdc++-v3/doc/html/manual/profile_mode_design.html index ffe5ae79b40..2d49e338804 100644 --- a/libstdc++-v3/doc/html/manual/profile_mode_design.html +++ b/libstdc++-v3/doc/html/manual/profile_mode_design.html @@ -1,6 +1,6 @@ Design

    Design

    -

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are +

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are only included from impl/profiler.h, which is the only file included from the public headers.

    Wrapper Model

    diff --git a/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html b/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html index 68b24db6efc..12f0236d019 100644 --- a/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html +++ b/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html @@ -17,7 +17,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. -

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    +

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    CONTAINERS HASHTABLE_TOO_SMALL101 10yes
      HASHTABLE_TOO_LARGE51 10yes
      diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html index 10d6c4683ae..61e8bc644d0 100644 --- a/libstdc++-v3/doc/html/manual/setup.html +++ b/libstdc++-v3/doc/html/manual/setup.html @@ -8,11 +8,11 @@ configuring and building the sources, testing, and installation.

    The general outline of commands is something like:

    -   get gcc sources
    -   extract into gccsrcdir
    -   mkdir gccbuilddir
    -   cd gccbuilddir
    -   gccsrcdir/configure --prefix=destdir --other-opts...
    +   get gcc sources
    +   extract into gccsrcdir
    +   mkdir gccbuilddir
    +   cd gccbuilddir
    +   gccsrcdir/configure --prefix=destdir --other-opts...
        make
        make check
        make install
    diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
    index 960538610b8..d9ed3ed1e2e 100644
    --- a/libstdc++-v3/doc/html/manual/status.html
    +++ b/libstdc++-v3/doc/html/manual/status.html
    @@ -7,7 +7,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003.
     

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

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -158,7 +158,7 @@ presence of the required flag.

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

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    18 Language support @@ -180,7 +180,7 @@ particular release. is_trivially_copy_constructible, is_trivially_move_constructible, is_trivially_assignable, is_trivially_default_assignable, is_trivially_copy_assignable, is_trivially_move_assignable -
    20.9.5Type property queriesY 
    20.9.6Relationships between typesY 
    20.9.7Transformations between types  
    20.9.7.1Const-volatile modificationsY 
    20.9.7.2Reference modificationsY 
    20.9.7.3Sign modificationsY 
    20.9.7.4Array modificationsY 
    20.9.7.5Pointer modificationsY 
    20.9.7.6Other transformationsPartialMissing aligned_union.
    20.10Compile-time rational arithmetic  
    20.10.1In general  
    20.10.2Header <ratio> synopsis  
    20.10.3Class template ratioY 
    20.10.4Arithmetic on ratiosY 
    20.10.5Comparison of ratiosY 
    20.10.6SI types for ratioY 
    20.11Time utilities  
    20.11.3Clock requirementsY 
    20.11.4Time-related traits  
    20.11.4.1treat_as_floating_pointY 
    20.11.4.2duration_valuesY 
    20.11.4.3Specializations of common_typeY 
    20.11.5Class template durationPartialMissing constexpr for non-member arithmetic operations
    20.11.6Class template time_pointY 
    20.11.7Clocks  
    20.11.7.1Class system_clockY 
    20.11.7.2Class steady_clockY 
    20.11.7.3Class high_resolution_clockY 
    20.11.8Date and time functionsY 
    20.12Scoped allocator adaptorY 
    20.12.1Header <scoped_allocator> synopsis  
    20.12.2Scoped allocator adaptor member typesY 
    20.12.3Scoped allocator adaptor constructorsY 
    20.12.4Scoped allocator adaptor membersPartialOUTERMOST is not recursive.
    20.12.5Scoped allocator operatorsY 
    20.13Class type_indexY 
    +
    20.9.5Type property queriesY 
    20.9.6Relationships between typesY 
    20.9.7Transformations between types  
    20.9.7.1Const-volatile modificationsY 
    20.9.7.2Reference modificationsY 
    20.9.7.3Sign modificationsY 
    20.9.7.4Array modificationsY 
    20.9.7.5Pointer modificationsY 
    20.9.7.6Other transformationsY 
    20.10Compile-time rational arithmetic  
    20.10.1In general  
    20.10.2Header <ratio> synopsis  
    20.10.3Class template ratioY 
    20.10.4Arithmetic on ratiosY 
    20.10.5Comparison of ratiosY 
    20.10.6SI types for ratioY 
    20.11Time utilities  
    20.11.3Clock requirementsY 
    20.11.4Time-related traits  
    20.11.4.1treat_as_floating_pointY 
    20.11.4.2duration_valuesY 
    20.11.4.3Specializations of common_typeY 
    20.11.5Class template durationPartialMissing constexpr for non-member arithmetic operations
    20.11.6Class template time_pointY 
    20.11.7Clocks  
    20.11.7.1Class system_clockY 
    20.11.7.2Class steady_clockY 
    20.11.7.3Class high_resolution_clockY 
    20.11.8Date and time functionsY 
    20.12Scoped allocator adaptorY 
    20.12.1Header <scoped_allocator> synopsis  
    20.12.2Scoped allocator adaptor member typesY 
    20.12.3Scoped allocator adaptor constructorsY 
    20.12.4Scoped allocator adaptor membersPartialOUTERMOST is not recursive.
    20.12.5Scoped allocator operatorsY 
    20.13Class type_indexY 
    21 Strings @@ -294,7 +294,7 @@ presence of the required flag.

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

    Table 1.3. C++ 2014 Implementation Status

    PaperTitleStatusComments
    +

    Table 1.3. C++ 2014 Implementation Status

    PaperTitleStatusComments
    N3669 @@ -366,7 +366,7 @@ not in any particular release. N3644 - Null Forward IteratorsN 

    Table 1.4. C++ Technical Specifications Implementation Status

    PaperTitleStatusComments
    + Null Forward IteratorsN 

    Table 1.4. C++ Technical Specifications Implementation Status

    PaperTitleStatusComments
    N3662 @@ -437,7 +437,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.5. C++ TR1 Implementation Status

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

    Table 1.5. C++ TR1 Implementation Status

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

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

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

    Table 1.6. C++ TR 24733 Implementation Status

    SectionDescriptionStatusComments
    +

    Table 1.6. C++ TR 24733 Implementation Status

    SectionDescriptionStatusComments
    0 Introduction diff --git a/libstdc++-v3/doc/html/manual/std_contents.html b/libstdc++-v3/doc/html/manual/std_contents.html index 1379773d279..8462ef2832a 100644 --- a/libstdc++-v3/doc/html/manual/std_contents.html +++ b/libstdc++-v3/doc/html/manual/std_contents.html @@ -12,13 +12,13 @@
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Unordered Associative
    Insertion Hints
    Hash Code
    Hash Code Caching Policy
    Interacting with C
    Containers vs. Arrays
    10. diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html index 3c075d5bd23..55e0ee9cf64 100644 --- a/libstdc++-v3/doc/html/manual/strings.html +++ b/libstdc++-v3/doc/html/manual/strings.html @@ -6,7 +6,7 @@ Standard Contents
     Next

    Chapter 7.  Strings - +

    String Classes

    Simple Transformations

    Here are Standard, simple, and portable ways to perform common transformations on a string instance, such as diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html index 52ca626f45b..365d2964439 100644 --- a/libstdc++-v3/doc/html/manual/support.html +++ b/libstdc++-v3/doc/html/manual/support.html @@ -6,7 +6,7 @@ Standard Contents

     Next

    Chapter 4.  Support - +

    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/termination.html b/libstdc++-v3/doc/html/manual/termination.html index e6328c8dd4f..f5a01b3f2d2 100644 --- a/libstdc++-v3/doc/html/manual/termination.html +++ b/libstdc++-v3/doc/html/manual/termination.html @@ -82,7 +82,7 @@ int main(int argc) { std::set_terminate(__gnu_cxx::__verbose_terminate_handler); if (argc > 5) - throw argument_error(argc is greater than 5!); + throw argument_error("argc is greater than 5!"); else throw argc; } diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index 3106b9310d8..78ffb226994 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -492,7 +492,7 @@ only default variables. reporting functions including:

    • time_counter

    • resource_counter

    • report_performance

    Special Topics

    Qualifying Exception Safety Guarantees - +

    Overview

    Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index 3684e1aab42..9c721ed3dfb 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -10,5 +10,5 @@ enumerated and detailed in the table below.

    By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -

    Table 3.1. C++ Command Options

    Option FlagsDescription
    -std=c++98Use the 1998 ISO C++ standard plus amendments.
    -std=gnu++98As directly above, with GNU extensions.
    -std=c++11Use the 2011 ISO C++ standard.
    -std=gnu++11As directly above, with GNU extensions.
    -fexceptionsSee exception-free dialect
    -frttiAs above, but RTTI-free dialect.
    -pthread or -pthreadsFor ISO C++11 <thread>, <future>, +

    Table 3.1. C++ Command Options

    Option FlagsDescription
    -std=c++98Use the 1998 ISO C++ standard plus amendments.
    -std=gnu++98As directly above, with GNU extensions.
    -std=c++11Use the 2011 ISO C++ standard.
    -std=gnu++11As directly above, with GNU extensions.
    -fexceptionsSee exception-free dialect
    -frttiAs above, but RTTI-free dialect.
    -pthread or -pthreadsFor ISO C++11 <thread>, <future>, <mutex>, or <condition_variable>.
    -fopenmpFor parallel mode.

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html index cd54e0605ed..83e4ba6eec9 100644 --- a/libstdc++-v3/doc/html/manual/using_exceptions.html +++ b/libstdc++-v3/doc/html/manual/using_exceptions.html @@ -265,7 +265,7 @@ is called. } catch(...) { this->_M_setstate(ios_base::badbit); } -

    Bibliography

    +

    Bibliography

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) @@ -274,40 +274,40 @@ is called. . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    + .

    Error and Exception Handling . David Abrahams . Boost - .

    + .

    Exception-Safety in Generic Components . David Abrahams. Boost - .

    + .

    Standard Library Exception Policy . Matt Austern. WG21 N1077 - .

    + .

    ia64 c++ abi exception handling . Richard Henderson. GNU - .

    + .

    + . Bjarne Stroustrup.

    Exceptional C++ . Exception-Safety Issues and Techniques - . Herb Sutter.

    + . Herb Sutter.

    + .

    \ No newline at end of file diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index dddebaebeeb..7e4d5be9136 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -18,19 +18,19 @@ the 1998 standard as updated for 2003, and the current 2011 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.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

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

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    +

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

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

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

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

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    +

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    In addition, TR1 includes as: -

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ +

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    +

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

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

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    +

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. -

    Table 3.10. Extension Headers

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

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules. +

    Table 3.10. Extension Headers

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

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. 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/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html
    index 7a379075b63..6cf4f750927 100644
    --- a/libstdc++-v3/doc/html/manual/utilities.html
    +++ b/libstdc++-v3/doc/html/manual/utilities.html
    @@ -6,8 +6,8 @@
         Standard Contents
       
     Next

    Functors

    If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as part of their STL, in diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml index 154e6107630..b24ee228894 100644 --- a/libstdc++-v3/doc/xml/faq.xml +++ b/libstdc++-v3/doc/xml/faq.xml @@ -7,7 +7,7 @@ - 2008, 2010 + 2008-2014 FSF @@ -16,12 +16,11 @@ - + - @@ -32,11 +31,11 @@ The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in - clauses 17 through 27 and annex D. For those who want to see + clauses 17 through 30 and annex D. For those who want to see exactly how far the project has come, or just want the latest bleeding-edge code, the up-to-date source is available over - anonymous SVN, and can even be browsed over - the web. + anonymous SVN, and can be browsed over + the web. @@ -49,32 +48,31 @@ - The completion of the ISO C++ standardization gave the C++ + The completion of the initial ISO C++ standardization effort gave the C++ community a powerful set of reuseable tools in the form of the C++ - Standard Library. However, all existing C++ implementations are + Standard Library. However, for several years C++ implementations were (as the Draft Standard used to say) incomplet and - incorrekt, and many suffer from limitations of the compilers - that use them. + incorrekt, and many suffered from limitations of the compilers + that used them. The GNU compiler collection (gcc, g++, etc) is widely considered to be one of the leading compilers in the world. Its development is overseen by the - GCC team. All of + GCC team. All of the rapid development and near-legendary - portability - that are the hallmarks of an open-source project are being - applied to libstdc++. + portability + that are the hallmarks of an open-source project are applied to libstdc++. - That means that all of the Standard classes and functions will be - freely available and fully compliant. (Such as - string, - vector<>, iostreams, and algorithms.) - Programmers will no longer need to roll their own - nor be worried about platform-specific incompatibilities. - + All of the standard classes and functions from C++98/C++03 + (such as string, + vector<>, iostreams, algorithms etc.) + are freely available and atempt to be fully compliant. + Work is ongoing to complete support for the current revision of the + ISO C++ Standard. + @@ -88,15 +86,15 @@ The libstdc++ project is contributed to by several developers all over the world, in the same way as GCC or the Linux kernel. - Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper, - Loren James Rittle, and Paolo Carlini are the lead maintainers of - the SVN archive. + The current maintainers are listed in the + MAINTAINERS + file (look for "c++ runtime libs"). Development and discussion is held on the libstdc++ mailing list. Subscribing to the list, or searching the list archives, is open to everyone. You can read instructions for - doing so on the homepage. + doing so on the GCC mailing lists page. If you have questions, ideas, code, or are just curious, sign up! @@ -125,8 +123,8 @@ - Here is a page devoted to - this topic. Subscribing to the mailing list (see above, or + See the Contributing section in + the manual. Subscribing to the mailing list (see above, or the homepage) is a very good idea if you have something to contribute, or if you have spare time and want to help. Contributions don't have to be in the form of source code; @@ -145,12 +143,16 @@ - The most recent libg++ README states that libg++ is no longer - being actively maintained. It should not be used for new - projects, and is only being kicked along to support older code. + The last libg++ README states + This package is considered obsolete and is no longer + being developed. + It should not be used for new projects, and won't even compile with + recent releases of GCC (or most other C++ compilers). - More information in the backwards compatibility documentation + More information can be found in the + Backwards + Compatibility section of the libstdc++ manual. @@ -163,7 +165,7 @@ - If you have read the README file, and your question remains + If you have read the documentation, and your question remains unanswered, then just ask the mailing list. At present, you do not need to be subscribed to the list to send a message to it. More information is available on the homepage (including how to browse @@ -285,7 +287,7 @@ Libstdc++ sources for all official releases can be obtained as part of the GCC sources, available from various sites and - mirrors. A full list of + mirrors. A full list of download sites is provided on the main GCC site. @@ -308,7 +310,7 @@ For more information - see SVN + see SVN details. @@ -325,7 +327,9 @@ conformance testing, regression testing, ABI testing, and performance testing. Please consult the testing - documentation for more details. + documentation for GCC and + Test in the libstdc++ + manual for more details. If you find bugs in the testsuite programs themselves, or if you @@ -382,26 +386,26 @@ The simplest way to fix this is - to use the LD_LIBRARY_PATH environment variable, + to use the LD_LIBRARY_PATH environment variable, which is a colon-separated list of directories in which the linker will search for shared libraries: - - LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH - + + export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH + - Here the shell variable ${prefix} is assumed to contain + Here the shell variable ${prefix} is assumed to contain the directory prefix where GCC was installed to. The directory containing the library might depend on whether you want the 32-bit or 64-bit copy of the library, so for example would be - ${prefix}/lib64 on some systems. + ${prefix}/lib64 on some systems. The exact environment variable to use will depend on your - platform, e.g. DYLD_LIBRARY_PATH for Darwin, - LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit - and SHLIB_PATH for HP-UX. + platform, e.g. DYLD_LIBRARY_PATH for Darwin, + LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 + for Solaris 32-/64-bit, + and SHLIB_PATH for HP-UX. See the man pages for ld, ldd @@ -411,7 +415,8 @@ rtld or dld.so. - Using LD_LIBRARY_PATH is not always the best solution, Finding Dynamic or Shared + Using LD_LIBRARY_PATH is not always the best solution, + Finding Dynamic or Shared Libraries in the manual gives some alternatives. @@ -425,20 +430,20 @@ - If the only functions from libstdc++.a + If the only functions from libstdc++.a which you need are language support functions (those listed in clause 18 of the standard, e.g., new and delete), then try linking against - libsupc++.a, which is a subset of - libstdc++.a. (Using gcc + libsupc++.a, which is a subset of + libstdc++.a. (Using gcc instead of g++ and explicitly linking in - libsupc++.a via -lsupc++ + libsupc++.a via for the final link step will do it). This library contains only those support routines, one per object file. But if you are using anything from the rest of the library, such as IOStreams or vectors, then you'll still need pieces from - libstdc++.a. + libstdc++.a. @@ -461,14 +466,15 @@ for background reasons.) - Some of the object files which make up libstdc++.a are rather large. + Some of the object files which make up + libstdc++.a are rather large. If you create a statically-linked executable with - -static, those large object files are suddenly part + , those large object files are suddenly part of your executable. Historically the best way around this was to only place a very few functions (often only a single one) in each source/object file; then extracting a single function is the same - as extracting a single .o file. For libstdc++ this is only - possible to a certain extent; the object files in question contain + as extracting a single .o file. For libstdc++ this + is only possible to a certain extent; the object files in question contain template classes and template functions, pre-instantiated, and splitting those up causes severe maintenance headaches. @@ -477,8 +483,8 @@ collection in the GNU linker to get a result similar to separating each symbol into a separate source and object files. On these platforms, GNU ld can place each function and variable into its own - section in a .o file. The GNU linker can then perform garbage - collection on unused sections; this reduces the situation to only + section in a .o file. The GNU linker can then perform + garbage collection on unused sections; this reduces the situation to only copying needed functions into the executable, as before, but all happens automatically. @@ -509,13 +515,14 @@ However, the reality is that libstdc++ is targeted and optimized - for GCC/g++. This means that often libstdc++ uses specific, - non-standard features of g++ that are not present in older + for GCC/G++. This means that often libstdc++ uses specific, + non-standard features of G++ that are not present in older versions of proprietary compilers. It may take as much as a year or two after an official release of GCC that contains these features for proprietary tools to support these constructs. + Recent versions of libstdc++ are known to work with the Clang compiler. In the near past, specific released versions of libstdc++ have been known to work with versions of the EDG C++ compiler, and vendor-specific proprietary C++ compilers such as the Intel ICC @@ -528,7 +535,7 @@ - No 'long long' type on Solaris? + No 'long long' type on Solaris? @@ -555,13 +562,14 @@ - On Solaris, g++ (but not gcc) always defines the preprocessor - macro _XOPEN_SOURCE. On GNU/Linux, the same happens + On Solaris, g++ (but not gcc) + always defines the preprocessor macro + _XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This is not an exhaustive list; other macros and other platforms are also affected.) These macros are typically used in C library headers, guarding new - versions of functions from their older versions. The C++ standard + versions of functions from their older versions. The C++98 standard library includes the C standard library, but it requires the C90 version, which for backwards-compatibility reasons is often not the default for many vendors. @@ -571,13 +579,14 @@ Usually the issue involves I/O-related typedefs. In order to ensure correctness, the compiler simply predefines those symbols. - Note that it's not enough to #define them only when the library is + Note that it's not enough to #define them only when the library is being built (during installation). Since we don't have an 'export' keyword, much of the library exists as headers, which means that the symbols must also be defined as your programs are parsed and compiled. - To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in + To see which symbols are defined, look for + CPLUSPLUS_CPP_SPEC in the gcc config headers for your target (and try changing them to see what happens when building complicated code). You can also run g++ -E -dM - < /dev/null" to display @@ -600,10 +609,13 @@ - This is a long-standing bug in the OS X support. Fortunately, - the patch is quite simple, and well-known. - Here's a - link to the solution. + + This answer is old and probably no longer be relevant. + + + This was a long-standing bug in the OS X support. Fortunately, the + patch + was quite simple, and well-known. @@ -616,9 +628,10 @@ - - - Support for atomic integer operations is/was broken on i386 + + This answer is old and probably no longer be relevant. + + Support for atomic integer operations was broken on i386 platforms. The assembly code accidentally used opcodes that are only available on the i486 and later. So if you configured GCC to target, for example, i386-linux, but actually used the programs @@ -638,6 +651,9 @@ + + This answer is old and probably no longer be relevant. + The atomic locking routines for MIPS targets requires MIPS II and later. A patch went in just after the 3.3 release to @@ -661,7 +677,7 @@ When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system C library (glibc) version 2.2.5 which contains necessary bugfixes. - Most GNU/Linux distros make more recent versions available now. + All GNU/Linux distros make more recent versions available now. libstdc++ 4.6.0 and later require glibc 2.3 or later for this localization and formatting code. @@ -680,10 +696,13 @@ + + This answer is old and probably no longer be relevant. + Older versions of FreeBSD's C library do not have sufficient support for wide character functions, and as a result the - libstdc++ configury decides that wchar_t support should be + libstdc++ configury decides that wchar_t support should be disabled. In addition, the libstdc++ platform checks that enabled wchar_t were quite strict, and not granular enough to detect when the minimal support to @@ -713,7 +732,7 @@ Short answer: Pretty much everything works except for some corner cases. Support for localization - in locale may be incomplete on non-GNU + in locale may be incomplete on some non-GNU platforms. Also dependent on the underlying platform is support for wchar_t and long long specializations, and details of thread support. @@ -745,12 +764,12 @@ published on the WG21 website. - Some of these issues have resulted in code changes in libstdc++. + Many of these issues have resulted in code changes in libstdc++. If you think you've discovered a new bug that is not listed, please post a message describing your problem to the author of - the library issues list or the Usenet group comp.lang.c++.moderated. + the library issues list. @@ -798,7 +817,7 @@ One of the most-reported non-bug reports. Executing a sequence like: - + #include <fstream> ... std::fstream fs("a_file"); @@ -807,7 +826,7 @@ // . fs.close(); fs.open("a_new_file"); - + All operations on the re-opened fs will fail, or at @@ -835,15 +854,15 @@ - Many warnings are emitted when -Weffc++ is used. Making - libstdc++ -Weffc++-clean is not a goal of the project, + Many warnings are emitted when is used. Making + libstdc++ -clean is not a goal of the project, for a few reasons. Mainly, that option tries to enforce object-oriented programming, while the Standard Library isn't necessarily trying to be OO. We do, however, try to have libstdc++ sources as clean as possible. If - you see some simple changes that pacify -Weffc++ + you see some simple changes that pacify without other drawbacks, send us a patch. @@ -879,19 +898,20 @@ If you are using headers in - ${prefix}/include/g++-3, or if the installed - library's name looks like libstdc++-2.10.a or - libstdc++-libc6-2.10.so, then you are using the - old libstdc++-v2 library, which is nonstandard and + ${prefix}/include/g++-3, or if + the installed library's name looks like + libstdc++-2.10.a or + libstdc++-libc6-2.10.so, then + you are using the old libstdc++-v2 library, which is non-standard and unmaintained. Do not report problems with -v2 to the -v3 mailing list. - For GCC versions 3.0 and 3.1 the libstdc++ header files are - installed in ${prefix}/include/g++-v3 (see the - 'v'?). Starting with version 3.2 the headers are installed in - ${prefix}/include/c++/${version} as this prevents - headers from previous versions being found by mistake. + For GCC versions 3.0 and 3.1 the libstdc++ header files are installed in + ${prefix}/include/g++-v3 + (see the 'v'?). Starting with version 3.2 the headers are installed in + ${prefix}/include/c++/${version} + as this prevents headers from previous versions being found by mistake. @@ -907,7 +927,7 @@ If you see compilation errors containing messages about - foo Concept and something to do with a + foo Concept and something to do with a constraints member function, then most likely you have violated one of the requirements for types used during instantiation of template containers and functions. For @@ -939,17 +959,17 @@ - // compile your library components - g++ -fPIC -c a.cc - g++ -fPIC -c b.cc + Compile your library components: + g++ -fPIC -c a.cc + g++ -fPIC -c b.cc ... - g++ -fPIC -c z.cc + g++ -fPIC -c z.cc - // create your library - g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o + Create your library: + g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o - // link the executable - g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl + Link the executable: + g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl @@ -964,7 +984,7 @@ A few people have reported that the standard containers appear to leak memory when tested with memory checkers such as - valgrind. + valgrind. Under some configurations the library's allocators keep free memory in a pool for later reuse, rather than returning it to the OS. Although this memory is always reachable by the library and is never @@ -1108,8 +1128,8 @@ compatibility documentation. - The FAQ for SGI's STL (one jump off of their main page) is - still recommended reading. + The FAQ + for SGI's STL is still recommended reading. @@ -1189,7 +1209,7 @@ ABI stands for Application Binary - Interface. Conventionally, it refers to a great + Interface. Conventionally, it refers to a great mass of details about how arguments are arranged on the call stack and/or in registers, and how various types are arranged and padded in structs. A single CPU design may suffer @@ -1207,18 +1227,24 @@ Users usually want an ABI to encompass more detail, allowing libraries built with different compilers (or different releases of the same compiler!) to be linked together. For C++, this includes many more - details than for C, and CPU designers (for good reasons elaborated - below) have not stepped up to publish C++ ABIs. The details include - virtual function implementation, struct inheritance layout, name - mangling, and exception handling. Such an ABI has been defined for - GNU C++, and is immediately useful for embedded work relying only on - a free-standing implementation that doesn't include (much - of) the standard library. It is a good basis for the work to come. - + details than for C, and most CPU designers (for good reasons elaborated + below) have not stepped up to publish C++ ABIs. Such an ABI has been + defined for the Itanium architecture (see + C++ + ABI for Itanium) and that is used by G++ and other compilers + as the de facto standard ABI on many common architectures (including x86). + G++ can also use the ARM architecture's EABI, for embedded + systems relying only on a free-standing implementation that + doesn't include (much of) the standard library, and the GNU EABI for + hosted implementations on ARM. Those ABIs cover low-level details + such as virtual function implementation, struct inheritance layout, + name mangling, and exception handling. + A useful C++ ABI must also incorporate many details of the standard library implementation. For a C ABI, the layouts of a few structs - (such as FILE, stat, jmpbuf, and the like) and a few macros suffice. + (such as FILE, stat, jmpbuf, + and the like) and a few macros suffice. For C++, the details include the complete set of names of functions and types used, the offsets of class members and virtual functions, and the actual definitions of all inlines. C++ exposes many more @@ -1230,9 +1256,9 @@ There are ways to help isolate library implementation details from the - ABI, but they trade off against speed. Library details used in - inner loops (e.g., getchar) must be exposed and frozen for all - time, but many others may reasonably be kept hidden from user code, + ABI, but they trade off against speed. Library details used in inner + loops (e.g., getchar) must be exposed and frozen for + all time, but many others may reasonably be kept hidden from user code, so they may later be changed. Deciding which, and implementing the decisions, must happen before you can reasonably document a candidate C++ ABI that encompasses the standard library. diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml index d1c622cdd1a..ee3a27e09b1 100644 --- a/libstdc++-v3/doc/xml/manual/abi.xml +++ b/libstdc++-v3/doc/xml/manual/abi.xml @@ -1100,8 +1100,8 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm"> - Intel Compilers for Linux Compatibility with the GNU Compilers + xlink:href="https://software.intel.com/en-us/articles/intel-compilers-for-linux-compatibility-with-gnu-compilers"> + Intel Compilers for Linux: Compatibility with GNU Compilers </link> @@ -1109,7 +1109,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://download.oracle.com/docs/cd/E19963-01/html/819-0690/index.html"> + xlink:href="http://docs.oracle.com/cd/E23824_01/html/819-0690/index.html"> Linker and Libraries Guide (document 819-0690) </link> @@ -1143,7 +1143,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://www.arm.com/miscPDFs/8033.pdf"> + xlink:href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0036b/index.html"> C++ ABI for the ARM Architecture </link> @@ -1179,7 +1179,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf"> + xlink:href="http://syrcose.ispras.ru/2009/files/02_paper.pdf"> Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems </link> diff --git a/libstdc++-v3/doc/xml/manual/allocator.xml b/libstdc++-v3/doc/xml/manual/allocator.xml index 57a7d03793b..3aaad338ade 100644 --- a/libstdc++-v3/doc/xml/manual/allocator.xml +++ b/libstdc++-v3/doc/xml/manual/allocator.xml @@ -137,7 +137,7 @@ <section xml:id="allocator.impl"><info><title>Implementation -

    Interface Design +
    Interface Design @@ -161,7 +161,7 @@
    -
    Selecting Default Allocation Policy +
    Selecting Default Allocation Policy @@ -227,7 +227,7 @@
    -
    Disabling Memory Caching +
    Disabling Memory Caching diff --git a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml index 1450162673b..82fc91278da 100644 --- a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml +++ b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml @@ -163,7 +163,7 @@ else return false. (assume a 32-bit system where, size_t is a 32-bit entity). - +
    Bitmap Allocator Memory Map diff --git a/libstdc++-v3/doc/xml/manual/build_hacking.xml b/libstdc++-v3/doc/xml/manual/build_hacking.xml index 912658bb2ce..afcc3736d79 100644 --- a/libstdc++-v3/doc/xml/manual/build_hacking.xml +++ b/libstdc++-v3/doc/xml/manual/build_hacking.xml @@ -76,7 +76,7 @@ in the build directory starts the build process. The all targ
    What Comes from Where -
    +
    Configure and Build File Dependencies diff --git a/libstdc++-v3/doc/xml/manual/codecvt.xml b/libstdc++-v3/doc/xml/manual/codecvt.xml index 76120060e30..3f65e18f023 100644 --- a/libstdc++-v3/doc/xml/manual/codecvt.xml +++ b/libstdc++-v3/doc/xml/manual/codecvt.xml @@ -595,7 +595,7 @@ codecvt usage. <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://www.opengroup.org/austin/"> + xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/"> System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) </link> diff --git a/libstdc++-v3/doc/xml/manual/ctype.xml b/libstdc++-v3/doc/xml/manual/ctype.xml index 4e9777d7846..d0be7fb068a 100644 --- a/libstdc++-v3/doc/xml/manual/ctype.xml +++ b/libstdc++-v3/doc/xml/manual/ctype.xml @@ -14,7 +14,7 @@
    Implementation -
    Specializations +
    Specializations diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml index 4948594dc9f..8b5380dfeec 100644 --- a/libstdc++-v3/doc/xml/manual/debug_mode.xml +++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml @@ -175,7 +175,7 @@ which always works correctly. containers: -
    +
    Debugging Containers @@ -267,7 +267,7 @@ which always works correctly. containers have additional debug capability. -
    +
    Debugging Containers C++11 diff --git a/libstdc++-v3/doc/xml/manual/documentation_hacking.xml b/libstdc++-v3/doc/xml/manual/documentation_hacking.xml index ba53721171b..623080e8db1 100644 --- a/libstdc++-v3/doc/xml/manual/documentation_hacking.xml +++ b/libstdc++-v3/doc/xml/manual/documentation_hacking.xml @@ -206,7 +206,7 @@
    Prerequisites -
    +
    Doxygen Prerequisites @@ -582,7 +582,7 @@ doubt, consult the following table. -
    +
    HTML to Doxygen Markup Comparison @@ -652,7 +652,7 @@
    Prerequisites -
    +
    Docbook Prerequisites @@ -1029,7 +1029,7 @@ make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh" detailed in the table below. -
    +
    HTML to Docbook XML Markup Comparison @@ -1107,7 +1107,7 @@ make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh" equivalents are listed in the table below. -
    +
    Docbook XML Element Use diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index ce8c14e9435..282684da35d 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -165,7 +165,7 @@ _Alloc_traits have been removed. underlying allocator was not user-configurable. -
    +
    Extension Allocators @@ -230,7 +230,7 @@ _Alloc_traits have been removed. the first released version of GCC that included the extension allocator. -
    +
    Extension Allocators Continued diff --git a/libstdc++-v3/doc/xml/manual/extensions.xml b/libstdc++-v3/doc/xml/manual/extensions.xml index 7b35d056344..c4120c9b06f 100644 --- a/libstdc++-v3/doc/xml/manual/extensions.xml +++ b/libstdc++-v3/doc/xml/manual/extensions.xml @@ -13,7 +13,7 @@ -</info> +<preface xml:id="manual.ext.preface"><info><title/></info> <?dbhtml filename="ext_preface.html"?> <para> Here we will make an attempt at describing the non-Standard diff --git a/libstdc++-v3/doc/xml/manual/locale.xml b/libstdc++-v3/doc/xml/manual/locale.xml index 01ea1895e95..ada5ec723d7 100644 --- a/libstdc++-v3/doc/xml/manual/locale.xml +++ b/libstdc++-v3/doc/xml/manual/locale.xml @@ -560,7 +560,7 @@ global locale" (emphasis Paolo), that is: <biblioentry> <title> <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://www.opengroup.org/austin/"> + xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/"> System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) </link> diff --git a/libstdc++-v3/doc/xml/manual/messages.xml b/libstdc++-v3/doc/xml/manual/messages.xml index 72d2f0a554b..b747ba2aa67 100644 --- a/libstdc++-v3/doc/xml/manual/messages.xml +++ b/libstdc++-v3/doc/xml/manual/messages.xml @@ -1,5 +1,5 @@
    + xml:id="std.localization.facet.messages" xreflabel="Messages"> messages @@ -12,8 +12,8 @@ -The std::messages facet implements message retrieval functionality -equivalent to Java's java.text.MessageFormat .using either GNU gettext +The std::messages facet implements message retrieval functionality +equivalent to Java's java.text.MessageFormat using either GNU gettext or IEEE 1003.1-200 functions. @@ -21,7 +21,7 @@ or IEEE 1003.1-200 functions. -The std::messages facet is probably the most vaguely defined facet in +The std::messages facet is probably the most vaguely defined facet in the standard library. It's assumed that this facility was built into the standard library in order to convert string literals from one locale to the other. For instance, converting the "C" locale's @@ -61,42 +61,42 @@ While the virtual functions are: -catalog do_open(const string&, const locale&) const +catalog do_open(const string& name, const locale& loc) const
    --1- Returns: A value that may be passed to get() to retrieve a -message, from the message catalog identified by the string name +-1- Returns: A value that may be passed to get() to retrieve a +message, from the message catalog identified by the string name according to an implementation-defined mapping. The result can be used -until it is passed to close(). Returns a value less than 0 if no such +until it is passed to close(). Returns a value less than 0 if no such catalog can be opened.
    -string_type do_get(catalog, int, int, const string_type&) const +string_type do_get(catalog cat, int set , int msgid, const string_type& dfault) const
    --3- Requires: A catalog cat obtained from open() and not yet closed. --4- Returns: A message identified by arguments set, msgid, and dfault, +-3- Requires: A catalog cat obtained from open() and not yet closed. +-4- Returns: A message identified by arguments set, msgid, and dfault, according to an implementation-defined mapping. If no such message can -be found, returns dfault. +be found, returns dfault.
    -void do_close(catalog) const +void do_close(catalog cat) const
    --5- Requires: A catalog cat obtained from open() and not yet closed. --6- Effects: Releases unspecified resources associated with cat. +-5- Requires: A catalog cat obtained from open() and not yet closed. +-6- Effects: Releases unspecified resources associated with cat. -7- Notes: The limit on such resources, if any, is implementation-defined. @@ -488,7 +488,7 @@ void test01() <link xmlns:xlink="http://www.w3.org/1999/xlink" - xlink:href="http://www.opengroup.org/austin/"> + xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/"> System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) </link> diff --git a/libstdc++-v3/doc/xml/manual/parallel_mode.xml b/libstdc++-v3/doc/xml/manual/parallel_mode.xml index 6dc81c9fcb6..8ddec657d7c 100644 --- a/libstdc++-v3/doc/xml/manual/parallel_mode.xml +++ b/libstdc++-v3/doc/xml/manual/parallel_mode.xml @@ -191,7 +191,7 @@ flags for atomic operations.) parallel algorithms that can be used in a similar manner: -
    +
    Parallel Algorithms diff --git a/libstdc++-v3/doc/xml/manual/profile_mode.xml b/libstdc++-v3/doc/xml/manual/profile_mode.xml index 63c3928a833..0125f55a629 100644 --- a/libstdc++-v3/doc/xml/manual/profile_mode.xml +++ b/libstdc++-v3/doc/xml/manual/profile_mode.xml @@ -215,7 +215,7 @@ vector-size: improvement = 3: call stack = 0x804842c ... -
    +
    Profile Code Location @@ -690,7 +690,7 @@ it helps the user focus on the key problems and ignore the uninteresting ones. specific needs or time budgets. -
    +
    Profile Diagnostics diff --git a/libstdc++-v3/doc/xml/manual/shared_ptr.xml b/libstdc++-v3/doc/xml/manual/shared_ptr.xml index 950e4e0d1ff..0658796625b 100644 --- a/libstdc++-v3/doc/xml/manual/shared_ptr.xml +++ b/libstdc++-v3/doc/xml/manual/shared_ptr.xml @@ -59,7 +59,7 @@ technique known as type erasure.
    Implementation -
    Class Hierarchy +
    Class Hierarchy @@ -155,7 +155,7 @@ deprecated in C++11 mode.
    -
    Thread Safety +
    Thread Safety The @@ -213,7 +213,7 @@ Policy below for details.
    -
    Selecting Lock Policy +
    Selecting Lock Policy @@ -282,7 +282,7 @@ used when libstdc++ is built without --enable-threads.
    -
    Related functions and classes +
    Related functions and classes @@ -350,7 +350,7 @@ be private.
    Use -
    Examples +
    Examples Examples of use can be found in the testsuite, under @@ -361,21 +361,13 @@ be private.
    -
    Unresolved Issues +
    Unresolved Issues The shared_ptr atomic access clause in the C++11 standard is not implemented in GCC. - - The _S_single policy uses atomics when used in MT - code, because it uses the same dispatcher functions that check - __gthread_active_p(). This could be - addressed by providing template specialisations for some members - of _Sp_counted_base<_S_single>. - - Unlike Boost, this implementation does not use separate classes for the pointer+deleter and pointer+deleter+allocator cases in diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml index 3bc6a16722b..1679ee0c808 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml @@ -31,7 +31,7 @@ particular release. Broken/Partial --> -
    +
    C++ 1998/2003 Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml index cad41112505..f0a256d6831 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2011.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2011.xml @@ -40,7 +40,7 @@ particular release. Broken/Partial --> -
    +
    C++ 2011 Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml index ff14c4c356a..c6f89c96ee3 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2014.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2014.xml @@ -24,7 +24,7 @@ This page describes the C++14 and library TS support in mainline GCC SVN, not in any particular release. -
    +
    C++ 2014 Implementation Status @@ -251,7 +251,7 @@ not in any particular release.
    - +
    C++ Technical Specifications Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml index 3664f3017bb..32ad20a2fb2 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml @@ -35,7 +35,7 @@ release. Broken/Partial --> -
    +
    C++ TR1 Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml index 540c0169295..e8d445116a2 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml @@ -29,7 +29,7 @@ particular release. Broken/Partial --> -
    +
    C++ TR 24733 Implementation Status diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml index dfc5cef2408..3256c585a43 100644 --- a/libstdc++-v3/doc/xml/manual/using.xml +++ b/libstdc++-v3/doc/xml/manual/using.xml @@ -17,7 +17,7 @@ By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -
    +
    C++ Command Options @@ -115,7 +115,7 @@ C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -
    +
    C++ 1998 Library Headers @@ -176,7 +176,7 @@
    - +
    C++ 1998 Library Headers for C Library Facilities @@ -222,7 +222,7 @@ mode, i.e. -std=c++11 or -std=gnu++11. -
    +
    C++ 2011 Library Headers @@ -308,7 +308,7 @@ mode, i.e. -std=c++11 or -std=gnu++11. -
    +
    C++ 2011 Library Headers for C Library Facilities @@ -362,7 +362,7 @@ mode, i.e. -std=c++11 or -std=gnu++11. In addition, TR1 includes as: -
    +
    C++ TR 1 Library Headers @@ -398,7 +398,7 @@ mode, i.e. -std=c++11 or -std=gnu++11. -
    +
    C++ TR 1 Library Headers for C Library Facilities @@ -441,7 +441,7 @@ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -
    +
    C++ TR 24733 Decimal Floating-Point Header @@ -458,7 +458,7 @@ compiler supports scalar decimal floating-point types defined via Also included are files for the C++ ABI interface: -
    +
    C++ ABI Headers @@ -474,7 +474,7 @@ compiler supports scalar decimal floating-point types defined via And a large variety of extensions. -
    +
    Extension Headers @@ -537,7 +537,7 @@ compiler supports scalar decimal floating-point types defined via -
    +
    Extension Debug Headers @@ -569,7 +569,7 @@ compiler supports scalar decimal floating-point types defined via -
    +
    Extension Profile Headers @@ -599,7 +599,7 @@ compiler supports scalar decimal floating-point types defined via -
    +
    Extension Parallel Headers