From 6247d6df14aa7893a5eb0ca1c1e7aa4331a3e8cb Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Wed, 29 Aug 2012 02:09:55 +0000 Subject: [PATCH] *: Regenerate. 2012-08-28 Benjamin Kosnik * doc/html/*: Regenerate. From-SVN: r190770 --- libstdc++-v3/ChangeLog | 4 + libstdc++-v3/doc/html/api.html | 38 +- libstdc++-v3/doc/html/bk02.html | 10 +- libstdc++-v3/doc/html/bk03.html | 10 +- libstdc++-v3/doc/html/faq.html | 298 +- libstdc++-v3/doc/html/index.html | 24 +- libstdc++-v3/doc/html/manual/abi.html | 140 +- libstdc++-v3/doc/html/manual/algorithms.html | 32 +- libstdc++-v3/doc/html/manual/api.html | 52 +- .../html/manual/appendix_contributing.html | 52 +- .../doc/html/manual/appendix_free.html | 26 +- .../doc/html/manual/appendix_gfdl.html | 48 +- .../doc/html/manual/appendix_gpl.html | 76 +- .../doc/html/manual/appendix_porting.html | 46 +- libstdc++-v3/doc/html/manual/associative.html | 30 +- libstdc++-v3/doc/html/manual/atomics.html | 28 +- libstdc++-v3/doc/html/manual/backwards.html | 100 +- .../doc/html/manual/bitmap_allocator.html | 24 +- libstdc++-v3/doc/html/manual/bk01pt02.html | 20 +- .../doc/html/manual/bk01pt02ch05s02.html | 22 +- .../doc/html/manual/bk01pt03ch17s02.html | 24 +- .../doc/html/manual/bk01pt03ch17s03.html | 28 +- .../doc/html/manual/bk01pt03ch17s04.html | 66 +- .../doc/html/manual/bk01pt03ch18s02.html | 22 +- .../doc/html/manual/bk01pt03ch18s03.html | 28 +- .../doc/html/manual/bk01pt03ch18s04.html | 36 +- .../doc/html/manual/bk01pt03ch18s05.html | 22 +- .../doc/html/manual/bk01pt03ch19s02.html | 44 +- .../doc/html/manual/bk01pt03ch19s03.html | 22 +- .../doc/html/manual/bk01pt03ch19s04.html | 22 +- .../doc/html/manual/bk01pt03ch19s05.html | 32 +- .../doc/html/manual/bk01pt03ch19s06.html | 26 +- .../doc/html/manual/bk01pt03ch19s07.html | 108 +- .../doc/html/manual/bk01pt03ch20s02.html | 20 +- .../doc/html/manual/bk01pt03ch20s03.html | 28 +- .../doc/html/manual/bk01pt03ch20s04.html | 20 +- .../doc/html/manual/bk01pt03ch20s05.html | 20 +- .../doc/html/manual/bk01pt03ch21s02.html | 54 +- .../doc/html/manual/bk01pt03ch23s02.html | 20 +- .../doc/html/manual/bk01pt03ch30s02.html | 30 +- .../doc/html/manual/bk01pt03ch30s03.html | 20 +- .../doc/html/manual/bk01pt03pr01.html | 22 +- libstdc++-v3/doc/html/manual/bk01pt04.html | 16 +- libstdc++-v3/doc/html/manual/bugs.html | 200 +- libstdc++-v3/doc/html/manual/concurrency.html | 36 +- libstdc++-v3/doc/html/manual/configure.html | 28 +- libstdc++-v3/doc/html/manual/containers.html | 36 +- .../doc/html/manual/containers_and_c.html | 18 +- libstdc++-v3/doc/html/manual/debug.html | 52 +- libstdc++-v3/doc/html/manual/debug_mode.html | 28 +- libstdc++-v3/doc/html/manual/diagnostics.html | 26 +- .../html/manual/documentation_hacking.html | 228 +- .../doc/html/manual/dynamic_memory.html | 22 +- .../doc/html/manual/ext_algorithms.html | 20 +- .../doc/html/manual/ext_compile_checks.html | 20 +- .../doc/html/manual/ext_concurrency.html | 30 +- .../doc/html/manual/ext_containers.html | 18 +- .../doc/html/manual/ext_demangling.html | 20 +- libstdc++-v3/doc/html/manual/ext_io.html | 26 +- .../doc/html/manual/ext_iterators.html | 20 +- .../doc/html/manual/ext_numerics.html | 20 +- .../doc/html/manual/ext_utilities.html | 20 +- libstdc++-v3/doc/html/manual/extensions.html | 22 +- libstdc++-v3/doc/html/manual/facets.html | 140 +- libstdc++-v3/doc/html/manual/fstreams.html | 24 +- .../generalized_numeric_operations.html | 22 +- libstdc++-v3/doc/html/manual/index.html | 38 +- libstdc++-v3/doc/html/manual/internals.html | 34 +- libstdc++-v3/doc/html/manual/intro.html | 20 +- libstdc++-v3/doc/html/manual/io.html | 24 +- libstdc++-v3/doc/html/manual/io_and_c.html | 20 +- libstdc++-v3/doc/html/manual/iterators.html | 28 +- libstdc++-v3/doc/html/manual/license.html | 168 +- .../doc/html/manual/localization.html | 54 +- libstdc++-v3/doc/html/manual/make.html | 18 +- libstdc++-v3/doc/html/manual/memory.html | 132 +- .../doc/html/manual/mt_allocator.html | 24 +- libstdc++-v3/doc/html/manual/numerics.html | 30 +- .../doc/html/manual/numerics_and_c.html | 20 +- libstdc++-v3/doc/html/manual/pairs.html | 20 +- .../doc/html/manual/parallel_mode.html | 32 +- .../policy_based_data_structures_test.html | 2652 +++++++++-------- .../html/manual/policy_data_structures.html | 306 +- .../manual/policy_data_structures_biblio.html | 42 +- .../manual/policy_data_structures_design.html | 264 +- .../manual/policy_data_structures_using.html | 78 +- .../doc/html/manual/profile_mode.html | 40 +- libstdc++-v3/doc/html/manual/setup.html | 28 +- .../doc/html/manual/source_code_style.html | 1242 ++++---- .../doc/html/manual/source_design_notes.html | 1724 +++++------ .../doc/html/manual/source_organization.html | 190 +- libstdc++-v3/doc/html/manual/status.html | 178 +- libstdc++-v3/doc/html/manual/streambufs.html | 28 +- libstdc++-v3/doc/html/manual/strings.html | 58 +- .../doc/html/manual/stringstreams.html | 18 +- libstdc++-v3/doc/html/manual/support.html | 40 +- libstdc++-v3/doc/html/manual/termination.html | 22 +- libstdc++-v3/doc/html/manual/test.html | 74 +- libstdc++-v3/doc/html/manual/traits.html | 18 +- libstdc++-v3/doc/html/manual/using.html | 22 +- .../doc/html/manual/using_concurrency.html | 50 +- .../html/manual/using_dynamic_or_shared.html | 32 +- .../doc/html/manual/using_exceptions.html | 86 +- .../doc/html/manual/using_headers.html | 36 +- .../doc/html/manual/using_macros.html | 16 +- .../doc/html/manual/using_namespaces.html | 26 +- libstdc++-v3/doc/html/manual/utilities.html | 26 +- 107 files changed, 5981 insertions(+), 4863 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c92bbb37339..f9542ec1daa 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2012-08-28 Benjamin Kosnik + + * doc/html/*: Regenerate. + 2012-08-28 Benjamin Kosnik PR libstdc++/54102 diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index a9cf17fbf7b..9209f90be69 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -1,16 +1,20 @@ - - -The GNU C++ Library API Reference

The GNU C++ Library API Reference


+


The GNU C++ library sources have been specially formatted so that with the proper invocation of another tool (Doxygen), a set of indexed reference material can generated from the sources files @@ -20,29 +24,29 @@ particular include file, looking at inheritance diagrams, etc.

The API documentation, rendered into HTML, can be viewed online: -

+

diff --git a/libstdc++-v3/doc/html/bk02.html b/libstdc++-v3/doc/html/bk02.html index f95372ebd79..c517b9632cb 100644 --- a/libstdc++-v3/doc/html/bk02.html +++ b/libstdc++-v3/doc/html/bk02.html @@ -1,3 +1,7 @@ - - -<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , runtime , library "/><link rel="home" href="index.html" title="The GNU C++ Library"/><link rel="up" href="index.html" title="The GNU C++ Library"/><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility"/><link rel="next" href="api.html" title="The GNU C++ Library API Reference"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="api.html">The GNU C++ Library API Reference</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td align="left" valign="top">Backwards Compatibility </td><td align="center"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top"> The GNU C++ Library API Reference</td></tr></table></div></body></html> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title> diff --git a/libstdc++-v3/doc/html/bk03.html b/libstdc++-v3/doc/html/bk03.html index 5a73901a9c9..b5680730c1c 100644 --- a/libstdc++-v3/doc/html/bk03.html +++ b/libstdc++-v3/doc/html/bk03.html @@ -1,3 +1,7 @@ - - -<meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"/><meta name="keywords" content=" ISO C++ , runtime , library "/><link rel="home" href="index.html" title="The GNU C++ Library"/><link rel="up" href="index.html" title="The GNU C++ Library"/><link rel="prev" href="api.html" title="The GNU C++ Library API Reference"/><link rel="next" href="faq.html" title="Frequently Asked Questions"/></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"/></tr><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr/></div><div class="book"><div class="titlepage"><hr/></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td align="left"><a accesskey="p" href="api.html">Prev</a> </td><td align="center"> </td><td align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td align="left" valign="top">The GNU C++ Library API Reference </td><td align="center"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html> +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title> diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 1a47a5b26a2..1c7ee04bfb0 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -1,10 +1,14 @@ - - -Frequently Asked Questions

Frequently Asked Questions



1.1. What is libstdc++?
1.2. Why should I use libstdc++? @@ -18,7 +22,7 @@ What happened to the older libg++? I need that!
1.7. What if I have more questions? -
2.1. +
2.1. What are the license terms for libstdc++?
2.2. So any program which uses libstdc++ falls under the GPL? @@ -26,7 +30,7 @@ How is that different from the GNU {Lesser,Library} GPL?
2.4. I see. So, what restrictions are there on programs that use the library? -
3.1. How do I install libstdc++? +
3.1. How do I install libstdc++?
3.2. How does one get current libstdc++ sources?
3.3. How do I know if it works?
3.4. How do I insure that the dynamically linked library will be found? @@ -34,7 +38,7 @@ What's libsupc++?
3.6. This library is HUGE! -
4.1. +
4.1. Can libstdc++ be used with non-GNU compilers?
4.2. No 'long long' type on Solaris? @@ -50,13 +54,13 @@ Recent GNU/Linux glibc required?
4.8. Can't use wchar_t/wstring on FreeBSD -
5.1. +
5.1. What works already?
5.2. Bugs in the ISO C++ language or library specification
5.3. Bugs in the compiler (gcc/g++) and not libstdc++ -
6.1. +
6.1. Reopening a stream fails
6.2. -Weffc++ complains too much @@ -76,7 +80,7 @@ list::size() is O(n)!
6.9. Aw, that's easy to fix! -
7.1. +
7.1. string::iterator is not char*; vector<T>::iterator is not T*
7.2. What's next after libstdc++? @@ -91,7 +95,7 @@ What's an ABI and why is it so messy?
7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? -
1.1. +
1.1. What is libstdc++?
1.2. Why should I use libstdc++? @@ -105,19 +109,19 @@ What happened to the older libg++? I need that!
1.7. What if I have more questions? -

1.1.

+

1.1.

What is libstdc++? -

+

The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in chapters 17 through 27 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. -

1.2.

+ the web. +

1.2.

Why should I use libstdc++? -

+

The completion of the ISO C++ standardization gave the C++ community a powerful set of reuseable tools in the form of the C++ Standard Library. However, all existing C++ implementations are @@ -129,9 +133,9 @@ (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 + portability that are the hallmarks of an open-source project are being applied to libstdc++.

@@ -141,9 +145,9 @@ vector<>, iostreams, and algorithms.) Programmers will no longer need to “roll their own” nor be worried about platform-specific incompatibilities. -

1.3.

+

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, @@ -153,17 +157,17 @@ 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 homepage. If you have questions, ideas, code, or are just curious, sign up! -

1.4.

+

1.4.

When is libstdc++ going to be finished? -

+

Nathan Myers gave the best of all possible answers, responding to a Usenet article asking this question: Sooner, if you help. -

1.5.

+

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 the homepage) is a very good idea if you have something to @@ -172,17 +176,17 @@ anybody who is willing to help write documentation, for example, or has found a bug in code that we all thought was working and is willing to provide details, is more than welcome! -

1.6.

+

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.

More information in the backwards compatibility documentation -

1.7.

+

1.7.

What if I have more questions? -

+

If you have read the README file, 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 @@ -201,19 +205,19 @@ How is that different from the GNU {Lesser,Library} GPL?

2.4. I see. So, what restrictions are there on programs that use the library? -

2.1.

+

2.1.

What are the license terms for libstdc++? -

+

See our license description for these and related questions. -

2.2.

+

2.2.

So any program which uses libstdc++ falls under the GPL? -

+

No. The special exception permits use of the library in proprietary applications. -

2.3.

+

2.3.

How is that different from the GNU {Lesser,Library} GPL? -

+

The LGPL requires that users be able to replace the LGPL code with a modified version; this is trivial if the library in question is a C shared library. But there's no way to make that work with C++, where @@ -221,9 +225,9 @@ are expanded inside the code that uses the library. So to allow people to replace the library code, someone using the library would have to distribute their own source, rendering the LGPL equivalent to the GPL. -

2.4.

+

2.4.

I see. So, what restrictions are there on programs that use the library? -

+

None. We encourage such programs to be released as open source, but we won't punish you or sue you if you choose otherwise.

3.1. How do I install libstdc++? @@ -234,8 +238,8 @@ What's libsupc++?
3.6. This library is HUGE! -

3.1.

How do I install libstdc++? -

+

3.1.

How do I install libstdc++? +

Often libstdc++ comes pre-installed as an integral part of many existing GNU/Linux and Unix systems, as well as many embedded development tools. It may be necessary to install extra @@ -247,11 +251,11 @@ documentation for detailed instructions. You may wish to browse those files ahead of time to get a feel for what's required. -

3.2.

How does one get current libstdc++ sources? -

+

3.2.

How does one get current libstdc++ sources? +

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 @@ -262,7 +266,7 @@ Subversion, or SVN, is one of several revision control packages. It was selected for GNU projects because it's free (speech), free (beer), and very high - quality. The Subversion + quality. The Subversion home page has a better description.

The “anonymous client checkout” feature of SVN is @@ -270,21 +274,21 @@ the latest libstdc++ sources.

For more information - see SVN + see SVN details. -

3.3.

How do I know if it works? -

+

3.3.

How do I know if it works? +

Libstdc++ comes with its own validation testsuite, which includes conformance testing, regression testing, ABI testing, and performance testing. Please consult the - testing + testing documentation 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, please write up your idea and send it to the list! -

3.4.

How do I insure that the dynamically linked library will be found? -

+

3.4.

How do I insure that the dynamically linked library will be found? +

Depending on your platform and library version, the error message might be similar to one of the following:

@@ -317,9 +321,9 @@
     

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

3.5.

+

3.5.

What's libsupc++? -

+

If the only functions from libstdc++.a which you need are language support functions (those listed in clause 18 of the @@ -334,9 +338,9 @@ using anything from the rest of the library, such as IOStreams or vectors, then you'll still need pieces from libstdc++.a. -

3.6.

+

3.6.

This library is HUGE! -

+

Usually the size of libraries on disk isn't noticeable. When a link editor (or simply “linker”) pulls things from a static archive library, only the necessary object files are copied @@ -381,9 +385,9 @@ Recent GNU/Linux glibc required?

4.8. Can't use wchar_t/wstring on FreeBSD -

4.1.

+

4.1.

Can libstdc++ be used with non-GNU compilers? -

+

Perhaps.

Since the goal of ISO Standardization is for all C++ @@ -401,9 +405,9 @@ 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.

+

4.2.

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.

@@ -413,9 +417,9 @@ commonly reported platform affected was Solaris.

This has been fixed for libstdc++ releases greater than 3.0.3. -

4.3.

+

4.3.

_XOPEN_SOURCE and _GNU_SOURCE are always defined? -

On Solaris, g++ (but not gcc) always defines the preprocessor +

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.) @@ -439,18 +443,18 @@ g++ -E -dM - < /dev/null" to display a list of predefined macros for any particular installation.

This has been discussed on the mailing lists - quite a bit. + quite a bit.

This method is something of a wart. We'd like to find a cleaner solution, but nobody yet has contributed the time. -

4.4.

+

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, +

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

4.5.

+

4.5.

Threading is broken on i386? -

+

Support for atomic integer operations is/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 @@ -458,9 +462,9 @@ on an i686, then you would encounter no problems. Only when actually running the code on a i386 will the problem appear.

This is fixed in 3.2.2. -

4.6.

+

4.6.

MIPS atomic operations -

+

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 @@ -468,9 +472,9 @@

The mips*-*-linux* port continues to use the MIPS II routines, and more work in this area is expected. -

4.7.

+

4.7.

Recent GNU/Linux glibc required? -

When running on GNU/Linux, libstdc++ 3.2.1 (shared library version +

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. @@ -479,9 +483,9 @@

The guideline is simple: the more recent the C++ library, the more recent the C library. (This is also documented in the main GCC installation instructions.) -

4.8.

+

4.8.

Can't use wchar_t/wstring on FreeBSD -

+

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 @@ -498,9 +502,9 @@ Bugs in the ISO C++ language or library specification

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

5.1.

+

5.1.

What works already? -

+

Short answer: Pretty much everything works except for some corner cases. Support for localization in locale may be incomplete on non-GNU @@ -512,24 +516,24 @@ C++98, TR1, and C++11. -

5.2.

+

5.2.

Bugs in the ISO C++ language or library specification -

+

Unfortunately, there are some.

For those people who are not part of the ISO Library Group (i.e., nearly all of us needing to read this page in the first place), a public list of the library defects is occasionally - published on the WG21 + published on the WG21 website. Some 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. -

5.3.

+

5.3.

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

+

On occasion, the compiler is wrong. Please be advised that this happens much less often than one would think, and avoid jumping to conclusions. @@ -540,7 +544,7 @@ these lists with terms describing your issue.

Before reporting a bug, please examine the - bugs database with the + bugs database with the category set to “g++”.

6.1. Reopening a stream fails @@ -562,19 +566,19 @@ list::size() is O(n)!
6.9. Aw, that's easy to fix! -

6.1.

+

6.1.

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 @@ -589,9 +593,9 @@ Update: for GCC 4.0 we implemented the resolution of DR #409 and open() now calls clear() on success! -

6.2.

+

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, for a few reasons. Mainly, that option tries to enforce @@ -601,21 +605,21 @@ We do, however, try to have libstdc++ sources as clean as possible. If you see some simple changes that pacify -Weffc++ without other drawbacks, send us a patch. -

6.3.

+

6.3.

Ambiguous overloads after including an old-style header -

+

Another problem is the rel_ops namespace and the template comparison operator functions contained therein. If they become visible in the same namespace as other comparison functions (e.g., “using” them and the <iterator> header), then you will suddenly be faced with huge numbers of ambiguity errors. This was discussed on the -v3 list; Nathan Myers - sums + sums things up here. The collisions with vector/string iterator types have been fixed for 3.1. -

6.4.

+

6.4.

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 @@ -629,10 +633,10 @@ '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.

+

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 constraints member function, then most @@ -646,31 +650,31 @@ checks, is available in the Diagnostics. chapter of the manual. -

6.6.

+

6.6.

Program crashes when using library code in a dynamically-loaded library -

+

If you are using the C++ library across dynamically-loaded 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
-    ...
-    g++ -fPIC -c z.cc
-
-    // 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
-    

6.7.

+


+    // compile your library components
+    g++ -fPIC -c a.cc
+    g++ -fPIC -c b.cc
+    ...
+    g++ -fPIC -c z.cc
+
+    // 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
+    

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 @@ -678,18 +682,18 @@ want to test the library for memory leaks please read Tips for memory leak hunting first. -

6.8.

+

6.8.

list::size() is O(n)! -

+

See the Containers chapter. -

6.9.

+

6.9.

Aw, that's easy to fix! -

+

If you have found a bug in the library and you think you have a working fix, then send it in! The main GCC site has a page - on submitting + on submitting patches that covers the procedure, but for libstdc++ you should also send the patch to our mailing list in addition to the GCC patches mailing list. The libstdc++ @@ -717,9 +721,9 @@ What's an ABI and why is it so messy?

7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? -

7.1.

+

7.1.

string::iterator is not char*; vector<T>::iterator is not T* -

+

If you have code that depends on container<T> iterators being implemented as pointer-to-T, your code is broken. It's considered a feature, not a bug, that libstdc++ points this out. @@ -736,9 +740,9 @@ certain expressions to &*i. Future revisions of the Standard are expected to bless this usage for vector<> (but not for basic_string<>). -

7.2.

+

7.2.

What's next after libstdc++? -

+

Hopefully, not much. The goal of libstdc++ is to produce a fully-compliant, fully-portable Standard Library. After that, we're mostly done: there won't be any @@ -747,12 +751,12 @@ There is an effort underway to add significant extensions to the standard library specification. The latest version of this effort is described in - + The C++ Library Technical Report 1. -

7.3.

+

7.3.

What about the STL from SGI? -

- The STL from SGI, +

+ The STL from SGI, version 3.3, was the final merge of the STL codebase. The code in libstdc++ contains many fixes and changes, and the SGI code is no longer under active @@ -772,24 +776,24 @@

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

7.4.

+

7.4.

Extensions and Backward Compatibility -

+

See the link on backwards compatibility and link on evolution. -

7.5.

+

7.5.

Does libstdc++ support TR1? -

+

Yes.

The C++ Standard Library Technical Report adds many new features to the library. The latest version of this effort is described in - + Technical Report 1.

The implementation status of TR1 in libstdc++ can be tracked on the TR1 status page. -

7.6.

How do I get a copy of the ISO C++ Standard? -

+

7.6.

How do I get a copy of the ISO C++ Standard? +

Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee members. Non-members, or those who have not paid for the privilege of sitting on the committee @@ -797,19 +801,19 @@ get a copy of the standard from their respective national standards organization. In the USA, this national standards organization is ANSI and their website is - right here. (And if + right here. (And if you've already registered with them, clicking this link will take you to directly to the place where you can - buy the standard on-line. + buy the standard on-line.

Who is your country's member body? Visit the - ISO homepage and find out! + ISO homepage and find out!

The 2003 version of the standard (the 1998 version plus TC1) is available in print, ISBN 0-470-84674-7. -

7.7.

+

7.7.

What's an ABI and why is it so messy? -

+

ABI stands for “Application Binary Interface”. Conventionally, it refers to a great mass of details about how arguments are arranged on the call @@ -855,17 +859,17 @@ 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. -

7.8.

+

7.8.

How do I make std::vector<T>::capacity() == std::vector<T>::size? -

+

The standard idiom for deallocating a vector<T>'s unused memory is to create a temporary copy of the vector and swap their contents, e.g. for vector<T> v -


-     std::vector<T>(v).swap(v);
+


+     std::vector<T>(v).swap(v);
    

The copy will take O(n) time and the swap is constant time.

See Shrink-to-fit strings for a similar solution for strings. -

+

diff --git a/libstdc++-v3/doc/html/index.html b/libstdc++-v3/doc/html/index.html index c4a5cf56ab4..dec3001b5ed 100644 --- a/libstdc++-v3/doc/html/index.html +++ b/libstdc++-v3/doc/html/index.html @@ -1,8 +1,12 @@ - - -The GNU C++ Library

Short Contents

+The GNU C++ Library

The GNU C++ Library

Short Contents

Copyright 2008, 2009, 2011 - FSF + FSF

Permission is granted to copy, distribute and/or modify this @@ -14,14 +18,14 @@ This is the top level of the libstdc++ documentation set. The documentation is divided into the following three sections.

-



Table of Contents

The GNU C++ Library Manual
I. Introduction
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. @@ -35,13 +39,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
Interacting with C
Containers vs. Arrays
10. @@ -65,7 +69,7 @@
API Reference
III. Extensions -
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 +
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
@@ -165,4 +169,4 @@ Support for C++11 dialect.
D. GNU General Public License version 3 -
E. GNU Free Documentation License
The GNU C++ Library API Reference
Frequently Asked Questions
+
E. GNU Free Documentation License
The GNU C++ Library API Reference
Frequently Asked Questions
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index bc091d0ac11..b1ec7a46bde 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -1,10 +1,30 @@ - - -ABI Policy and Guidelines

ABI Policy and Guidelines

+

The C++ Interface

C++ applications often depend on specific language support routines, say for throwing exceptions, or catching exceptions, and perhaps also depend on features in the C++ Standard Library. @@ -21,7 +41,7 @@ virtual functions, etc. These details are defined as the compiler Application Binary Interface, or ABI. The GNU C++ compiler uses an industry-standard C++ ABI starting with version 3. Details can be - found in the ABI + found in the ABI specification.

The GNU C++ compiler, g++, has a compiler command line option to @@ -30,7 +50,7 @@ g++ command line options may change the ABI as a side-effect of use. Such flags include -fpack-struct and -fno-exceptions, but include others: see the complete - list in the GCC manual under the heading Options + list in the GCC manual under the heading Options for Code Generation Conventions.

The configure options used when building a specific libstdc++ @@ -58,10 +78,10 @@ given compiler ABI. In a nutshell: To use a specific version of the C++ ABI, one must use a corresponding GNU C++ toolchain (i.e., g++ and libstdc++) that implements the C++ ABI in question. -

Versioning

The C++ interface has evolved throughout the history of the GNU C++ toolchain. With each release, various details have been changed so as to give distinct versions to the C++ interface. -

Extending existing, stable ABIs. Versioning gives subsequent +

Goals

Extending existing, stable ABIs. Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial @@ -75,7 +95,7 @@ binary in a release series (with additional symbols added), substitute in the initial release of the library binary, and remain link compatible.

Allows multiple, incompatible ABIs to coexist at the same time. -

History

How can this complexity be managed? What does C++ versioning mean? Because library and compiler changes often make binaries compiled with one version of the GNU tools incompatible with binaries @@ -84,12 +104,12 @@ compatible. easier.

The following techniques are used: -

  1. Release versioning on the libgcc_s.so binary.

    This is implemented via file names and the ELF +

    1. Release versioning on the libgcc_s.so binary.

      This is implemented via file names and the ELF DT_SONAME mechanism (at least on ELF systems). It is versioned as follows: -

      • GCC 3.x: libgcc_s.so.1

      • GCC 4.x: libgcc_s.so.1

      For m68k-linux the versions differ as follows:

      • GCC 3.4, GCC 4.x: libgcc_s.so.1 +

        • GCC 3.x: libgcc_s.so.1

        • GCC 4.x: libgcc_s.so.1

        For m68k-linux the versions differ as follows:

        • GCC 3.4, GCC 4.x: libgcc_s.so.1 when configuring --with-sjlj-exceptions, or - libgcc_s.so.2

        For hppa-linux the versions differ as follows:

        • GCC 3.4, GCC 4.[0-1]: either libgcc_s.so.1 + libgcc_s.so.2

        For hppa-linux the versions differ as follows:

        • GCC 3.4, GCC 4.[0-1]: either libgcc_s.so.1 when configuring --with-sjlj-exceptions, or libgcc_s.so.2

        • GCC 4.[2-7]: either libgcc_s.so.3 when configuring --with-sjlj-exceptions) or libgcc_s.so.4 @@ -97,7 +117,7 @@ compatible. definitions, where the version definition is the maximum for a particular release. Labels are cumulative. If a particular release is not listed, it has the same version labels as the preceding - release.

          This corresponds to the mapfile: gcc/libgcc-std.ver

          • GCC 3.0.0: GCC_3.0

          • GCC 3.3.0: GCC_3.3

          • GCC 3.3.1: GCC_3.3.1

          • GCC 3.3.2: GCC_3.3.2

          • GCC 3.3.4: GCC_3.3.4

          • GCC 3.4.0: GCC_3.4

          • GCC 3.4.2: GCC_3.4.2

          • GCC 3.4.4: GCC_3.4.4

          • GCC 4.0.0: GCC_4.0.0

          • GCC 4.1.0: GCC_4.1.0

          • GCC 4.2.0: GCC_4.2.0

          • GCC 4.3.0: GCC_4.3.0

          • GCC 4.4.0: GCC_4.4.0

          • GCC 4.5.0: GCC_4.5.0

          • GCC 4.6.0: GCC_4.6.0

          • GCC 4.7.0: GCC_4.7.0

        • + release.

          This corresponds to the mapfile: gcc/libgcc-std.ver

          • GCC 3.0.0: GCC_3.0

          • GCC 3.3.0: GCC_3.3

          • GCC 3.3.1: GCC_3.3.1

          • GCC 3.3.2: GCC_3.3.2

          • GCC 3.3.4: GCC_3.3.4

          • GCC 3.4.0: GCC_3.4

          • GCC 3.4.2: GCC_3.4.2

          • GCC 3.4.4: GCC_3.4.4

          • GCC 4.0.0: GCC_4.0.0

          • GCC 4.1.0: GCC_4.1.0

          • GCC 4.2.0: GCC_4.2.0

          • GCC 4.3.0: GCC_4.3.0

          • GCC 4.4.0: GCC_4.4.0

          • GCC 4.5.0: GCC_4.5.0

          • GCC 4.6.0: GCC_4.6.0

          • GCC 4.7.0: GCC_4.7.0

        • Release versioning on the libstdc++.so binary, implemented in the same way as the libgcc_s.so binary above. Listed is the filename: DT_SONAME can be deduced from @@ -112,13 +132,13 @@ compatible. has the same filename and DT_SONAME as the preceding release.

          It is versioned as follows: -

          • GCC 3.0.0: libstdc++.so.3.0.0

          • GCC 3.0.1: libstdc++.so.3.0.1

          • GCC 3.0.2: libstdc++.so.3.0.2

          • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

          • GCC 3.0.4: libstdc++.so.3.0.4

          • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

          • GCC 3.1.1: libstdc++.so.4.0.1

          • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

          • GCC 3.2.1: libstdc++.so.5.0.1

          • GCC 3.2.2: libstdc++.so.5.0.2

          • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

          • GCC 3.3.0: libstdc++.so.5.0.4

          • GCC 3.3.1: libstdc++.so.5.0.5

          • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

          • GCC 3.4.1: libstdc++.so.6.0.1

          • GCC 3.4.2: libstdc++.so.6.0.2

          • GCC 3.4.3: libstdc++.so.6.0.3

          • GCC 4.0.0: libstdc++.so.6.0.4

          • GCC 4.0.1: libstdc++.so.6.0.5

          • GCC 4.0.2: libstdc++.so.6.0.6

          • GCC 4.0.3: libstdc++.so.6.0.7

          • GCC 4.1.0: libstdc++.so.6.0.7

          • GCC 4.1.1: libstdc++.so.6.0.8

          • GCC 4.2.0: libstdc++.so.6.0.9

          • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

          • GCC 4.2.2: libstdc++.so.6.0.9

          • GCC 4.3.0: libstdc++.so.6.0.10

          • GCC 4.4.0: libstdc++.so.6.0.11

          • GCC 4.4.1: libstdc++.so.6.0.12

          • GCC 4.4.2: libstdc++.so.6.0.13

          • GCC 4.5.0: libstdc++.so.6.0.14

          • GCC 4.6.0: libstdc++.so.6.0.15

          • GCC 4.6.1: libstdc++.so.6.0.16

          +

          • GCC 3.0.0: libstdc++.so.3.0.0

          • GCC 3.0.1: libstdc++.so.3.0.1

          • GCC 3.0.2: libstdc++.so.3.0.2

          • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

          • GCC 3.0.4: libstdc++.so.3.0.4

          • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

          • GCC 3.1.1: libstdc++.so.4.0.1

          • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

          • GCC 3.2.1: libstdc++.so.5.0.1

          • GCC 3.2.2: libstdc++.so.5.0.2

          • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

          • GCC 3.3.0: libstdc++.so.5.0.4

          • GCC 3.3.1: libstdc++.so.5.0.5

          • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

          • GCC 3.4.1: libstdc++.so.6.0.1

          • GCC 3.4.2: libstdc++.so.6.0.2

          • GCC 3.4.3: libstdc++.so.6.0.3

          • GCC 4.0.0: libstdc++.so.6.0.4

          • GCC 4.0.1: libstdc++.so.6.0.5

          • GCC 4.0.2: libstdc++.so.6.0.6

          • GCC 4.0.3: libstdc++.so.6.0.7

          • GCC 4.1.0: libstdc++.so.6.0.7

          • GCC 4.1.1: libstdc++.so.6.0.8

          • GCC 4.2.0: libstdc++.so.6.0.9

          • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

          • GCC 4.2.2: libstdc++.so.6.0.9

          • GCC 4.3.0: libstdc++.so.6.0.10

          • GCC 4.4.0: libstdc++.so.6.0.11

          • GCC 4.4.1: libstdc++.so.6.0.12

          • GCC 4.4.2: libstdc++.so.6.0.13

          • GCC 4.5.0: libstdc++.so.6.0.14

          • GCC 4.6.0: libstdc++.so.6.0.15

          • GCC 4.6.1: libstdc++.so.6.0.16

          Note 1: Error should be libstdc++.so.3.0.3.

          Note 2: Not strictly required.

          Note 3: This release (but not previous or subsequent) has one - known incompatibility, see 33678 + known incompatibility, see 33678 in the GCC bug database.

        • Symbol versioning on the libstdc++.so binary.

          mapfile: libstdc++-v3/config/abi/pre/gnu.ver

          It is versioned with the following labels and version definitions, where the version definition is the maximum for a @@ -130,7 +150,7 @@ compatible. GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0 release.) If a particular release is not listed, it has the same version labels as the preceding release. -

          • GCC 3.0.0: (Error, not versioned)

          • GCC 3.0.1: (Error, not versioned)

          • GCC 3.0.2: (Error, not versioned)

          • GCC 3.0.3: (Error, not versioned)

          • GCC 3.0.4: (Error, not versioned)

          • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

          • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

          • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

          • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

          • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

          • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

          • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

          • GCC 3.4.2: GLIBCXX_3.4.2

          • GCC 3.4.3: GLIBCXX_3.4.3

          • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

          • GCC 4.0.1: GLIBCXX_3.4.5

          • GCC 4.0.2: GLIBCXX_3.4.6

          • GCC 4.0.3: GLIBCXX_3.4.7

          • GCC 4.1.1: GLIBCXX_3.4.8

          • GCC 4.2.0: GLIBCXX_3.4.9

          • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

          • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

          • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

          • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

          • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

          • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

          • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

        • Incremental bumping of a compiler pre-defined macro, +

          • GCC 3.0.0: (Error, not versioned)

          • GCC 3.0.1: (Error, not versioned)

          • GCC 3.0.2: (Error, not versioned)

          • GCC 3.0.3: (Error, not versioned)

          • GCC 3.0.4: (Error, not versioned)

          • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

          • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

          • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

          • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

          • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

          • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

          • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

          • GCC 3.4.2: GLIBCXX_3.4.2

          • GCC 3.4.3: GLIBCXX_3.4.3

          • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

          • GCC 4.0.1: GLIBCXX_3.4.5

          • GCC 4.0.2: GLIBCXX_3.4.6

          • GCC 4.0.3: GLIBCXX_3.4.7

          • GCC 4.1.1: GLIBCXX_3.4.8

          • GCC 4.2.0: GLIBCXX_3.4.9

          • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

          • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

          • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

          • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

          • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

          • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

          • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

        • Incremental bumping of a compiler pre-defined macro, __GXX_ABI_VERSION. This macro is defined as the version of the compiler v3 ABI, with g++ 3.0 being version 100. This macro will be automatically defined whenever g++ is used (the curious can @@ -142,11 +162,11 @@ compatible. '-fabi-version' command line option.

          It is versioned as follows, where 'n' is given by '-fabi-version=n': -

          • GCC 3.0: 100

          • GCC 3.1: 100 (Error, should be 101)

          • GCC 3.2: 102

          • GCC 3.3: 102

          • GCC 3.4, GCC 4.x: 102 (when n=1)

          • GCC 3.4, GCC 4.x: 1000 + n (when n>1)

          • GCC 3.4, GCC 4.x: 999999 (when n=0)

        • Changes to the default compiler option for +

          • GCC 3.0: 100

          • GCC 3.1: 100 (Error, should be 101)

          • GCC 3.2: 102

          • GCC 3.3: 102

          • GCC 3.4, GCC 4.x: 102 (when n=1)

          • GCC 3.4, GCC 4.x: 1000 + n (when n>1)

          • GCC 3.4, GCC 4.x: 999999 (when n=0)

        • Changes to the default compiler option for -fabi-version.

          It is versioned as follows: -

          • GCC 3.0: (Error, not versioned)

          • GCC 3.1: (Error, not versioned)

          • GCC 3.2: -fabi-version=1

          • GCC 3.3: -fabi-version=1

          • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

        • Incremental bumping of a library pre-defined macro. For releases +

          • GCC 3.0: (Error, not versioned)

          • GCC 3.1: (Error, not versioned)

          • GCC 3.2: -fabi-version=1

          • GCC 3.3: -fabi-version=1

          • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

        • Incremental bumping of a library pre-defined macro. For releases before 3.4.0, the macro is __GLIBCPP__. For later releases, it's __GLIBCXX__. (The libstdc++ project generously changed from CPP to CXX throughout its source to allow the "C" pre-processor the CPP @@ -159,7 +179,7 @@ compatible. the same value as gcc/DATESTAMP.)

          It is versioned as follows: -

          • GCC 3.0.0: 20010615

          • GCC 3.0.1: 20010819

          • GCC 3.0.2: 20011023

          • GCC 3.0.3: 20011220

          • GCC 3.0.4: 20020220

          • GCC 3.1.0: 20020514

          • GCC 3.1.1: 20020725

          • GCC 3.2.0: 20020814

          • GCC 3.2.1: 20021119

          • GCC 3.2.2: 20030205

          • GCC 3.2.3: 20030422

          • GCC 3.3.0: 20030513

          • GCC 3.3.1: 20030804

          • GCC 3.3.2: 20031016

          • GCC 3.3.3: 20040214

          • GCC 3.4.0: 20040419

          • GCC 3.4.1: 20040701

          • GCC 3.4.2: 20040906

          • GCC 3.4.3: 20041105

          • GCC 3.4.4: 20050519

          • GCC 3.4.5: 20051201

          • GCC 3.4.6: 20060306

          • GCC 4.0.0: 20050421

          • GCC 4.0.1: 20050707

          • GCC 4.0.2: 20050921

          • GCC 4.0.3: 20060309

          • GCC 4.1.0: 20060228

          • GCC 4.1.1: 20060524

          • GCC 4.1.2: 20070214

          • GCC 4.2.0: 20070514

          • GCC 4.2.1: 20070719

          • GCC 4.2.2: 20071007

          • GCC 4.2.3: 20080201

          • GCC 4.2.4: 20080519

          • GCC 4.3.0: 20080306

          • GCC 4.3.1: 20080606

          • GCC 4.3.2: 20080827

          • GCC 4.3.3: 20090124

          • GCC 4.3.4: 20090804

          • GCC 4.3.5: 20100522

          • GCC 4.3.6: 20110627

          • GCC 4.4.0: 20090421

          • GCC 4.4.1: 20090722

          • GCC 4.4.2: 20091015

          • GCC 4.4.3: 20100121

          • GCC 4.4.4: 20100429

          • GCC 4.4.5: 20101001

          • GCC 4.4.6: 20110416

          • GCC 4.5.0: 20100414

          • GCC 4.5.1: 20100731

          • GCC 4.5.2: 20101216

          • GCC 4.5.3: 20110428

          • GCC 4.6.0: 20110325

          • GCC 4.6.1: 20110627

          • GCC 4.6.2: 20111026

        • +

          • GCC 3.0.0: 20010615

          • GCC 3.0.1: 20010819

          • GCC 3.0.2: 20011023

          • GCC 3.0.3: 20011220

          • GCC 3.0.4: 20020220

          • GCC 3.1.0: 20020514

          • GCC 3.1.1: 20020725

          • GCC 3.2.0: 20020814

          • GCC 3.2.1: 20021119

          • GCC 3.2.2: 20030205

          • GCC 3.2.3: 20030422

          • GCC 3.3.0: 20030513

          • GCC 3.3.1: 20030804

          • GCC 3.3.2: 20031016

          • GCC 3.3.3: 20040214

          • GCC 3.4.0: 20040419

          • GCC 3.4.1: 20040701

          • GCC 3.4.2: 20040906

          • GCC 3.4.3: 20041105

          • GCC 3.4.4: 20050519

          • GCC 3.4.5: 20051201

          • GCC 3.4.6: 20060306

          • GCC 4.0.0: 20050421

          • GCC 4.0.1: 20050707

          • GCC 4.0.2: 20050921

          • GCC 4.0.3: 20060309

          • GCC 4.1.0: 20060228

          • GCC 4.1.1: 20060524

          • GCC 4.1.2: 20070214

          • GCC 4.2.0: 20070514

          • GCC 4.2.1: 20070719

          • GCC 4.2.2: 20071007

          • GCC 4.2.3: 20080201

          • GCC 4.2.4: 20080519

          • GCC 4.3.0: 20080306

          • GCC 4.3.1: 20080606

          • GCC 4.3.2: 20080827

          • GCC 4.3.3: 20090124

          • GCC 4.3.4: 20090804

          • GCC 4.3.5: 20100522

          • GCC 4.3.6: 20110627

          • GCC 4.4.0: 20090421

          • GCC 4.4.1: 20090722

          • GCC 4.4.2: 20091015

          • GCC 4.4.3: 20100121

          • GCC 4.4.4: 20100429

          • GCC 4.4.5: 20101001

          • GCC 4.4.6: 20110416

          • GCC 4.5.0: 20100414

          • GCC 4.5.1: 20100731

          • GCC 4.5.2: 20101216

          • GCC 4.5.3: 20110428

          • GCC 4.6.0: 20110325

          • GCC 4.6.1: 20110627

          • GCC 4.6.2: 20111026

        • Incremental bumping of a library pre-defined macro, _GLIBCPP_VERSION. This macro is defined as the released version of the library, as a string literal. This is only implemented in @@ -172,7 +192,7 @@ compatible. of config.h.

          It is versioned as follows: -

          • GCC 3.0.0: "3.0.0"

          • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

          • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

          • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

          • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

          • GCC 3.1.0: "3.1.0"

          • GCC 3.1.1: "3.1.1"

          • GCC 3.2.0: "3.2"

          • GCC 3.2.1: "3.2.1"

          • GCC 3.2.2: "3.2.2"

          • GCC 3.2.3: "3.2.3"

          • GCC 3.3.0: "3.3"

          • GCC 3.3.1: "3.3.1"

          • GCC 3.3.2: "3.3.2"

          • GCC 3.3.3: "3.3.3"

          • GCC 3.4: "version-unused"

          • GCC 4.x: "version-unused"

        • +

          • GCC 3.0.0: "3.0.0"

          • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

          • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

          • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

          • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

          • GCC 3.1.0: "3.1.0"

          • GCC 3.1.1: "3.1.1"

          • GCC 3.2.0: "3.2"

          • GCC 3.2.1: "3.2.1"

          • GCC 3.2.2: "3.2.2"

          • GCC 3.2.3: "3.2.3"

          • GCC 3.3.0: "3.3"

          • GCC 3.3.1: "3.3.1"

          • GCC 3.3.2: "3.3.2"

          • GCC 3.3.3: "3.3.3"

          • GCC 3.4: "version-unused"

          • GCC 4.x: "version-unused"

        • Matching each specific C++ compiler release to a specific set of C++ include files. This is only implemented in GCC 3.1.1 releases and higher. @@ -185,13 +205,13 @@ compatible. file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before GCC 3.4.0).

          C++ includes are versioned as follows: -

          • GCC 3.0.0: include/g++-v3

          • GCC 3.0.1: include/g++-v3

          • GCC 3.0.2: include/g++-v3

          • GCC 3.0.3: include/g++-v3

          • GCC 3.0.4: include/g++-v3

          • GCC 3.1.0: include/g++-v3

          • GCC 3.1.1: include/c++/3.1.1

          • GCC 3.2.0: include/c++/3.2

          • GCC 3.2.1: include/c++/3.2.1

          • GCC 3.2.2: include/c++/3.2.2

          • GCC 3.2.3: include/c++/3.2.3

          • GCC 3.3.0: include/c++/3.3

          • GCC 3.3.1: include/c++/3.3.1

          • GCC 3.3.2: include/c++/3.3.2

          • GCC 3.3.3: include/c++/3.3.3

          • GCC 3.4.x: include/c++/3.4.x

          • GCC 4.x.y: include/c++/4.x.y

    +

    • GCC 3.0.0: include/g++-v3

    • GCC 3.0.1: include/g++-v3

    • GCC 3.0.2: include/g++-v3

    • GCC 3.0.3: include/g++-v3

    • GCC 3.0.4: include/g++-v3

    • GCC 3.1.0: include/g++-v3

    • GCC 3.1.1: include/c++/3.1.1

    • GCC 3.2.0: include/c++/3.2

    • GCC 3.2.1: include/c++/3.2.1

    • GCC 3.2.2: include/c++/3.2.2

    • GCC 3.2.3: include/c++/3.2.3

    • GCC 3.3.0: include/c++/3.3

    • GCC 3.3.1: include/c++/3.3.1

    • GCC 3.3.2: include/c++/3.3.2

    • GCC 3.3.3: include/c++/3.3.3

    • GCC 3.4.x: include/c++/3.4.x

    • GCC 4.x.y: include/c++/4.x.y

Taken together, these techniques can accurately specify interface and implementation changes in the GNU C++ tools themselves. Used properly, they allow both the GNU C++ tools implementation, and programs using them, an evolving yet controlled development that maintains backward compatibility. -

Prerequisites

Minimum environment that supports a versioned ABI: A supported dynamic linker, a GNU linker of sufficient vintage to understand demangled C++ name globbing (ld) or the Sun linker, a shared @@ -206,7 +226,7 @@ compatible. Most modern GNU/Linux and BSD versions, particularly ones using GCC 3.1 and later, will meet the requirements above, as does Solaris 2.5 and up. -

Configuring

It turns out that most of the configure options that change default behavior will impact the mangled names of exported symbols, and thus impact versioning and compatibility. @@ -224,7 +244,7 @@ compatible. attempts to make sure that all the requirement for symbol versioning are in place. For more information, please consult acinclude.m4. -

Checking Active

When the GNU C++ library is being built with symbol versioning on, you should see the following at configure time for libstdc++: @@ -272,16 +292,16 @@ On Solaris 2, you can use pvs -r instead: libc.so.1 (SUNWprivate_1.1, SYSVABI_1.3);

ldd -v works too, but is very verbose. -

Allowed Changes

The following will cause the library minor version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5". -

  1. Adding an exported global or static data member

  2. Adding an exported function, static or non-virtual member function

  3. Adding an exported symbol or symbols by additional instantiations

+

  1. Adding an exported global or static data member

  2. Adding an exported function, static or non-virtual member function

  3. Adding an exported symbol or symbols by additional instantiations

Other allowed changes are possible. -

Prohibited Changes

The following non-exhaustive list will cause the library major version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.4.0.0". -

  1. Changes in the gcc/g++ compiler ABI

  2. Changing size of an exported symbol

  3. Changing alignment of an exported symbol

  4. Changing the layout of an exported symbol

  5. Changing mangling on an exported symbol

  6. Deleting an exported symbol

  7. Changing the inheritance properties of a type by adding or removing +

    1. Changes in the gcc/g++ compiler ABI

    2. Changing size of an exported symbol

    3. Changing alignment of an exported symbol

    4. Changing the layout of an exported symbol

    5. Changing mangling on an exported symbol

    6. Deleting an exported symbol

    7. Changing the inheritance properties of a type by adding or removing base classes

    8. Changing the size, alignment, or layout of types specified in the C++ standard. These may not necessarily be @@ -293,10 +313,10 @@ class that would otherwise have implicit versions. This will change the way the compiler deals with this class in by-value return statements or parameters: instead of passing instances of this class in registers, the compiler will be forced to use memory. See the -section on Function +section on Function Calling Conventions and APIs of the C++ ABI documentation for further details. -

Implementation

  1. Separation of interface and implementation

    This is accomplished by two techniques that separate the API from @@ -344,7 +364,7 @@ exceptional symbols are allowed to be visible.

    CXXABI, select items are allowed to be visible.

  • Freezing the API

    Disallowed changes, as above, are not made on a stable release branch. Enforcement tends to be less strict with GNU extensions that -standard includes.

  • Testing

    Single ABI Testing

    Testing for GNU C++ ABI changes is composed of two distinct areas: testing the C++ compiler (g++) for compiler changes, and testing the C++ library (libstdc++) for library changes. @@ -410,7 +430,7 @@ and other detailed data is not displayed with this flag.

    Perhaps there are other C++ ABI checkers. If so, please notify us. We'd like to know about them! -

    Multiple ABI Testing

    A "C" application, dynamically linked to two shared libraries, liba, libb. The dependent library liba is a C++ shared library compiled with GCC 3.3, and uses io, exceptions, locale, etc. The dependent library @@ -473,7 +493,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. This resulting binary, when executed, will be able to safely use code from both liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5. -

    Outstanding Issues

    Some features in the C++ language make versioning especially difficult. In particular, compiler generated constructs such as implicit instantiations for templates, typeinfo information, and @@ -483,54 +503,54 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.

    For more background on this issue, see these bugzilla entries:

    -24660: versioning weak symbols in libstdc++ +24660: versioning weak symbols in libstdc++

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

    + . Pavel Shved. Denis Silakov.

    diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html index a0d28887854..bf3cee1d07f 100644 --- a/libstdc++-v3/doc/html/manual/algorithms.html +++ b/libstdc++-v3/doc/html/manual/algorithms.html @@ -1,18 +1,28 @@ - - -Chapter 11.  Algorithms

    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 important things: -

    1. +

      1. Anything that behaves like an iterator can be used in one of these algorithms. Raw pointers make great candidates, thus built-in arrays are fine containers, as well as your own @@ -42,7 +52,7 @@ to cause so much confusion. Once you get range into your head (it's not that hard, honest!), then the algorithms are a cakewalk. -

        If you call std::swap(x,y); where x and y are standard +

        Mutating

        swap

        Specializations

        If you call std::swap(x,y); where x and y are standard containers, then the call will automatically be replaced by a call to x.swap(y); instead.

        This allows member functions of each container class to take over, and @@ -52,10 +62,10 @@ fact use constant-time swaps.) This should not be surprising, since for two containers of the same type to swap contents, only some internal pointers to storage need to be exchanged. -