mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-12 13:11:48 +08:00
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
This commit is contained in:
parent
bcac046f5f
commit
109a3af40f
@ -1,3 +1,34 @@
|
||||
2014-06-09 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* 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 <jwakely@redhat.com>
|
||||
|
||||
* include/tr1/beta_function.tcc: Fix spelling of include guard in
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<a class="link" href="http://www.fsf.org/" target="_top">FSF
|
||||
</a>
|
||||
</p></div><div><div class="legalnotice"><a id="idm269907336032"></a><p>
|
||||
</p></div><div><div class="legalnotice"><a id="id-1.4.1.2.2"></a><p>
|
||||
<a class="link" href="manual/license.html" title="License">License
|
||||
</a>
|
||||
</p></div></div></div><hr /></div><p>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk03.html" title="" /><link rel="prev" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="faq"></a>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright ©
|
||||
2008, 2010
|
||||
2008-2014
|
||||
|
||||
<a class="link" href="http://www.fsf.org" target="_top">FSF</a>
|
||||
</p></div></div><hr /></div><div class="qandaset"><a id="idm269899593232"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
|
||||
</p></div></div><hr /></div><div class="qandaset"><a id="faq.faq"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
|
||||
What is libstdc++?
|
||||
</a></dt><dt>1.2. <a href="faq.html#faq.why">
|
||||
Why should I use libstdc++?
|
||||
@ -109,50 +109,49 @@
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="faq.what.a"></a></td><td align="left" valign="top"><p>
|
||||
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 <a class="link" href="http://gcc.gnu.org/svn.html" target="_top">web</a>.
|
||||
anonymous SVN, and can be browsed over
|
||||
the <a class="link" href="https://gcc.gnu.org/svn.html" target="_top">web</a>.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.why"></a><a id="q-why"></a><p><strong>1.2.</strong></p></td><td align="left" valign="top"><p>
|
||||
Why should I use libstdc++?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-why"></a></td><td align="left" valign="top"><p>
|
||||
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) <span class="quote">“<span class="quote">incomplet and
|
||||
incorrekt</span>”</span>, and many suffer from limitations of the compilers
|
||||
that use them.
|
||||
incorrekt</span>”</span>, and many suffered from limitations of the compilers
|
||||
that used them.
|
||||
</p><p>
|
||||
The GNU compiler collection
|
||||
(<span class="command"><strong>gcc</strong></span>, <span class="command"><strong>g++</strong></span>, etc) is widely
|
||||
considered to be one of the leading compilers in the world. Its
|
||||
development is overseen by the
|
||||
<a class="link" href="http://gcc.gnu.org/" target="_top">GCC team</a>. All of
|
||||
<a class="link" href="https://gcc.gnu.org/" target="_top">GCC team</a>. All of
|
||||
the rapid development and near-legendary
|
||||
<a class="link" href="http://gcc.gnu.org/buildstat.html" target="_top">portability</a>
|
||||
that are the hallmarks of an open-source project are being
|
||||
applied to libstdc++.
|
||||
<a class="link" href="https://gcc.gnu.org/buildstat.html" target="_top">portability</a>
|
||||
that are the hallmarks of an open-source project are applied to libstdc++.
|
||||
</p><p>
|
||||
That means that all of the Standard classes and functions will be
|
||||
freely available and fully compliant. (Such as
|
||||
<code class="classname">string</code>,
|
||||
<code class="classname">vector<></code>, iostreams, and algorithms.)
|
||||
Programmers will no longer need to <span class="quote">“<span class="quote">roll their own</span>”</span>
|
||||
nor be worried about platform-specific incompatibilities.
|
||||
All of the standard classes and functions from C++98/C++03
|
||||
(such as <code class="classname">string</code>,
|
||||
<code class="classname">vector<></code>, 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.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.who"></a><a id="q-who"></a><p><strong>1.3.</strong></p></td><td align="left" valign="top"><p>
|
||||
Who's in charge of it?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-who"></a></td><td align="left" valign="top"><p>
|
||||
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
|
||||
<a class="link" href="https://gcc.gnu.org/viewcvs/gcc/trunk/MAINTAINERS?view=co" target="_top"><code class="filename">MAINTAINERS</code></a>
|
||||
file (look for "c++ runtime libs").
|
||||
</p><p>
|
||||
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 <a class="link" href="http://gcc.gnu.org/libstdc++/" target="_top">homepage</a>.
|
||||
doing so on the <a class="link" href="https://gcc.gnu.org/lists.html" target="_top">GCC mailing lists</a> page.
|
||||
If you have questions, ideas, code, or are just curious, sign up!
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.when"></a><a id="q-when"></a><p><strong>1.4.</strong></p></td><td align="left" valign="top"><p>
|
||||
When is libstdc++ going to be finished?
|
||||
@ -163,8 +162,8 @@
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how"></a><a id="q-how"></a><p><strong>1.5.</strong></p></td><td align="left" valign="top"><p>
|
||||
How do I contribute to the effort?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how"></a></td><td align="left" valign="top"><p>
|
||||
Here is <a class="link" href="manual/appendix_contributing.html" title="Appendix A. Contributing">a page devoted to
|
||||
this topic</a>. Subscribing to the mailing list (see above, or
|
||||
See the <a class="link" href="manual/appendix_contributing.html" title="Appendix A. Contributing">Contributing</a> 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 @@
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.whereis_old"></a><a id="q-whereis_old"></a><p><strong>1.6.</strong></p></td><td align="left" valign="top"><p>
|
||||
What happened to the older libg++? I need that!
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-whereis_old"></a></td><td align="left" valign="top"><p>
|
||||
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
|
||||
<span class="quote">“<span class="quote">This package is considered obsolete and is no longer
|
||||
being developed.</span>”</span>
|
||||
It should not be used for new projects, and won't even compile with
|
||||
recent releases of GCC (or most other C++ compilers).
|
||||
</p><p>
|
||||
More information in the <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards compatibility documentation</a>
|
||||
More information can be found in the
|
||||
<a class="link" href="manual/backwards.html" title="Backwards Compatibility">Backwards
|
||||
Compatibility</a> section of the libstdc++ manual.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.more_questions"></a><a id="q-more_questions"></a><p><strong>1.7.</strong></p></td><td align="left" valign="top"><p>
|
||||
What if I have more questions?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-more_questions"></a></td><td align="left" valign="top"><p>
|
||||
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 @@
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_get_sources"></a></td><td align="left" valign="top"><p>
|
||||
Libstdc++ sources for all official releases can be obtained as
|
||||
part of the GCC sources, available from various sites and
|
||||
mirrors. A full <a class="link" href="http://gcc.gnu.org/mirrors.html" target="_top">list of
|
||||
mirrors. A full <a class="link" href="https://gcc.gnu.org/mirrors.html" target="_top">list of
|
||||
download sites</a> is provided on the main GCC site.
|
||||
</p><p>
|
||||
Current libstdc++ sources can always be checked out of the main
|
||||
@ -269,7 +272,7 @@
|
||||
the latest libstdc++ sources.
|
||||
</p><p>
|
||||
For more information
|
||||
see <a class="link" href="http://gcc.gnu.org/svn.html" target="_top"><acronym class="acronym">SVN</acronym>
|
||||
see <a class="link" href="https://gcc.gnu.org/svn.html" target="_top"><acronym class="acronym">SVN</acronym>
|
||||
details</a>.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.how_to_test"></a><a id="q-how_to_test"></a><p><strong>3.3.</strong></p></td><td align="left" valign="top"><p>How do I know if it works?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-how_to_test"></a></td><td align="left" valign="top"><p>
|
||||
@ -277,7 +280,9 @@
|
||||
conformance testing, regression testing, ABI testing, and
|
||||
performance testing. Please consult the
|
||||
<a class="link" href="http://gcc.gnu.org/install/test.html" target="_top">testing
|
||||
documentation</a> for more details.
|
||||
documentation</a> for GCC and
|
||||
<a class="link" href="manual/test.html" title="Test">Test</a> in the libstdc++
|
||||
manual for more details.
|
||||
</p><p>
|
||||
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.
|
||||
</p><p>
|
||||
The simplest way to fix this is
|
||||
to use the <code class="literal">LD_LIBRARY_PATH</code> environment variable,
|
||||
to use the <code class="envar">LD_LIBRARY_PATH</code> environment variable,
|
||||
which is a colon-separated list of directories in which the linker
|
||||
will search for shared libraries:
|
||||
</p><pre class="screen">
|
||||
LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
</pre><p>
|
||||
Here the shell variable <span class="command"><strong>${prefix}</strong></span> is assumed to contain
|
||||
</p><pre class="screen"><span class="command"><strong>
|
||||
export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
|
||||
</strong></span></pre><p>
|
||||
Here the shell variable <code class="varname">${prefix}</code> 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
|
||||
<code class="filename">${prefix}/lib64</code> 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. <code class="envar">DYLD_LIBRARY_PATH</code> for Darwin,
|
||||
<code class="envar">LD_LIBRARY_PATH_32</code>/<code class="envar">LD_LIBRARY_PATH_64</code>
|
||||
for Solaris 32-/64-bit,
|
||||
and <code class="envar">SHLIB_PATH</code> for HP-UX.
|
||||
</p><p>
|
||||
See the man pages for <span class="command"><strong>ld</strong></span>, <span class="command"><strong>ldd</strong></span>
|
||||
and <span class="command"><strong>ldconfig</strong></span> for more information. The dynamic
|
||||
@ -335,7 +340,8 @@
|
||||
is usually called something such as <code class="filename">ld.so</code>,
|
||||
<code class="filename">rtld</code> or <code class="filename">dld.so</code>.
|
||||
</p><p>
|
||||
Using LD_LIBRARY_PATH is not always the best solution, <a class="link" href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic" title="Finding Dynamic or Shared Libraries">Finding Dynamic or Shared
|
||||
Using <code class="envar">LD_LIBRARY_PATH</code> is not always the best solution,
|
||||
<a class="link" href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic" title="Finding Dynamic or Shared Libraries">Finding Dynamic or Shared
|
||||
Libraries</a> in the manual gives some alternatives.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.what_is_libsupcxx"></a><a id="q-what_is_libsupcxx"></a><p><strong>3.5.</strong></p></td><td align="left" valign="top"><p>
|
||||
What's libsupc++?
|
||||
@ -348,7 +354,7 @@
|
||||
<code class="filename">libsupc++.a</code>, which is a subset of
|
||||
<code class="filename">libstdc++.a</code>. (Using <span class="command"><strong>gcc</strong></span>
|
||||
instead of <span class="command"><strong>g++</strong></span> and explicitly linking in
|
||||
<code class="filename">libsupc++.a</code> via <code class="literal">-lsupc++</code>
|
||||
<code class="filename">libsupc++.a</code> via <code class="option">-lsupc++</code>
|
||||
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.)
|
||||
</p><p>
|
||||
Some of the object files which make up libstdc++.a are rather large.
|
||||
Some of the object files which make up
|
||||
<code class="filename">libstdc++.a</code> are rather large.
|
||||
If you create a statically-linked executable with
|
||||
<code class="literal">-static</code>, those large object files are suddenly part
|
||||
<code class="option">-static</code>, 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 <code class="filename">.o</code> 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.
|
||||
</p><p>
|
||||
@ -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 <code class="filename">.o</code> 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.
|
||||
</p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>4.1. <a href="faq.html#faq.other_compilers">
|
||||
@ -411,18 +418,19 @@
|
||||
usable under any ISO-compliant compiler, at least in theory.
|
||||
</p><p>
|
||||
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.
|
||||
</p><p>
|
||||
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.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.solaris_long_long"></a><a id="q-solaris_long_long"></a><p><strong>4.2.</strong></p></td><td align="left" valign="top"><p>
|
||||
No 'long long' type on Solaris?
|
||||
No '<span class="type">long long</span>' type on Solaris?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"></a></td><td align="left" valign="top"><p>
|
||||
By default we try to support the C99 <span class="type">long long</span> 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.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.predefined"></a><a id="q-predefined"></a><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p>
|
||||
<code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"></a></td><td align="left" valign="top"><p>On Solaris, g++ (but not gcc) always defines the preprocessor
|
||||
macro <code class="constant">_XOPEN_SOURCE</code>. On GNU/Linux, the same happens
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"></a></td><td align="left" valign="top"><p>On Solaris, <span class="command"><strong>g++</strong></span> (but not <span class="command"><strong>gcc</strong></span>)
|
||||
always defines the preprocessor macro
|
||||
<code class="constant">_XOPEN_SOURCE</code>. On GNU/Linux, the same happens
|
||||
with <code class="constant">_GNU_SOURCE</code>. (This is not an exhaustive list;
|
||||
other macros and other platforms are also affected.)
|
||||
</p><p>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.
|
||||
</p><p>Note that it's not enough to #define them only when the library is
|
||||
</p><p>Note that it's not enough to <code class="literal">#define</code> 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.
|
||||
</p><p>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
|
||||
</p><p>To see which symbols are defined, look for
|
||||
<code class="varname">CPLUSPLUS_CPP_SPEC</code> in
|
||||
the gcc config headers for your target (and try changing them to
|
||||
see what happens when building complicated code). You can also run
|
||||
<span class="command"><strong>g++ -E -dM - < /dev/null"</strong></span> to display
|
||||
@ -464,14 +474,13 @@
|
||||
solution, but nobody yet has contributed the time.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.darwin_ctype"></a><a id="q-darwin_ctype"></a><p><strong>4.4.</strong></p></td><td align="left" valign="top"><p>
|
||||
Mac OS X <code class="filename">ctype.h</code> is broken! How can I fix it?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"></a></td><td align="left" valign="top"><p>This is a long-standing bug in the OS X support. Fortunately,
|
||||
the patch is quite simple, and well-known.
|
||||
<a class="link" href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html" target="_top"> Here's a
|
||||
link to the solution</a>.
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
|
||||
This was a long-standing bug in the OS X support. Fortunately, the
|
||||
<a class="link" href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html" target="_top">patch</a>
|
||||
was quite simple, and well-known.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.threads_i386"></a><a id="q-threads_i386"></a><p><strong>4.5.</strong></p></td><td align="left" valign="top"><p>
|
||||
Threading is broken on i386?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"></a></td><td align="left" valign="top"><p>
|
||||
</p><p>Support for atomic integer operations is/was broken on i386
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>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 @@
|
||||
</p><p>This is fixed in 3.2.2.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.atomic_mips"></a><a id="q-atomic_mips"></a><p><strong>4.6.</strong></p></td><td align="left" valign="top"><p>
|
||||
MIPS atomic operations
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"></a></td><td align="left" valign="top"><p>
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
|
||||
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 @@
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-linux_glibc"></a></td><td align="left" valign="top"><p>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.
|
||||
</p><p>The guideline is simple: the more recent the C++ library, the
|
||||
@ -501,10 +510,10 @@
|
||||
GCC installation instructions.)
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.freebsd_wchar"></a><a id="q-freebsd_wchar"></a><p><strong>4.8.</strong></p></td><td align="left" valign="top"><p>
|
||||
Can't use wchar_t/wstring on FreeBSD
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"></a></td><td align="left" valign="top"><p>
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
|
||||
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 <span class="type">wchar_t</span> support should be
|
||||
disabled. In addition, the libstdc++ platform checks that
|
||||
enabled <span class="type">wchar_t</span> were quite strict, and not granular
|
||||
enough to detect when the minimal support to
|
||||
@ -523,7 +532,7 @@
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_works"></a></td><td align="left" valign="top"><p>
|
||||
Short answer: Pretty much everything <span class="emphasis"><em>works</em></span>
|
||||
except for some corner cases. Support for localization
|
||||
in <code class="classname">locale</code> may be incomplete on non-GNU
|
||||
in <code class="classname">locale</code> may be incomplete on some non-GNU
|
||||
platforms. Also dependent on the underlying platform is support
|
||||
for <span class="type">wchar_t</span> and <span class="type">long
|
||||
long</span> specializations, and details of thread support.
|
||||
@ -543,11 +552,11 @@
|
||||
place), a public list of the library defects is occasionally
|
||||
published on <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/" target="_top">the WG21
|
||||
website</a>.
|
||||
Some of these issues have resulted in code changes in libstdc++.
|
||||
Many of these issues have resulted in code changes in libstdc++.
|
||||
</p><p>
|
||||
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.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.compiler_bugs"></a><a id="q-compiler_bugs"></a><p><strong>5.3.</strong></p></td><td align="left" valign="top"><p>
|
||||
Bugs in the compiler (gcc/g++) and not libstdc++
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-compiler_bugs"></a></td><td align="left" valign="top"><p>
|
||||
@ -587,16 +596,16 @@
|
||||
Reopening a stream fails
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-stream_reopening_fails"></a></td><td align="left" valign="top"><p>
|
||||
One of the most-reported non-bug reports. Executing a sequence like:
|
||||
</p><div class="literallayout"><p><br />
|
||||
#include <fstream><br />
|
||||
...<br />
|
||||
std::fstream fs(<span class="quote">“<span class="quote">a_file</span>”</span>);<br />
|
||||
// .<br />
|
||||
// . do things with fs...<br />
|
||||
// .<br />
|
||||
fs.close();<br />
|
||||
fs.open(<span class="quote">“<span class="quote">a_new_file</span>”</span>);<br />
|
||||
</p></div><p>
|
||||
</p><pre class="programlisting">
|
||||
#include <fstream>
|
||||
...
|
||||
std::fstream fs("a_file");
|
||||
// .
|
||||
// . do things with fs...
|
||||
// .
|
||||
fs.close();
|
||||
fs.open("a_new_file");
|
||||
</pre><p>
|
||||
All operations on the re-opened <code class="varname">fs</code> will fail, or at
|
||||
least act very strangely. Yes, they often will, especially if
|
||||
<code class="varname">fs</code> reached the EOF state on the previous file. The
|
||||
@ -613,14 +622,14 @@
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.wefcxx_verbose"></a><a id="q-wefcxx_verbose"></a><p><strong>6.2.</strong></p></td><td align="left" valign="top"><p>
|
||||
-Weffc++ complains too much
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-wefcxx_verbose"></a></td><td align="left" valign="top"><p>
|
||||
Many warnings are emitted when <code class="literal">-Weffc++</code> is used. Making
|
||||
libstdc++ <code class="literal">-Weffc++</code>-clean is not a goal of the project,
|
||||
Many warnings are emitted when <code class="option">-Weffc++</code> is used. Making
|
||||
libstdc++ <code class="option">-Weffc++</code>-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.
|
||||
</p><p>
|
||||
We do, however, try to have libstdc++ sources as clean as possible. If
|
||||
you see some simple changes that pacify <code class="literal">-Weffc++</code>
|
||||
you see some simple changes that pacify <code class="option">-Weffc++</code>
|
||||
without other drawbacks, send us a patch.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.ambiguous_overloads"></a><a id="q-ambiguous_overloads"></a><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p>
|
||||
Ambiguous overloads after including an old-style header
|
||||
@ -638,24 +647,25 @@
|
||||
The g++-3 headers are <span class="emphasis"><em>not ours</em></span>
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-v2_headers"></a></td><td align="left" valign="top"><p>
|
||||
If you are using headers in
|
||||
<code class="filename">${prefix}/include/g++-3</code>, or if the installed
|
||||
library's name looks like <code class="filename">libstdc++-2.10.a</code> or
|
||||
<code class="filename">libstdc++-libc6-2.10.so</code>, then you are using the
|
||||
old libstdc++-v2 library, which is nonstandard and
|
||||
<code class="filename">${prefix}/include/g++-3</code>, or if
|
||||
the installed library's name looks like
|
||||
<code class="filename">libstdc++-2.10.a</code> or
|
||||
<code class="filename">libstdc++-libc6-2.10.so</code>, 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.
|
||||
</p><p>
|
||||
For GCC versions 3.0 and 3.1 the libstdc++ header files are
|
||||
installed in <code class="filename">${prefix}/include/g++-v3</code> (see the
|
||||
'v'?). Starting with version 3.2 the headers are installed in
|
||||
<code class="filename">${prefix}/include/c++/${version}</code> 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
|
||||
<code class="filename">${prefix}/include/g++-v3</code>
|
||||
(see the 'v'?). Starting with version 3.2 the headers are installed in
|
||||
<code class="filename">${prefix}/include/c++/${version}</code>
|
||||
as this prevents headers from previous versions being found by mistake.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.boost_concept_checks"></a><a id="q-boost_concept_checks"></a><p><strong>6.5.</strong></p></td><td align="left" valign="top"><p>
|
||||
Errors about <span class="emphasis"><em>*Concept</em></span> and
|
||||
<span class="emphasis"><em>constraints</em></span> in the STL
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-boost_concept_checks"></a></td><td align="left" valign="top"><p>
|
||||
If you see compilation errors containing messages about
|
||||
<span class="errortext">foo Concept </span>and something to do with a
|
||||
<span class="errortext">foo Concept</span> and something to do with a
|
||||
<span class="errortext">constraints</span> 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:
|
||||
</p><div class="literallayout"><p><br />
|
||||
// compile your library components<br />
|
||||
g++ -fPIC -c a.cc<br />
|
||||
g++ -fPIC -c b.cc<br />
|
||||
Compile your library components:<br />
|
||||
<span class="command"><strong>g++ -fPIC -c a.cc</strong></span><br />
|
||||
<span class="command"><strong>g++ -fPIC -c b.cc</strong></span><br />
|
||||
...<br />
|
||||
g++ -fPIC -c z.cc<br />
|
||||
<span class="command"><strong>g++ -fPIC -c z.cc</strong></span><br />
|
||||
<br />
|
||||
// create your library<br />
|
||||
g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o<br />
|
||||
Create your library:<br />
|
||||
<span class="command"><strong>g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o</strong></span><br />
|
||||
<br />
|
||||
// link the executable<br />
|
||||
g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl<br />
|
||||
Link the executable:<br />
|
||||
<span class="command"><strong>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</strong></span><br />
|
||||
</p></div></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.memory_leaks"></a><a id="q-memory_leaks"></a><p><strong>6.7.</strong></p></td><td align="left" valign="top"><p>
|
||||
<span class="quote">“<span class="quote">Memory leaks</span>”</span> in containers
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-memory_leaks"></a></td><td align="left" valign="top"><p>
|
||||
A few people have reported that the standard containers appear
|
||||
to leak memory when tested with memory checkers such as
|
||||
<a class="link" href="http://valgrind.org/" target="_top">valgrind</a>.
|
||||
<a class="link" href="http://valgrind.org/" target="_top"><span class="command"><strong>valgrind</strong></span></a>.
|
||||
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 <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards
|
||||
compatibility</a> documentation.
|
||||
</p><p>
|
||||
The FAQ for SGI's STL (one jump off of their main page) is
|
||||
still recommended reading.
|
||||
The <a class="link" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
|
||||
for SGI's STL is still recommended reading.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"></a><a id="q-extensions_and_backwards_compat"></a><p><strong>7.4.</strong></p></td><td align="left" valign="top"><p>
|
||||
Extensions and Backward Compatibility
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-extensions_and_backwards_compat"></a></td><td align="left" valign="top"><p>
|
||||
@ -832,7 +842,7 @@
|
||||
What's an ABI and why is it so messy?
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_abi"></a></td><td align="left" valign="top"><p>
|
||||
<acronym class="acronym">ABI</acronym> stands for <span class="quote">“<span class="quote">Application Binary
|
||||
Interface</span>”</span>. Conventionally, it refers to a great
|
||||
Interface</span>”</span>. 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 <span class="quote">“<span class="quote">free-standing implementation</span>”</span> that doesn't include (much
|
||||
of) the standard library. It is a good basis for the work to come.
|
||||
</p><p>
|
||||
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
|
||||
<a class="link" href="http://www.codesourcery.com/cxx-abi/" target="_top">C++
|
||||
ABI for Itanium</a>) 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 <span class="quote">“<span class="quote">free-standing implementation</span>”</span> 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.
|
||||
</p><p>
|
||||
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 <span class="type">FILE</span>, <span class="type">stat</span>, <span class="type">jmpbuf</span>,
|
||||
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.
|
||||
</p><p>
|
||||
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., <code class="function">getchar</code>) 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.
|
||||
|
@ -34,13 +34,13 @@
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="manual/diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="manual/concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/utilities.html">6.
|
||||
Utilities
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="manual/pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="manual/memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm269891950848">Interface Design</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891791712">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#idm269891753440">Examples</a></span></dt><dt><span class="section"><a href="manual/memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/strings.html">7.
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="manual/pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="manual/memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#allocator.interface">Interface Design</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.default">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.caching">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="manual/memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.hier">Class Hierarchy</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.thread">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.policy">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.rel">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#shared_ptr.examples">Examples</a></span></dt><dt><span class="section"><a href="manual/memory.html#shared_ptr.issues">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/strings.html">7.
|
||||
Strings
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="manual/strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="manual/strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/localization.html">8.
|
||||
Localization
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers.html">9.
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="manual/localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="manual/localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.ctype.impl.spec">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="manual/facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#std.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="manual/facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="manual/facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers.html">9.
|
||||
Containers
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="manual/containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="manual/associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="manual/associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="manual/associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="manual/unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="manual/unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="manual/unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/iterators.html">10.
|
||||
|
@ -493,40 +493,40 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||
<a class="link" href="http://www.codesourcery.com/cxx-abi/" target="_top">
|
||||
C++ ABI Summary
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="idm269884322000"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" target="_top">
|
||||
Intel Compilers for Linux Compatibility with the GNU Compilers
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.4"></a><p><span class="title"><em>
|
||||
<a class="link" href="https://software.intel.com/en-us/articles/intel-compilers-for-linux-compatibility-with-gnu-compilers" target="_top">
|
||||
Intel Compilers for Linux: Compatibility with GNU Compilers
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="idm269884320144"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://download.oracle.com/docs/cd/E19963-01/html/819-0690/index.html" target="_top">
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.5"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://docs.oracle.com/cd/E23824_01/html/819-0690/index.html" target="_top">
|
||||
Linker and Libraries Guide (document 819-0690)
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="idm269884318304"></a><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://download.oracle.com/docs/cd/E19422-01/819-3689/index.html" target="_top">
|
||||
Sun Studio 11: C++ Migration Guide (document 819-3689)
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="idm269884316448"></a><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.7"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.akkadia.org/drepper/dsohowto.pdf" target="_top">
|
||||
How to Write Shared Libraries
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="idm269884313008"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.arm.com/miscPDFs/8033.pdf" target="_top">
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.8"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0036b/index.html" target="_top">
|
||||
C++ ABI for the ARM Architecture
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="idm269884311200"></a><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.9"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" target="_top">
|
||||
Dynamic Shared Objects: Survey and Issues
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
ISO C++ J16/06-0046
|
||||
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idm269884307904"></a><p><span class="title"><em>
|
||||
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.10"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" target="_top">
|
||||
Versioning With Namespaces
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
ISO C++ J16/06-0083
|
||||
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="idm269884304624"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" target="_top">
|
||||
. </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.11"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://syrcose.ispras.ru/2009/files/02_paper.pdf" target="_top">
|
||||
Binary Compatibility of Shared Libraries Implemented in C++
|
||||
on GNU/Linux Systems
|
||||
</a>
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.algorithms"></a>Chapter 11.
|
||||
Algorithms
|
||||
<a id="idm269891098416" class="indexterm"></a>
|
||||
<a id="id-1.3.4.9.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="section"><a href="algorithms.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div><p>
|
||||
The neatest accomplishment of the algorithms section is that all the
|
||||
work is done via iterators, not containers directly. This means two
|
||||
|
@ -77,11 +77,11 @@ _Alloc_traits</code> have been removed.
|
||||
<span class="type">__alloc</span> to select an underlying allocator that
|
||||
satisfied memory allocation requests. The selection of this
|
||||
underlying allocator was not user-configurable.
|
||||
</p><div class="table"><a id="idm269884237408"></a><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection
|
||||
</p><div class="table"><a id="table.extension_allocators"></a><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> 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.
|
||||
</p><div class="table"><a id="idm269884209776"></a><p class="title"><strong>Table B.7. Extension Allocators Continued</strong></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
</p><div class="table"><a id="table.extension_allocators2"></a><p class="title"><strong>Table B.7. Extension Allocators Continued</strong></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
Debug mode first appears.
|
||||
</p><p>
|
||||
Precompiled header support <acronym class="acronym">PCH</acronym> support.
|
||||
|
@ -6,7 +6,7 @@
|
||||
Appendices
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.contrib"></a>
|
||||
Contributing
|
||||
<a id="idm269885393840" class="indexterm"></a>
|
||||
<a id="id-1.3.6.2.1.1.1" class="indexterm"></a>
|
||||
</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="section"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="section"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="section"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="section"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="section"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="section"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p>
|
||||
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.
|
||||
</p><p>
|
||||
Please contact Benjamin Kosnik at
|
||||
<code class="email"><<a class="email" href="mailto:bkoz+assign@redhat.com">bkoz+assign@redhat.com</a>></code> if you are confused
|
||||
about the assignment or have general licensing questions. When
|
||||
requesting an assignment form from
|
||||
<code class="email"><<a class="email" href="mailto:mailto:assign@gnu.org">mailto:assign@gnu.org</a>></code>, please cc the libstdc++
|
||||
maintainer above so that progress can be monitored.
|
||||
Please contact
|
||||
Paolo Carlini at <code class="email"><<a class="email" href="mailto:paolo.carlini@oracle.com">paolo.carlini@oracle.com</a>></code>
|
||||
or
|
||||
Jonathan Wakely at <code class="email"><<a class="email" href="mailto:jwakely+assign@redhat.com">jwakely+assign@redhat.com</a>></code>
|
||||
if you are confused about the assignment or have general licensing
|
||||
questions. When requesting an assignment form from
|
||||
<code class="email"><<a class="email" href="mailto:assign@gnu.org">assign@gnu.org</a>></code>, please CC the libstdc++
|
||||
maintainers above so that progress can be monitored.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="list.getting"></a>Getting Sources</h3></div></div></div><p>
|
||||
<a class="link" href="http://gcc.gnu.org/svnwrite.html" target="_top">Getting write access
|
||||
(look for "Write after approval")</a>
|
||||
|
@ -6,7 +6,7 @@
|
||||
Appendices
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.free"></a>
|
||||
Free Software Needs Free Documentation
|
||||
<a id="idm269883840592" class="indexterm"></a>
|
||||
<a id="id-1.3.6.4.1.1.1" class="indexterm"></a>
|
||||
</h1></div></div></div><p>
|
||||
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
|
||||
|
@ -77,7 +77,7 @@
|
||||
</p><p>
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow.
|
||||
</p><h2><a id="idm269883800400"></a>
|
||||
</p><h2><a id="id-1.3.6.5.16"></a>
|
||||
TERMS AND CONDITIONS
|
||||
</h2><h2><a id="gpl-3-definitions"></a>
|
||||
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.
|
||||
</p><h2><a id="idm269883701536"></a>
|
||||
</p><h2><a id="id-1.3.6.5.99"></a>
|
||||
END OF TERMS AND CONDITIONS
|
||||
</h2><h2><a id="HowToApply"></a>
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
File diff suppressed because one or more lines are too long
@ -180,11 +180,11 @@
|
||||
For now you can simply make a temporary string object using the
|
||||
constructor expression:
|
||||
</p><pre class="programlisting">
|
||||
std::bitset<5> b ( std::string(<span class="quote">“<span class="quote">10110</span>”</span>) );
|
||||
std::bitset<5> b ( std::string("10110") );
|
||||
</pre><p>
|
||||
instead of
|
||||
</p><pre class="programlisting">
|
||||
std::bitset<5> b ( <span class="quote">“<span class="quote">10110</span>”</span> ); // invalid
|
||||
std::bitset<5> b ( "10110" ); // invalid
|
||||
</pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="unordered_associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9.
|
||||
Containers
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics"></a>Chapter 14.
|
||||
Atomics
|
||||
<a id="idm269890877488" class="indexterm"></a>
|
||||
<a id="id-1.3.4.12.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p>
|
||||
Facilities for atomic operations.
|
||||
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.atomics.api"></a>API Reference</h2></div></div></div><p>
|
||||
|
@ -242,7 +242,7 @@ erase(size_type __pos = 0, size_type __n = npos)
|
||||
std::ostrstream oss;
|
||||
#endif
|
||||
|
||||
oss << <span class="quote">“<span class="quote">Name=</span>”</span> << m_name << <span class="quote">“<span class="quote">, number=</span>”</span> << 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
|
||||
<span class="type">iterator_type</span> typedefs in container classes are POD
|
||||
objects, not <span class="type">value_type</span> pointers.
|
||||
</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idm269883851680"></a><p><span class="title"><em>
|
||||
</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id-1.3.6.3.8.5.2"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.kegel.com/gcc/gcc4.html" target="_top">
|
||||
Migrating to GCC 4.1
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="idm269883848896"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.8.5.3"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" target="_top">
|
||||
Building the Whole Debian Archive with GCC 4.1: A Summary
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="idm269883846048"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.8.5.4"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" target="_top">
|
||||
Migration guide for GCC-3.2
|
||||
</a>
|
||||
</em>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Evolution and Deprecation History </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix C.
|
||||
Free Software Needs Free Documentation
|
||||
|
||||
</td></tr></table></div></body></html>
|
||||
</td></tr></table></div></body></html>
|
@ -75,7 +75,7 @@ else return false.</p></li></ol></div><p>
|
||||
</p><p>
|
||||
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).
|
||||
</p><div class="table"><a id="idm269889767120"></a><p class="title"><strong>Table 21.1. Bitmap Allocator Memory Map</strong></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
</p><div class="table"><a id="table.bitmap_alloc"></a><p class="title"><strong>Table 21.1. Bitmap Allocator Memory Map</strong></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
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
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"></a>Chapter 15.
|
||||
Concurrency
|
||||
<a id="idm269890863664" class="indexterm"></a>
|
||||
<a id="id-1.3.4.13.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p>
|
||||
Facilities for concurrent operation, and control thereof.
|
||||
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.concurrency.api"></a>API Reference</h2></div></div></div><p>
|
||||
|
@ -88,8 +88,7 @@
|
||||
configuration instructions</a>. This option can change the
|
||||
library ABI.
|
||||
</p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-threads</code></span></dt><dd><p>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.
|
||||
</p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of
|
||||
<code class="code">'--enable-libstdcxx-time=yes'</code>(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.
|
||||
</p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug</code></span></dt><dd><p>Build separate debug libraries in addition to what is normally built.
|
||||
By default, the debug libraries are compiled with
|
||||
<code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code>
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"></a>Chapter 9.
|
||||
Containers
|
||||
<a id="idm269891262400" class="indexterm"></a>
|
||||
<a id="id-1.3.4.7.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.sequences"></a>Sequences</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"></a>list</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
|
||||
Yes it is, and that's okay. This is a decision that we preserved
|
||||
when we imported SGI's STL implementation. The following is
|
||||
|
@ -162,7 +162,8 @@
|
||||
<a class="link" href="http://valgrind.org/docs/manual/hg-manual.html" target="_top">
|
||||
Helgrind</a>, and
|
||||
<a class="link" href="http://code.google.com/p/data-race-test/" target="_top">
|
||||
ThreadSanitizer</a>.
|
||||
ThreadSanitizer</a> (this refers to ThreadSanitizer v1, not the
|
||||
new "tsan" feature built-in to GCC itself).
|
||||
</p><p>
|
||||
With DRD, Helgrind and ThreadSanitizer you will need to define
|
||||
the macros like this:
|
||||
|
@ -18,6 +18,6 @@
|
||||
mode or with debug mode. The
|
||||
following table provides the names and headers of the debugging
|
||||
containers:
|
||||
</p><div class="table"><a id="idm269890777616"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename"><debug/bitset></code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename"><debug/deque></code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename"><debug/list></code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename"><debug/vector></code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
|
||||
</p><div class="table"><a id="table.debug_mode_containers"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename"><debug/bitset></code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename"><debug/deque></code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename"><debug/list></code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename"><debug/vector></code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
|
||||
containers have additional debug capability.
|
||||
</p><div class="table"><a id="idm269890732720"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table summary="Debugging Containers C++11" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
|
||||
</p><div class="table"><a id="table.debug_mode_containers_cxx11"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table summary="Debugging Containers C++11" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="concept_checking.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"></a>Chapter 5.
|
||||
Diagnostics
|
||||
<a id="idm269892036656" class="indexterm"></a>
|
||||
<a id="id-1.3.4.3.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p>
|
||||
All exception objects are defined in one of the standard header
|
||||
files: <code class="filename">exception</code>,
|
||||
|
@ -112,7 +112,7 @@
|
||||
supported, and are always aliased to dummy rules. These
|
||||
unsupported formats are: <span class="emphasis"><em>info</em></span>,
|
||||
<span class="emphasis"><em>ps</em></span>, and <span class="emphasis"><em>dvi</em></span>.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"></a>Doxygen</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idm269885108336"></a><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">coreutils</td><td align="center">8.5</td><td align="center">all</td></tr><tr><td align="center">bash</td><td align="center">4.1</td><td align="center">all</td></tr><tr><td align="center">doxygen</td><td align="center">1.7.6.1</td><td align="center">all</td></tr><tr><td align="center">graphviz</td><td align="center">2.26</td><td align="center">graphical hierarchies</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"></a>Doxygen</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="table.doxygen_prereq"></a><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">coreutils</td><td align="center">8.5</td><td align="center">all</td></tr><tr><td align="center">bash</td><td align="center">4.1</td><td align="center">all</td></tr><tr><td align="center">doxygen</td><td align="center">1.7.6.1</td><td align="center">all</td></tr><tr><td align="center">graphviz</td><td align="center">2.26</td><td align="center">graphical hierarchies</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
Prerequisite tools are Bash 2.0 or later,
|
||||
<a class="link" href="http://www.doxygen.org/" target="_top">Doxygen</a>, and
|
||||
the <a class="link" href="http://www.gnu.org/software/coreutils/" target="_top">GNU
|
||||
@ -125,7 +125,9 @@
|
||||
<a class="link" href="http://www.graphviz.org" target="_top">Graphviz</a> package
|
||||
will need to be installed. For PDF
|
||||
output, <a class="link" href="http://www.tug.org/applications/pdftex/" target="_top">
|
||||
pdflatex</a> is required.
|
||||
pdflatex</a> is required as well as a number of TeX packages
|
||||
such as <span class="package">texlive-xtab</span> and
|
||||
<span class="package">texlive-tocloft</span>.
|
||||
</p><p>
|
||||
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</code>).
|
||||
</p><p>
|
||||
Working on the doxygen path only, closely examine the
|
||||
contents of the following build directory:
|
||||
<code class="filename">build/target/libstdc++-v3/doc/doxygen/latex</code>.
|
||||
contents of the following build directory: <code class="filename">build/target/libstdc++-v3/doc/doxygen/latex</code>.
|
||||
Pay attention to three files enclosed within, annotated as follows.
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||
<span class="emphasis"><em>refman.tex</em></span>
|
||||
@ -187,12 +188,24 @@
|
||||
The actual latex file, or partial latex file. This is generated
|
||||
via <span class="command"><strong>doxygen</strong></span>, and is the LaTeX version of the
|
||||
Doxygen XML file <code class="filename">libstdc++-api.xml</code>. 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 <code class="filename">libstdc++-api.xml</code> is causing it.
|
||||
</p></li><li class="listitem"><p>
|
||||
<span class="emphasis"><em>refman.log</em></span>
|
||||
</p><p>
|
||||
A log created by <span class="command"><strong>latex</strong></span> as it processes the
|
||||
<code class="filename">refman.tex</code> file. If generating the PDF fails
|
||||
look at the end of this file for errors such as:
|
||||
</p><pre class="screen">
|
||||
! LaTeX Error: File `xtab.sty' not found.
|
||||
</pre><p>
|
||||
This indicates a required TeX package is missing. For the example
|
||||
above the <span class="package">texlive-xtab</span> package needs to be
|
||||
installed.
|
||||
</p></li><li class="listitem"><p>
|
||||
<span class="emphasis"><em>refman.out</em></span>
|
||||
</p><p>
|
||||
A log of the compilation of the converted LaTeX form to pdf. This
|
||||
A log of the compilation of the converted LaTeX form to PDF. This
|
||||
is a linear list, from the beginning of the
|
||||
<code class="filename">refman.tex</code> file: the last entry of this file
|
||||
should be the end of the LaTeX file. If it is truncated, then you
|
||||
@ -227,9 +240,9 @@
|
||||
<code class="classname">deque</code>/<code class="classname">vector</code>/<code class="classname">list</code>
|
||||
and <code class="classname">std::pair</code> as examples. For
|
||||
functions, see their member functions, and the free functions
|
||||
in <code class="filename">stl_algobase.h</code>. Member functions of
|
||||
other container-like types should read similarly to these
|
||||
member functions.
|
||||
in <code class="filename">stl_algobase.h</code>. Member
|
||||
functions of other container-like types should read similarly to
|
||||
these member functions.
|
||||
</p><p>
|
||||
Some commentary to accompany
|
||||
the first list in the <a class="link" href="http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html" target="_top">Special
|
||||
@ -253,16 +266,16 @@
|
||||
</p><p>
|
||||
Use either kind of grouping, as
|
||||
appropriate. <code class="filename">doxygroups.cc</code> exists for this
|
||||
purpose. See <code class="filename">stl_iterator.h</code> for a good example
|
||||
of the <span class="quote">“<span class="quote">other</span>”</span> kind of grouping.
|
||||
purpose. See <code class="filename">stl_iterator.h</code>
|
||||
for a good example of the <span class="quote">“<span class="quote">other</span>”</span> kind of grouping.
|
||||
</p><p>
|
||||
Please use markup tags like @p and @a when referring to things
|
||||
such as the names of function parameters. Use @e for emphasis
|
||||
when necessary. Use @c to refer to other standard names.
|
||||
(Examples of all these abound in the present code.)
|
||||
</p><p>
|
||||
Complicated math functions should use the multi-line
|
||||
format. An example from <code class="filename">random.h</code>:
|
||||
Complicated math functions should use the multi-line format.
|
||||
An example from <code class="filename">random.h</code>:
|
||||
</p><p>
|
||||
</p><div class="literallayout"><p><br />
|
||||
/**<br />
|
||||
@ -309,7 +322,7 @@
|
||||
writing Doxygen comments. Single and double quotes, and
|
||||
separators in filenames are two common trouble spots. When in
|
||||
doubt, consult the following table.
|
||||
</p><div class="table"><a id="idm269885032656"></a><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"></a>Docbook</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="idm269885013280"></a><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">docbook5-style-xsl</td><td align="center">1.76.1</td><td align="center">all</td></tr><tr><td align="center">xsltproc</td><td align="center">1.1.26</td><td align="center">all</td></tr><tr><td align="center">xmllint</td><td align="center">2.7.7</td><td align="center">validation</td></tr><tr><td align="center">dblatex</td><td align="center">0.3</td><td align="center">pdf output</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr><tr><td align="center">docbook2X</td><td align="center">0.8.8</td><td align="center">info output</td></tr><tr><td align="center">epub3 stylesheets</td><td align="center">b3</td><td align="center">epub output</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
</p><div class="table"><a id="table.doxygen_cmp"></a><p class="title"><strong>Table B.2. HTML to Doxygen Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"></a>Docbook</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><div class="table"><a id="table.docbook_prereq"></a><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col align="center" class="c1" /><col align="center" class="c2" /><col align="center" class="c3" /></colgroup><thead><tr><th align="center">Tool</th><th align="center">Version</th><th align="center">Required By</th></tr></thead><tbody><tr><td align="center">docbook5-style-xsl</td><td align="center">1.76.1</td><td align="center">all</td></tr><tr><td align="center">xsltproc</td><td align="center">1.1.26</td><td align="center">all</td></tr><tr><td align="center">xmllint</td><td align="center">2.7.7</td><td align="center">validation</td></tr><tr><td align="center">dblatex</td><td align="center">0.3</td><td align="center">pdf output</td></tr><tr><td align="center">pdflatex</td><td align="center">2007-59</td><td align="center">pdf output</td></tr><tr><td align="center">docbook2X</td><td align="center">0.8.8</td><td align="center">info output</td></tr><tr><td align="center">epub3 stylesheets</td><td align="center">b3</td><td align="center">epub output</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
Editing the DocBook sources requires an XML editor. Many
|
||||
exist: some notable options
|
||||
include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>,
|
||||
@ -402,7 +415,7 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal
|
||||
The actual latex file, or partial latex file. This is generated
|
||||
via <span class="command"><strong>dblatex</strong></span>, and is the LaTeX version of the
|
||||
DocBook XML file <code class="filename">spine.xml</code>. 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 <code class="filename">spine.xml</code> is causing it.
|
||||
</p></li><li class="listitem"><p>
|
||||
<span class="emphasis"><em>spine.out</em></span>
|
||||
@ -519,11 +532,11 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal
|
||||
<a class="link" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>.
|
||||
An incomplete reference for HTML to Docbook conversion is
|
||||
detailed in the table below.
|
||||
</p><div class="table"><a id="idm269884935712"></a><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>,
|
||||
</p><div class="table"><a id="table.docbook_cmp"></a><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>,
|
||||
<literallayout></td></tr><tr><td align="left"><ul></td><td align="left"><itemizedlist></td></tr><tr><td align="left"><ol></td><td align="left"><orderedlist></td></tr><tr><td align="left"><il></td><td align="left"><listitem></td></tr><tr><td align="left"><dl></td><td align="left"><variablelist></td></tr><tr><td align="left"><dt></td><td align="left"><term></td></tr><tr><td align="left"><dd></td><td align="left"><listitem></td></tr><tr><td align="left"><a href=""></td><td align="left"><ulink url=""></td></tr><tr><td align="left"><code></td><td align="left"><literal>, <programlisting></td></tr><tr><td align="left"><strong></td><td align="left"><emphasis></td></tr><tr><td align="left"><em></td><td align="left"><emphasis></td></tr><tr><td align="left">"</td><td align="left"><quote></td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
And examples of detailed markup for which there are no real HTML
|
||||
equivalents are listed in the table below.
|
||||
</p><div class="table"><a id="idm269884911568"></a><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left">
|
||||
</p><div class="table"><a id="table.docbook_elem"></a><p class="title"><strong>Table B.5. Docbook XML Element Use</strong></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left">
|
||||
<p><function>clear()</function></p>
|
||||
<p><function>fs.clear()</function></p>
|
||||
</td></tr><tr><td align="left"><type></td><td align="left"><type>long long</type></td></tr><tr><td align="left"><varname></td><td align="left"><varname>fs</varname></td></tr><tr><td align="left"><literal></td><td align="left">
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 <code class="code">pthread_t</code>, <code class="code">pthread_once_t</code>, <code class="code">pthread_create</code>,
|
||||
etc.
|
||||
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_concurrency_use.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 30. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html>
|
||||
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_concurrency_use.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 30. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html>
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="extensions.html" title="Part III. Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.
|
||||
Extensions
|
||||
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="idm269890842080"></a></h1></div></div></div><p>
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext.preface"></a></h1></div></div></div><p>
|
||||
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
|
||||
|
File diff suppressed because one or more lines are too long
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="localization.html" title="Chapter 8. Localization" /><link rel="prev" href="localization.html" title="Chapter 8. Localization" /><link rel="next" href="containers.html" title="Chapter 9. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8.
|
||||
Localization
|
||||
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.facet"></a>Facets</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"></a>ctype</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891548288"></a>Specializations</h5></div></div></div><p>
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.facet"></a>Facets</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"></a>ctype</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="facet.ctype.impl.spec"></a>Specializations</h5></div></div></div><p>
|
||||
For the required specialization <code class="classname">codecvt<wchar_t, char, mbstate_t></code>,
|
||||
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.
|
||||
</p></li><li class="listitem"><p>
|
||||
Rename abstract base class. See if just smash-overriding is a
|
||||
better approach. Clarify, add sanity to naming.
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891525936"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The GNU C Library
|
||||
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="idm269891521184"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.3"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Correspondence
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269891518096"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.4"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269891515808"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.5"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269891513536"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.unix.org/version3/ieee_std.html" target="_top">
|
||||
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)
|
||||
</a>
|
||||
</em>. </span><span class="copyright">Copyright © 1999
|
||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="idm269891510288"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.7"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The C++ Programming Language, Special Edition
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891505664"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.2.4.8"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
@ -424,51 +424,51 @@ codecvt usage.
|
||||
</p></li><li class="listitem"><p>
|
||||
wchar_t/char internal buffers and conversions between
|
||||
internal/external buffers?
|
||||
</p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891409072"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The GNU C Library
|
||||
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">
|
||||
Chapters 6 Character Set Handling and 7 Locales and Internationalization
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891404320"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.3"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Correspondence
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269891401232"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.4"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269891398944"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.5"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269891396672"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://pubs.opengroup.org/onlinepubs/9699919799/" target="_top">
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</a>
|
||||
</em>. </span><span class="copyright">Copyright © 2008
|
||||
The Open Group/The Institute of Electrical and Electronics
|
||||
Engineers, Inc.
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891393440"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.7"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The C++ Programming Language, Special Edition
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891388816"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.8"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley Longman
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891383152"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.9"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.lysator.liu.se/c/na1.html" target="_top">
|
||||
A brief description of Normative Addendum 1
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="idm269891379904"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.10"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://tldp.org/HOWTO/Unicode-HOWTO.html" target="_top">
|
||||
The Unicode HOWTO
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="idm269891377120"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.3.8.11"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top">
|
||||
UTF-8 and Unicode FAQ for Unix/Linux
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.localization.facet.messages"></a>messages</h3></div></div></div><p>
|
||||
The std::messages facet implements message retrieval functionality
|
||||
equivalent to Java's java.text.MessageFormat .using either GNU gettext
|
||||
</em>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.messages"></a>messages</h3></div></div></div><p>
|
||||
The <code class="classname">std::messages</code> facet implements message retrieval functionality
|
||||
equivalent to Java's <code class="classname">java.text.MessageFormat</code> using either GNU <code class="function">gettext</code>
|
||||
or IEEE 1003.1-200 functions.
|
||||
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.req"></a>Requirements</h4></div></div></div><p>
|
||||
The std::messages facet is probably the most vaguely defined facet in
|
||||
The <code class="classname">std::messages</code> 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:
|
||||
</p><p>
|
||||
While the virtual functions are:
|
||||
</p><p>
|
||||
<code class="code">catalog do_open(const string&, const locale&) const</code>
|
||||
<code class="code">catalog do_open(const string& name, const locale& loc) const</code>
|
||||
</p><div class="blockquote"><blockquote class="blockquote"><p>
|
||||
<span class="emphasis"><em>
|
||||
-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 <code class="code">get()</code> to retrieve a
|
||||
message, from the message catalog identified by the string <code class="code">name</code>
|
||||
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 <code class="code">close()</code>. Returns a value less than 0 if no such
|
||||
catalog can be opened.
|
||||
</em></span>
|
||||
</p></blockquote></div><p>
|
||||
<code class="code">string_type do_get(catalog, int, int, const string_type&) const</code>
|
||||
<code class="code">string_type do_get(catalog cat, int set , int msgid, const string_type& dfault) const</code>
|
||||
</p><div class="blockquote"><blockquote class="blockquote"><p>
|
||||
<span class="emphasis"><em>
|
||||
-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 <code class="code">cat</code> obtained from <code class="code">open()</code> and not yet closed.
|
||||
-4- Returns: A message identified by arguments <code class="code">set</code>, <code class="code">msgid</code>, and <code class="code">dfault</code>,
|
||||
according to an implementation-defined mapping. If no such message can
|
||||
be found, returns dfault.
|
||||
be found, returns <code class="code">dfault</code>.
|
||||
</em></span>
|
||||
</p></blockquote></div><p>
|
||||
<code class="code">void do_close(catalog) const</code>
|
||||
<code class="code">void do_close(catalog cat) const</code>
|
||||
</p><div class="blockquote"><blockquote class="blockquote"><p>
|
||||
<span class="emphasis"><em>
|
||||
-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 <code class="code">open()</code> and not yet closed.
|
||||
-6- Effects: Releases unspecified resources associated with <code class="code">cat</code>.
|
||||
-7- Notes: The limit on such resources, if any, is implementation-defined.
|
||||
</em></span>
|
||||
</p></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.design"></a>Design</h4></div></div></div><p>
|
||||
@ -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.
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891296640"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The GNU C Library
|
||||
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891291888"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.3"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Correspondence
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269891288800"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.4"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269891286512"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.5"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269891284240"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://pubs.opengroup.org/onlinepubs/9699919799/" target="_top">
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</a>
|
||||
</em>. </span><span class="copyright">Copyright © 2008
|
||||
The Open Group/The Institute of Electrical and Electronics
|
||||
Engineers, Inc.
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891281008"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.7"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The C++ Programming Language, Special Edition
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891276384"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.8"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley Longman
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891270720"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.9"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.oracle.com/technetwork/java/api/index.html" target="_top">
|
||||
API Specifications, Java Platform
|
||||
</a>
|
||||
</em>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat,
|
||||
java.util.Locale, java.util.ResourceBundle
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891268384"></a><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.3.4.8.10"></a><p><span class="title"><em>
|
||||
<a class="link" href="https://www.gnu.org/software/gettext/" target="_top">
|
||||
GNU gettext tools, version 0.10.38, Native Language Support
|
||||
Library and Tools.
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.io"></a>Chapter 13.
|
||||
Input and Output
|
||||
<a id="idm269891032720" class="indexterm"></a>
|
||||
<a id="id-1.3.4.11.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="section"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="section"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="section"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="section"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="section"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="section"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="section"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="section"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="section"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>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
|
||||
<code class="filename"><iostream></code> when they don't
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators"></a>Chapter 10.
|
||||
Iterators
|
||||
<a id="idm269891133328" class="indexterm"></a>
|
||||
<a id="id-1.3.4.8.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="section"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="section"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.iterators.predefined"></a>Predefined</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p>
|
||||
The following
|
||||
FAQ <a class="link" href="../faq.html#faq.iterator_as_pod" title="7.1.">entry</a> points out that
|
||||
|
@ -6,8 +6,8 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization"></a>Chapter 8.
|
||||
Localization
|
||||
<a id="idm269891625280" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.locales"></a>Locales</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
|
||||
<a id="id-1.3.4.6.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl.spec">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.locales"></a>Locales</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"></a>locale</h3></div></div></div><p>
|
||||
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.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="locale.impl.c"></a>Interacting with "C" locales</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||
<code class="code">`locale -a`</code> displays available locales.
|
||||
<code class="code">locale -a</code> displays available locales.
|
||||
</p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting">
|
||||
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?
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891582432"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The GNU C Library
|
||||
</em>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">
|
||||
Chapters 6 Character Set Handling and 7 Locales and
|
||||
Internationalization
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891577664"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.3"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Correspondence
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="idm269891574576"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.4"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="idm269891572288"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.5"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 9899:1999 Programming languages - C
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="idm269891570016"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://pubs.opengroup.org/onlinepubs/9699919799/" target="_top">
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</a>
|
||||
</em>. </span><span class="copyright">Copyright © 2008
|
||||
The Open Group/The Institute of Electrical and Electronics
|
||||
Engineers, Inc.
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891566784"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.7"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The C++ Programming Language, Special Edition
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891562160"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.6.2.2.7.8"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
|
@ -92,7 +92,7 @@
|
||||
or loading and unloading shared objects in memory. As such, using
|
||||
caching allocators on systems that do not support
|
||||
<code class="function">abi::__cxa_atexit</code> is not recommended.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891950848"></a>Interface Design</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="allocator.interface"></a>Interface Design</h5></div></div></div><p>
|
||||
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 @@
|
||||
</p><p>
|
||||
The base class that <code class="classname">allocator</code> is derived from
|
||||
may not be user-configurable.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891947296"></a>Selecting Default Allocation Policy</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="allocator.default"></a>Selecting Default Allocation Policy</h5></div></div></div><p>
|
||||
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
|
||||
<code class="classname">allocator</code> is
|
||||
<code class="classname">__gnu_cxx::new_allocator</code>.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891934000"></a>Disabling Memory Caching</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="allocator.caching"></a>Disabling Memory Caching</h5></div></div></div><p>
|
||||
In use, <code class="classname">allocator</code> 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
|
||||
<a class="link" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator">chapter</a>
|
||||
in the documentation.
|
||||
</p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891879104"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
ISO/IEC 14882:1998 Programming languages - C++
|
||||
</em>. </span>
|
||||
isoc++_1998
|
||||
<span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="idm269891877264"></a><p><span class="title"><em>
|
||||
<span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top">
|
||||
The Standard Librarian: What Are Allocators Good For?
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
|
||||
C/C++ Users Journal
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891873488"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.hoard.org/" target="_top">
|
||||
The Hoard Memory Allocator
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="idm269891870720"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://people.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top">
|
||||
Reconsidering Custom Memory Allocation
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span></p></div><div class="biblioentry"><a id="idm269891864560"></a><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" target="_top">
|
||||
Allocator Types
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername">
|
||||
C/C++ Users Journal
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891859824"></a><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.7"></a><p><span class="citetitle"><em class="citetitle">The C++ Programming Language</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
|
||||
Addison Wesley
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269891855392"></a><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.8"></a><p><span class="citetitle"><em class="citetitle">Yalloc: A Recycling C++ Allocator</em>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can
|
||||
happen with misuse of the <code class="classname">auto_ptr</code> class
|
||||
template (called <acronym class="acronym">AP</acronym> here) would take some
|
||||
time. Suffice it to say that the use of <acronym class="acronym">AP</acronym>
|
||||
@ -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.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891814224"></a>Class Hierarchy</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"></a>Implementation</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.hier"></a>Class Hierarchy</h5></div></div></div><p>
|
||||
A <code class="classname">shared_ptr<T></code> contains a pointer of
|
||||
type <span class="type">T*</span> and an object of type
|
||||
<code class="classname">__shared_count</code>. 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 <code class="classname">auto_ptr</code> parameters are
|
||||
deprecated in C++11 mode.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891791712"></a>Thread Safety</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.thread"></a>Thread Safety</h5></div></div></div><p>
|
||||
The
|
||||
<a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="_top">Thread
|
||||
Safety</a> 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.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891784416"></a>Selecting Lock Policy</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.policy"></a>Selecting Lock Policy</h5></div></div></div><p>
|
||||
</p><p>
|
||||
There is a single <code class="classname">_Sp_counted_base</code> class,
|
||||
which is a template parameterized on the enum
|
||||
@ -578,7 +578,7 @@ used when libstdc++ is built without <code class="literal">--enable-threads</cod
|
||||
<code class="filename">ext/atomicity.h</code>, 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.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891769792"></a>Related functions and classes</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.rel"></a>Related functions and classes</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
|
||||
<code class="code">const_pointer_cast</code></span></dt><dd><p>
|
||||
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.
|
||||
</p></dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"></a>Use</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891753440"></a>Examples</h5></div></div></div><p>
|
||||
</p></dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"></a>Use</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.examples"></a>Examples</h5></div></div></div><p>
|
||||
Examples of use can be found in the testsuite, under
|
||||
<code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>,
|
||||
<code class="filename">testsuite/20_util/shared_ptr</code>
|
||||
and
|
||||
<code class="filename">testsuite/20_util/weak_ptr</code>.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="idm269891749856"></a>Unresolved Issues</h5></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="shared_ptr.issues"></a>Unresolved Issues</h5></div></div></div><p>
|
||||
The <span class="emphasis"><em><code class="classname">shared_ptr</code> atomic access</em></span>
|
||||
clause in the C++11 standard is not implemented in GCC.
|
||||
</p><p>
|
||||
The <span class="type">_S_single</span> policy uses atomics when used in MT
|
||||
code, because it uses the same dispatcher functions that check
|
||||
<code class="function">__gthread_active_p()</code>. This could be
|
||||
addressed by providing template specialisations for some members
|
||||
of <code class="classname">_Sp_counted_base<_S_single></code>.
|
||||
</p><p>
|
||||
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.
|
||||
</p></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="idm269891738624"></a><p><span class="title"><em>
|
||||
</p></div><div class="bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id-1.3.4.4.4.5.8.2"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">
|
||||
Improving shared_ptr for C++0x, Revision 2
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2351
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891736336"></a><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.5.8.3"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top">
|
||||
C++ Standard Library Active Issues List
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2456
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891734048"></a><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.5.8.4"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top">
|
||||
Working Draft, Standard for Programming Language C++
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2461
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269891731744"></a><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.5.8.5"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">
|
||||
Boost C++ Libraries documentation, shared_ptr
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2461
|
||||
. </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Pairs </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Traits</td></tr></table></div></body></html>
|
||||
. </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Pairs </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Traits</td></tr></table></div></body></html>
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics"></a>Chapter 12.
|
||||
Numerics
|
||||
<a id="idm269891075744" class="indexterm"></a>
|
||||
<a id="id-1.3.4.10.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="section"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="section"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="section"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="section"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.complex"></a>Complex</h2></div></div></div><p>
|
||||
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.complex.processing"></a>complex Processing</h3></div></div></div><p>
|
||||
</p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry,
|
||||
|
@ -12,11 +12,11 @@ explicit source declaration or by compiling existing sources with a
|
||||
specific compiler flag.
|
||||
</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include
|
||||
<code class="filename">numeric</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::accumulate</code></p></li><li class="listitem"><p><code class="function">std::adjacent_difference</code></p></li><li class="listitem"><p><code class="function">std::inner_product</code></p></li><li class="listitem"><p><code class="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include
|
||||
<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idm269890341120"></a><p><span class="citetitle"><em class="citetitle">
|
||||
<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id-1.3.5.5.9.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Parallelization of Bulk Operations for STL Dictionaries
|
||||
</em>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Leonor</span> <span class="surname">Frias</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
|
||||
Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS)
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269890336048"></a><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.5.5.9.3"></a><p><span class="citetitle"><em class="citetitle">
|
||||
The Multi-Core Standard Template Library
|
||||
</em>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Peter</span> <span class="surname">Sanders</span>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Putze</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername">
|
||||
Euro-Par 2007: Parallel Processing. (LNCS 4641)
|
||||
|
File diff suppressed because one or more lines are too long
@ -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).
|
||||
</p></li></ol></div><div class="figure"><a id="idm269889654480"></a><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_node_invariants.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
|
||||
</p></li></ol></div><div class="figure"><a id="id-1.3.5.9.2.5.3.3.4"></a><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_node_invariants.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"></a>Underlying Data Structures</h5></div></div></div><p>
|
||||
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 @@
|
||||
</p><p>
|
||||
The figure below shows the different underlying data structures
|
||||
currently supported in this library.
|
||||
</p><div class="figure"><a id="idm269889647760"></a><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_1.png" align="middle" alt="Underlying Associative Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.2.5.3.4.4"></a><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_1.png" align="middle" alt="Underlying Associative Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
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
|
||||
<span class="emphasis"><em>logical</em></span> elements between 1 and 5, as in
|
||||
label B.
|
||||
</p><div class="figure"><a id="idm269889616064"></a><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_1.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.2.5.3.5.4.5"></a><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_1.png" align="middle" alt="Node Invariants" /></div></div></div><br class="figure-break" /><p>
|
||||
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.
|
||||
</p><div class="figure"><a id="idm269889601152"></a><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_2.png" align="middle" alt="Point Iteration in Hash Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.2.5.3.5.5.7"></a><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterators_range_ops_2.png" align="middle" alt="Point Iteration in Hash Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
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.
|
||||
</p><div class="figure"><a id="idm269889591888"></a><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_guarantee_erase.png" align="middle" alt="Effect of erase in different underlying data structures" /></div></div></div><br class="figure-break" /><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.2.5.3.5.6.6"></a><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_guarantee_erase.png" align="middle" alt="Effect of erase in different underlying data structures" /></div></div></div><br class="figure-break" /><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
|
||||
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.
|
||||
</p><div class="figure"><a id="idm269889524368"></a><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_2.png" align="middle" alt="Underlying Priority Queue Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.2.5.4.3.3"></a><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_different_underlying_dss_2.png" align="middle" alt="Underlying Priority Queue Data Structures" /></div></div></div><br class="figure-break" /><p>
|
||||
No single implementation can completely replace any of the
|
||||
others. Some have better <code class="function">push</code>
|
||||
and <code class="function">pop</code> amortized performance, some have
|
||||
@ -1304,4 +1304,4 @@
|
||||
Wickland
|
||||
</span>. </span><span class="publisher"><span class="publishername">
|
||||
National Psychological Institute
|
||||
. </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator_impl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="policy_data_structures_using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html>
|
||||
. </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator_impl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="policy_data_structures_using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></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.
|
||||
</p><div class="figure"><a id="idm269889267280"></a><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_1.png" align="middle" alt="Non-unique Mapping Standard Containers" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.3.3.3.14"></a><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_1.png" align="middle" alt="Non-unique Mapping Standard Containers" /></div></div></div><br class="figure-break" /><p>
|
||||
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.
|
||||
</p><div class="figure"><a id="idm269889243776"></a><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_3.png" align="middle" alt="Non-unique Mapping Containers" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.3.3.3.23"></a><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_embedded_lists_3.png" align="middle" alt="Non-unique Mapping Containers" /></div></div></div><br class="figure-break" /><p>
|
||||
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, <span class="emphasis"><em>C</em></span>shows invariants for "set"
|
||||
containers: iterators are synonymous with const iterators.</p><div class="figure"><a id="idm269889223968"></a><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterator_hierarchy.png" align="middle" alt="Point Iterator Hierarchy" /></div></div></div><br class="figure-break" /><p>Note that point-type iterators in self-organizing containers
|
||||
containers: iterators are synonymous with const iterators.</p><div class="figure"><a id="id-1.3.5.9.4.3.4.3.5"></a><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_point_iterator_hierarchy.png" align="middle" alt="Point Iterator Hierarchy" /></div></div></div><br class="figure-break" /><p>Note that point-type iterators in self-organizing containers
|
||||
(hash-based associative containers) lack movement
|
||||
operators, such as <code class="literal">operator++</code> - 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.
|
||||
</p><div class="figure"><a id="idm269889210688"></a><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_tag_hierarchy.png" align="middle" alt="Invalidation Guarantee Tags Hierarchy" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.3.4.4.5"></a><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_invalidation_tag_hierarchy.png" align="middle" alt="Invalidation Guarantee Tags Hierarchy" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||
<code class="classname">basic_invalidation_guarantee</code>
|
||||
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 @@
|
||||
</p><p>
|
||||
This library contains a container tag hierarchy corresponding to the
|
||||
diagram below.
|
||||
</p><div class="figure"><a id="idm269889180448"></a><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_container_tag_hierarchy.png" align="middle" alt="Container Tag Hierarchy" /></div></div></div><br class="figure-break" /><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.3.5.7.4"></a><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_container_tag_hierarchy.png" align="middle" alt="Container Tag Hierarchy" /></div></div></div><br class="figure-break" /><p>
|
||||
Given any container <span class="type">Cntnr</span>, the tag of
|
||||
the underlying data structure can be found via <code class="literal">typename
|
||||
Cntnr::container_category</code>.
|
||||
@ -487,7 +487,7 @@
|
||||
collision-chaining container, except for the following.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><code class="classname">Comb_Probe_Fn</code> describes how to transform a probe
|
||||
sequence into a sequence of positions within the table.</p></li><li class="listitem"><p><code class="classname">Probe_Fn</code> describes a probe sequence policy.</p></li></ol></div><p>Some of the default template values depend on the values of
|
||||
other parameters, and are explained below.</p></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="container.hash.details"></a>Details</h5></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.hash_policies"></a>Hash Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.general"></a>General</h6></div></div></div><p>Following is an explanation of some functions which hashing
|
||||
involves. The graphic below illustrates the discussion.</p><div class="figure"><a id="idm269889140368"></a><p class="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
|
||||
involves. The graphic below illustrates the discussion.</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.2.2.3"></a><p class="title"><strong>Figure 22.14. Hash functions, ranged-hash functions, and
|
||||
range-hashing functions</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_ranged_hash_range_hashing_fns.png" align="middle" alt="Hash functions, ranged-hash functions, and range-hashing functions" /></div></div></div><br class="figure-break" /><p>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<sub>+</sub>,</p><p>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<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><div class="equation"><a id="idm269889126560"></a><p class="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
i.e., for any r in Z<sub>+</sub>,</p><p>0 ≤ g(r, m) ≤ m - 1</p><p>The resulting ranged-hash function, is</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.2.15"></a><p class="title"><strong>Equation 22.1. Ranged Hash Function</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
f(u , m) = g(h(u), m)
|
||||
</span></div></div><br class="equation-break" /><p>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.</p></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.range"></a>Range Hashing</h6></div></div></div><p>Some common choices for range-hashing functions are the
|
||||
division, multiplication, and middle-square methods (<a class="xref" href="policy_data_structures.html#biblio.knuth98sorting" title="The Art of Computer Programming - Sorting and Searching">[biblio.knuth98sorting]</a>), defined
|
||||
as</p><div class="equation"><a id="idm269889120672"></a><p class="title"><strong>Equation 22.2. Range-Hashing, Division Method</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
as</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.3.3"></a><p class="title"><strong>Equation 22.2. Range-Hashing, Division Method</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
g(r, m) = r mod m
|
||||
</span></div></div><br class="equation-break" /><p>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</p><p>and</p><p>g(r, m) = ⌈ u/v ( r<sup>2</sup> mod v ) ⌉</p><p>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.,</p><div class="equation"><a id="idm269889116160"></a><p class="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
m is a power of 2), i.e.,</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.3.9"></a><p class="title"><strong>Equation 22.3. Division via Prime Modulo</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
g(r, m) = r % m
|
||||
</span></div></div><br class="equation-break" /><p>and</p><div class="equation"><a id="idm269889114336"></a><p class="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
</span></div></div><br class="equation-break" /><p>and</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.3.11"></a><p class="title"><strong>Equation 22.4. Division via Bit Mask</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
g(r, m) = r & m - 1, (with m =
|
||||
2<sup>k</sup> for some k)
|
||||
</span></div></div><br class="equation-break" /><p>respectively.</p><p>The % (modulo) implementation has the advantage that for
|
||||
@ -563,7 +563,7 @@
|
||||
s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]
|
||||
</p><p>be a string of t characters, each of which is from
|
||||
domain S. Consider the following ranged-hash
|
||||
function:</p><div class="equation"><a id="idm269889104704"></a><p class="title"><strong>Equation 22.5.
|
||||
function:</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.4.7"></a><p class="title"><strong>Equation 22.5.
|
||||
A Standard String Hash Function
|
||||
</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
f<sub>1</sub>(s, m) = ∑ <sub>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</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><div class="equation"><a id="idm269889098560"></a><p class="title"><strong>Equation 22.6.
|
||||
only the first k characters of the string, where</p><p>|S|<sup>k</sup> ≥ m ,</p><p>i.e., using the hash function</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.2.4.12"></a><p class="title"><strong>Equation 22.6.
|
||||
Only k String DNA Hash
|
||||
</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
f<sub>2</sub>(s, m) = ∑ <sub>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).</p><div class="figure"><a id="idm269889075936"></a><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" align="middle" alt="Insert hash sequence diagram" /></div></div></div><br class="figure-break" /><p>If <code class="classname">cc_hash_table</code>'s
|
||||
and E).</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.2.5.3.4"></a><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" align="middle" alt="Insert hash sequence diagram" /></div></div></div><br class="figure-break" /><p>If <code class="classname">cc_hash_table</code>'s
|
||||
hash-functor, <code class="classname">Hash_Fn</code> is instantiated by <code class="classname">null_type</code> , then <code class="classname">Comb_Hash_Fn</code> is taken to be
|
||||
a ranged-hash function. The graphic below shows an <code class="function">insert</code> 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).</p><div class="figure"><a id="idm269889068880"></a><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" align="middle" alt="Insert hash sequence diagram with a null policy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"></a>
|
||||
(points B and C).</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.2.5.3.6"></a><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" align="middle" alt="Insert hash sequence diagram with a null policy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"></a>
|
||||
Probing tables
|
||||
</h6></div></div></div><p><code class="classname">gp_hash_table</code> is parametrized by
|
||||
<code class="classname">Hash_Fn</code>, <code class="classname">Probe_Fn</code>,
|
||||
@ -634,7 +634,7 @@
|
||||
a linear probe and a quadratic probe function,
|
||||
respectively.</p></li></ol></div><p>
|
||||
The graphic below shows the relationships.
|
||||
</p><div class="figure"><a id="idm269889052112"></a><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_policy_cd.png" align="middle" alt="Hash policy class diagram" /></div></div></div><br class="figure-break" /></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"></a>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.2.5.5.5"></a><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_hash_policy_cd.png" align="middle" alt="Hash policy class diagram" /></div></div></div><br class="figure-break" /></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"></a>Resize Policies</h6></div></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"></a>General</h6></div></div></div><p>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:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>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.</p><div class="figure"><a id="idm269889033008"></a><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_balls_and_bins.png" align="middle" alt="Balls and bins" /></div></div></div><br class="figure-break" /><p>Denote the probability that a probe sequence of length
|
||||
be found with probability at most 1/m.</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.3.4.7"></a><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_balls_and_bins.png" align="middle" alt="Balls and bins" /></div></div></div><br class="figure-break" /><p>Denote the probability that a probe sequence of length
|
||||
k appears in bin i by p<sub>i</sub>, the
|
||||
length of the probe sequence of bin i by
|
||||
l<sub>i</sub>, and assume uniform distribution. Then</p><div class="equation"><a id="idm269889027504"></a><p class="title"><strong>Equation 22.7.
|
||||
l<sub>i</sub>, and assume uniform distribution. Then</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.3.4.9"></a><p class="title"><strong>Equation 22.7.
|
||||
Probability of Probe Sequence of Length k
|
||||
</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
p<sub>1</sub> =
|
||||
@ -684,7 +684,7 @@
|
||||
l<sub>i</sub> are negatively-dependent
|
||||
(<a class="xref" href="policy_data_structures.html#biblio.dubhashi98neg" title="Balls and bins: A study in negative dependence">[biblio.dubhashi98neg]</a>)
|
||||
. Let
|
||||
I(.) denote the indicator function. Then</p><div class="equation"><a id="idm269889020736"></a><p class="title"><strong>Equation 22.8.
|
||||
I(.) denote the indicator function. Then</p><div class="equation"><a id="id-1.3.5.9.4.4.2.3.3.4.14"></a><p class="title"><strong>Equation 22.8.
|
||||
Probability Probe Sequence in Some Bin
|
||||
</strong></p><div class="equation-contents"><span class="mathphrase">
|
||||
P( exists<sub>i</sub> l<sub>i</sub> ≥ 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).</p><div class="figure"><a id="idm269889002224"></a><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" align="middle" alt="Insert resize sequence diagram" /></div></div></div><br class="figure-break" /><p>In practice, a resize policy can be usually orthogonally
|
||||
inserted, and the policy notified (point I).</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.3.5.3.6"></a><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" align="middle" alt="Insert resize sequence diagram" /></div></div></div><br class="figure-break" /><p>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: <code class="classname">hash_standard_resize_policy</code>
|
||||
@ -732,8 +732,8 @@
|
||||
both, and acts as a standard delegate (<a class="xref" href="policy_data_structures.html#biblio.gof" title="Design Patterns - Elements of Reusable Object-Oriented Software">[biblio.gof]</a>)
|
||||
to these policies.</p><p>The two graphics immediately below show sequence diagrams
|
||||
illustrating the interaction between the standard resize policy
|
||||
and its trigger and size policies, respectively.</p><div class="figure"><a id="idm269888994448"></a><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" align="middle" alt="Standard resize policy trigger sequence diagram" /></div></div></div><br class="figure-break" /><div class="figure"><a id="idm269888990288"></a><p class="title"><strong>Figure 22.21. Standard resize policy size sequence
|
||||
and its trigger and size policies, respectively.</p><div class="figure"><a id="id-1.3.5.9.4.4.2.3.3.5.3.9"></a><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" align="middle" alt="Standard resize policy trigger sequence diagram" /></div></div></div><br class="figure-break" /><div class="figure"><a id="id-1.3.5.9.4.4.2.3.3.5.3.10"></a><p class="title"><strong>Figure 22.21. Standard resize policy size sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_insert_resize_sequence_diagram3.png" align="middle" alt="Standard resize policy size sequence diagram" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.impl.predefined"></a>Predefined Policies</h6></div></div></div><p>The library includes the following
|
||||
instantiations of size and trigger policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><code class="classname">hash_load_check_resize_trigger</code>
|
||||
implements a load check trigger policy.</p></li><li class="listitem"><p><code class="classname">cc_hash_max_collision_check_resize_trigger</code>
|
||||
@ -876,7 +876,7 @@
|
||||
each node, and maintains node invariants (see <a class="xref" href="policy_data_structures.html#biblio.clrs2001" title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>.) 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.</p><div class="figure"><a id="idm269888912192"></a><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invariants.png" align="middle" alt="Tree node invariants" /></div></div></div><br class="figure-break" /><p>Supporting such trees is difficult for a number of
|
||||
intervals at the sub-tree rooted at the node.</p><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.5"></a><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invariants.png" align="middle" alt="Tree node invariants" /></div></div></div><br class="figure-break" /><p>Supporting such trees is difficult for a number of
|
||||
reasons:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>There must be a way to specify what a node's metadata
|
||||
should be (if any).</p></li><li class="listitem"><p>Various operations can invalidate node
|
||||
invariants. The graphic below shows how a right rotation,
|
||||
@ -890,7 +890,7 @@
|
||||
metadata.</p></li><li class="listitem"><p>It is not feasible to know in advance which methods trees
|
||||
can support. Besides the usual <code class="classname">find</code> method, the
|
||||
first tree can support a <code class="classname">find_by_order</code> method, while
|
||||
the second can support an <code class="classname">overlaps</code> method.</p></li></ol></div><div class="figure"><a id="idm269888902752"></a><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invalidations.png" align="middle" alt="Tree node invalidation" /></div></div></div><br class="figure-break" /><p>These problems are solved by a combination of two means:
|
||||
the second can support an <code class="classname">overlaps</code> method.</p></li></ol></div><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.8"></a><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_invalidations.png" align="middle" alt="Tree node invalidation" /></div></div></div><br class="figure-break" /><p>These problems are solved by a combination of two means:
|
||||
node iterators, and template-template node updater
|
||||
parameters.</p><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.node.iterators"></a>Node Iterators</h6></div></div></div><p>Each tree-based container defines two additional iterator
|
||||
types, <code class="classname">const_node_iterator</code>
|
||||
@ -919,7 +919,7 @@
|
||||
<code class="classname">node_update</code> class, and publicly subclasses
|
||||
<code class="classname">node_update</code>. The graphic below shows this
|
||||
scheme, as well as some predefined policies (which are explained
|
||||
below).</p><div class="figure"><a id="idm269888889584"></a><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_updator_policy_cd.png" align="middle" alt="A tree and its update policy" /></div></div></div><br class="figure-break" /><p><code class="classname">node_update</code> (an instantiation of
|
||||
below).</p><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.11.3"></a><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_tree_node_updator_policy_cd.png" align="middle" alt="A tree and its update policy" /></div></div></div><br class="figure-break" /><p><code class="classname">node_update</code> (an instantiation of
|
||||
<code class="classname">Node_Update</code>) must define <code class="classname">metadata_type</code> as
|
||||
the type of metadata it requires. For order statistics,
|
||||
e.g., <code class="classname">metadata_type</code> might be <code class="classname">size_t</code>.
|
||||
@ -938,7 +938,7 @@
|
||||
<code class="classname">nd_it</code>. 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.</p><div class="figure"><a id="idm269888877920"></a><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_restoring_node_invariants.png" align="middle" alt="Restoring node invariants" /></div></div></div><br class="figure-break" /><p>When a tree operation might invalidate some node invariant,
|
||||
nodes should have valid invariants, as in label B.</p><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.11.8"></a><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_restoring_node_invariants.png" align="middle" alt="Restoring node invariants" /></div></div></div><br class="figure-break" /><p>When a tree operation might invalidate some node invariant,
|
||||
it invokes this method in its <code class="classname">node_update</code> base to
|
||||
restore the invariant. For example, the graphic below shows
|
||||
an <code class="function">insert</code> operation (point A); the tree performs some
|
||||
@ -946,7 +946,7 @@
|
||||
C, and D). (It is well known that any <code class="function">insert</code>,
|
||||
<code class="function">erase</code>, <code class="function">split</code> or <code class="function">join</code>, can restore
|
||||
all node invariants by a small number of node invariant updates (<a class="xref" href="policy_data_structures.html#biblio.clrs2001" title="Introduction to Algorithms, 2nd edition">[biblio.clrs2001]</a>)
|
||||
.</p><div class="figure"><a id="idm269888869744"></a><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_update_seq_diagram.png" align="middle" alt="Insert update sequence" /></div></div></div><br class="figure-break" /><p>To complete the description of the scheme, three questions
|
||||
.</p><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.11.10"></a><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_update_seq_diagram.png" align="middle" alt="Insert update sequence" /></div></div></div><br class="figure-break" /><p>To complete the description of the scheme, three questions
|
||||
need to be answered:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>How can a tree which supports order statistics define a
|
||||
method such as <code class="classname">find_by_order</code>?</p></li><li class="listitem"><p>How can the node updater base access methods of the
|
||||
tree?</p></li><li class="listitem"><p>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.</p></li></ol></div><div class="figure"><a id="idm269888847488"></a><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_rationale_null_node_updator.png" align="middle" alt="Useless update path" /></div></div></div><br class="figure-break" /><p>A null policy class, <code class="classname">null_node_update</code>
|
||||
redundant updates all the way.</p></li></ol></div><div class="figure"><a id="id-1.3.5.9.4.4.3.3.2.11.20"></a><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_rationale_null_node_updator.png" align="middle" alt="Useless update path" /></div></div></div><br class="figure-break" /><p>A null policy class, <code class="classname">null_node_update</code>
|
||||
solves both these problems. The tree detects that node
|
||||
invariants are irrelevant, and defines all accordingly.</p></div></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.details.split"></a>Split and Join</h6></div></div></div><p>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 <code class="varname">'a'</code>, and the other to
|
||||
<code class="varname">'s'</code>.</p><div class="figure"><a id="idm269888802800"></a><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_pat_trie.png" align="middle" alt="A PATRICIA trie" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>Trie-based containers support node invariants, as do
|
||||
<code class="varname">'s'</code>.</p><div class="figure"><a id="id-1.3.5.9.4.4.4.3.2.10"></a><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_pat_trie.png" align="middle" alt="A PATRICIA trie" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"></a>Node Invariants</h6></div></div></div><p>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:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>A trie's <code class="classname">Node_Update</code> template-template
|
||||
@ -1080,7 +1080,7 @@
|
||||
parametrized by <code class="classname">Cmp_Fn</code>.</p></li><li class="listitem"><p>Tree-based containers store values in all nodes, while
|
||||
trie-based containers (at least in this implementation) store
|
||||
values in leafs.</p></li></ol></div><p>The graphic below shows the scheme, as well as some predefined
|
||||
policies (which are explained below).</p><div class="figure"><a id="idm269888792304"></a><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_trie_node_updator_policy_cd.png" align="middle" alt="A trie and its update policy" /></div></div></div><br class="figure-break" /><p>This library offers the following pre-defined trie node
|
||||
policies (which are explained below).</p><div class="figure"><a id="id-1.3.5.9.4.4.4.3.3.5"></a><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_trie_node_updator_policy_cd.png" align="middle" alt="A trie and its update policy" /></div></div></div><br class="figure-break" /><p>This library offers the following pre-defined trie node
|
||||
updating policies:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
|
||||
<code class="classname">trie_order_statistics_node_update</code>
|
||||
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.</p><div class="figure"><a id="idm269888761664"></a><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_simple_list.png" align="middle" alt="A simple list" /></div></div></div><br class="figure-break" /><p>List-update algorithms reorder lists as elements are
|
||||
faster.</p><div class="figure"><a id="id-1.3.5.9.4.4.5.3.3.3"></a><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_simple_list.png" align="middle" alt="A simple list" /></div></div></div><br class="figure-break" /><p>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.</p><p>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.
|
||||
</p><div class="figure"><a id="idm269888756080"></a><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_list_update.png" align="middle" alt="The counter algorithm" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"></a>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.4.5.3.3.6"></a><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_list_update.png" align="middle" alt="The counter algorithm" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"></a>Policies</h6></div></div></div><p>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).</p><p>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.</p><div class="figure"><a id="idm269888692256"></a><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" align="middle" alt="Underlying Priority-Queue Data-Structures." /></div></div></div><br class="figure-break" /><p>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.</p><div class="figure"><a id="id-1.3.5.9.4.4.6.3.3.3"></a><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" align="middle" alt="Underlying Priority-Queue Data-Structures." /></div></div></div><br class="figure-break" /><p>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 <code class="classname">Cntnr</code>, the tag of the underlying
|
||||
data structure can be found via <code class="classname">typename
|
||||
Cntnr::container_category</code>; this is one of the possible tags shown in the graphic below.
|
||||
</p><div class="figure"><a id="idm269888657216"></a><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" align="middle" alt="Priority-Queue Data-Structure Tags." /></div></div></div><br class="figure-break" /><p>Additionally, a traits mechanism can be used to query a
|
||||
</p><div class="figure"><a id="id-1.3.5.9.4.4.6.3.4.4"></a><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" align="middle" alt="Priority-Queue Data-Structure Tags." /></div></div></div><br class="figure-break" /><p>Additionally, a traits mechanism can be used to query a
|
||||
container type for its attributes. Given any container
|
||||
<code class="classname">Cntnr</code>, then </p><pre class="programlisting">__gnu_pbds::container_traits<Cntnr></pre><p>
|
||||
is a traits class identifying the properties of the
|
||||
|
@ -61,7 +61,7 @@
|
||||
In addition, there are the following diagnostics classes,
|
||||
used to report errors specific to this library's data
|
||||
structures.
|
||||
</p><div class="figure"><a id="idm269889461728"></a><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_exception_hierarchy.png" align="middle" alt="Exception Hierarchy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"></a>Tutorial</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"></a>Basic Use</h4></div></div></div><p>
|
||||
</p><div class="figure"><a id="id-1.3.5.9.3.3.6"></a><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="../images/pbds_exception_hierarchy.png" align="middle" alt="Exception Hierarchy" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"></a>Tutorial</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"></a>Basic Use</h4></div></div></div><p>
|
||||
For the most part, the policy-based containers containers in
|
||||
namespace <code class="literal">__gnu_pbds</code> have the same interface as
|
||||
the equivalent containers in the standard C++ library, except for
|
||||
|
@ -137,7 +137,7 @@ vector-size: improvement = 3: call stack = 0x804842c ...
|
||||
call context.
|
||||
(Environment variable not supported.)
|
||||
</p></li></ul></div><p>
|
||||
</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="idm269889872512"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</p></div></div><div class="bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id-1.3.5.6.9.2"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Perflint: A Context Sensitive Performance Advisor for C++ Programs
|
||||
</em>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername">
|
||||
Proceedings of the 2009 International Symposium on Code Generation
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><meta name="keywords" content="C++, library, profile" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="next" href="profile_mode_api.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode_api.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p>
|
||||
</p><div class="table"><a id="idm269890286720"></a><p class="title"><strong>Table 19.1. Profile Code Location</strong></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
|
||||
</p><div class="table"><a id="table.profile_code_loc"></a><p class="title"><strong>Table 19.1. Profile Code Location</strong></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are
|
||||
only included from <code class="code">impl/profiler.h</code>, which is the only
|
||||
file included from the public headers.</td></tr></tbody></table></div></div><br class="table-break" /><p>
|
||||
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"></a>Wrapper Model</h3></div></div></div><p>
|
||||
|
@ -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.
|
||||
</p><div class="table"><a id="idm269890179248"></a><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /><col align="left" class="c6" /><col align="left" class="c7" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers" title="Containers">
|
||||
</p><div class="table"><a id="table.profile_diagnostics"></a><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /><col align="left" class="c6" /><col align="left" class="c7" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers" title="Containers">
|
||||
CONTAINERS</a></td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small" title="Hashtable Too Small">
|
||||
HASHTABLE_TOO_SMALL</a></td><td align="left">10</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_large" title="Hashtable Too Large">
|
||||
HASHTABLE_TOO_LARGE</a></td><td align="left">5</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="link" href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash" title="Inefficient Hash">
|
||||
|
@ -8,11 +8,11 @@
|
||||
configuring and building the sources, testing, and installation.
|
||||
</p><p>The general outline of commands is something like:
|
||||
</p><pre class="programlisting">
|
||||
<span class="emphasis"><em>get gcc sources</em></span>
|
||||
<span class="emphasis"><em>extract into gccsrcdir</em></span>
|
||||
mkdir <span class="emphasis"><em>gccbuilddir</em></span>
|
||||
cd <span class="emphasis"><em>gccbuilddir</em></span>
|
||||
<span class="emphasis"><em>gccsrcdir</em></span>/configure --prefix=<span class="emphasis"><em>destdir</em></span> --other-opts...
|
||||
<em class="replaceable"><code>get gcc sources</code></em>
|
||||
<em class="replaceable"><code>extract into gccsrcdir</code></em>
|
||||
mkdir <em class="replaceable"><code>gccbuilddir</code></em>
|
||||
cd <em class="replaceable"><code>gccbuilddir</code></em>
|
||||
<em class="replaceable"><code>gccsrcdir</code></em>/configure --prefix=<em class="replaceable"><code>destdir</code></em> --other-opts...
|
||||
make
|
||||
make check
|
||||
make install
|
||||
|
File diff suppressed because one or more lines are too long
@ -12,13 +12,13 @@
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="section"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="section"><a href="concept_checking.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="utilities.html">6.
|
||||
Utilities
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891950848">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891791712">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891753440">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.interface">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#allocator.default">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#allocator.caching">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.hier">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.thread">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.policy">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.rel">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.examples">Examples</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.issues">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7.
|
||||
Strings
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="localization.html">8.
|
||||
Localization
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#idm269891548288">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locales.locale.req">Requirements</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.design">Design</a></span></dt><dt><span class="section"><a href="localization.html#locales.locale.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#locale.impl.c">Interacting with "C" locales</a></span></dt></dl></dd><dt><span class="section"><a href="localization.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.ctype.impl.spec">Specializations</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.design">Design</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#codecvt.design.wchar_t_size"><span class="type">wchar_t</span> Size</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.unicode">Support for Unicode</a></span></dt><dt><span class="section"><a href="facets.html#codecvt.design.issues">Other Issues</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#std.localization.facet.messages">messages</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#facet.messages.req">Requirements</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.design">Design</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#messages.impl.models">Models</a></span></dt><dt><span class="section"><a href="facets.html#messages.impl.gnu">The GNU Model</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html#facet.messages.use">Use</a></span></dt><dt><span class="section"><a href="facets.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9.
|
||||
Containers
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="section"><a href="containers.html#containers.sequences.vector">vector</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="iterators.html">10.
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings"></a>Chapter 7.
|
||||
Strings
|
||||
<a id="idm269891723120" class="indexterm"></a>
|
||||
<a id="id-1.3.4.5.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="section"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="section"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.strings.string"></a>String Classes</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p>
|
||||
Here are Standard, simple, and portable ways to perform common
|
||||
transformations on a <code class="code">string</code> instance, such as
|
||||
|
@ -6,7 +6,7 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.support"></a>Chapter 4.
|
||||
Support
|
||||
<a id="idm269893583920" class="indexterm"></a>
|
||||
<a id="id-1.3.4.2.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="section"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="section"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="section"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="section"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="section"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="section"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p>
|
||||
This part deals with the functions called and objects created
|
||||
automatically during the course of a program's existence.
|
||||
|
@ -82,7 +82,7 @@ int main(int argc)
|
||||
{
|
||||
std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
|
||||
if (argc > 5)
|
||||
throw argument_error(<span class="quote">“<span class="quote">argc is greater than 5!</span>”</span>);
|
||||
throw argument_error("argc is greater than 5!");
|
||||
else
|
||||
throw argc;
|
||||
}
|
||||
|
@ -492,7 +492,7 @@ only default variables.
|
||||
reporting functions including:
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>time_counter</p></li><li class="listitem"><p>resource_counter</p></li><li class="listitem"><p>report_performance</p></li></ul></div></li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="test.special"></a>Special Topics</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="test.exception.safety"></a>
|
||||
Qualifying Exception Safety Guarantees
|
||||
<a id="idm269884641824" class="indexterm"></a>
|
||||
<a id="id-1.3.6.3.5.7.2.1.1.1" class="indexterm"></a>
|
||||
</h4></div></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.overview"></a>Overview</h5></div></div></div><p>
|
||||
Testing is composed of running a particular test sequence,
|
||||
and looking at what happens to the surrounding code when
|
||||
|
@ -10,5 +10,5 @@
|
||||
enumerated and detailed in the table below.
|
||||
</p><p>
|
||||
By default, <span class="command"><strong>g++</strong></span> is equivalent to <span class="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect.
|
||||
</p><div class="table"><a id="idm269894279056"></a><p class="title"><strong>Table 3.1. C++ Command Options</strong></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++11</code></td><td align="left">Use the 2011 ISO C++ standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++11</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++11 <thread>, <future>,
|
||||
</p><div class="table"><a id="table.cmd_options"></a><p class="title"><strong>Table 3.1. C++ Command Options</strong></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++11</code></td><td align="left">Use the 2011 ISO C++ standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++11</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++11 <thread>, <future>,
|
||||
<mutex>, or <condition_variable>.</td></tr><tr><td align="left"><code class="literal">-fopenmp</code></td><td align="left">For <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel</a> mode.</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html>
|
@ -265,7 +265,7 @@ is called.
|
||||
}
|
||||
catch(...)
|
||||
{ this->_M_setstate(ios_base::badbit); }
|
||||
</pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="idm269893686864"></a><p><span class="title"><em>
|
||||
</pre></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.2"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin/" target="_top">
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</a>
|
||||
@ -274,40 +274,40 @@ is called.
|
||||
. </span><span class="copyright">Copyright © 2008
|
||||
The Open Group/The Institute of Electrical and Electronics
|
||||
Engineers, Inc.
|
||||
. </span></p></div><div class="biblioentry"><a id="idm269893683168"></a><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.3"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.boost.org/community/error_handling.html" target="_top">
|
||||
Error and Exception Handling
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
|
||||
Boost
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269893679472"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.4"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.boost.org/community/exception_safety.html" target="_top">
|
||||
Exception-Safety in Generic Components
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername">
|
||||
Boost
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269893675760"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.5"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" target="_top">
|
||||
Standard Library Exception Policy
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
|
||||
WG21 N1077
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269893672048"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.6"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" target="_top">
|
||||
ia64 c++ abi exception handling
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername">
|
||||
GNU
|
||||
. </span></span></p></div><div class="biblioentry"><a id="idm269893668352"></a><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.7"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://www.research.att.com/~bs/3rd_safe.pdf" target="_top">
|
||||
Appendix E: Standard-Library Exception Safety
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="idm269893665536"></a><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.8"></a><p><span class="citetitle"><em class="citetitle">
|
||||
Exceptional C++
|
||||
</em>. </span><span class="pagenums">
|
||||
Exception-Safety Issues and Techniques
|
||||
. </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="idm269893663152"></a><p><span class="title"><em>
|
||||
. </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.8.9.9"></a><p><span class="title"><em>
|
||||
<a class="link" href="http://gcc.gnu.org/PR25191" target="_top">
|
||||
GCC Bug 25191: exception_defines.h #defines try/catch
|
||||
</a>
|
||||
</em>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
|
||||
</em>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
|
File diff suppressed because one or more lines are too long
@ -6,8 +6,8 @@
|
||||
Standard Contents
|
||||
</th><td width="20%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="std.util"></a>Chapter 6.
|
||||
Utilities
|
||||
<a id="idm269892009344" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891950848">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#idm269891947296">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891934000">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891814224">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891791712">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#idm269891784416">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#idm269891769792">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#idm269891753440">Examples</a></span></dt><dt><span class="section"><a href="memory.html#idm269891749856">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
|
||||
<a id="id-1.3.4.4.1.1.1" class="indexterm"></a>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#allocator.interface">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#allocator.default">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#allocator.caching">Disabling Memory Caching</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="section"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="section"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="section"><a href="memory.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.impl">Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.hier">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.thread">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.policy">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.rel">Related functions and classes</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.using">Use</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#shared_ptr.examples">Examples</a></span></dt><dt><span class="section"><a href="memory.html#shared_ptr.issues">Unresolved Issues</a></span></dt></dl></dd><dt><span class="section"><a href="memory.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.functors"></a>Functors</h2></div></div></div><p>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
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
<copyright>
|
||||
<year>
|
||||
2008, 2010
|
||||
2008-2014
|
||||
</year>
|
||||
<holder>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link>
|
||||
@ -16,12 +16,11 @@
|
||||
</info>
|
||||
|
||||
<!-- FAQ starts here -->
|
||||
<qandaset>
|
||||
<qandaset xml:id="faq.faq">
|
||||
|
||||
<!-- General Information -->
|
||||
<qandadiv xml:id="faq.info" xreflabel="General Information">
|
||||
|
||||
|
||||
<qandaentry xml:id="faq.what">
|
||||
<question xml:id="faq.what.q">
|
||||
<para>
|
||||
@ -32,11 +31,11 @@
|
||||
<para>
|
||||
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 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html">web</link>.
|
||||
anonymous SVN, and can be browsed over
|
||||
the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html">web</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -49,32 +48,31 @@
|
||||
</question>
|
||||
<answer xml:id="a-why">
|
||||
<para>
|
||||
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) <quote>incomplet and
|
||||
incorrekt</quote>, and many suffer from limitations of the compilers
|
||||
that use them.
|
||||
incorrekt</quote>, and many suffered from limitations of the compilers
|
||||
that used them.
|
||||
</para>
|
||||
<para>
|
||||
The GNU compiler collection
|
||||
(<command>gcc</command>, <command>g++</command>, etc) is widely
|
||||
considered to be one of the leading compilers in the world. Its
|
||||
development is overseen by the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/">GCC team</link>. All of
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/">GCC team</link>. All of
|
||||
the rapid development and near-legendary
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/buildstat.html">portability</link>
|
||||
that are the hallmarks of an open-source project are being
|
||||
applied to libstdc++.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/buildstat.html">portability</link>
|
||||
that are the hallmarks of an open-source project are applied to libstdc++.
|
||||
</para>
|
||||
<para>
|
||||
That means that all of the Standard classes and functions will be
|
||||
freely available and fully compliant. (Such as
|
||||
<classname>string</classname>,
|
||||
<classname>vector<></classname>, iostreams, and algorithms.)
|
||||
Programmers will no longer need to <quote>roll their own</quote>
|
||||
nor be worried about platform-specific incompatibilities.
|
||||
</para>
|
||||
All of the standard classes and functions from C++98/C++03
|
||||
(such as <classname>string</classname>,
|
||||
<classname>vector<></classname>, 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.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
@ -88,15 +86,15 @@
|
||||
<para>
|
||||
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
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/viewcvs/gcc/trunk/MAINTAINERS?view=co"><filename>MAINTAINERS</filename></link>
|
||||
file (look for "c++ runtime libs").
|
||||
</para>
|
||||
<para>
|
||||
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 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/libstdc++/">homepage</link>.
|
||||
doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/lists.html">GCC mailing lists</link> page.
|
||||
If you have questions, ideas, code, or are just curious, sign up!
|
||||
</para>
|
||||
</answer>
|
||||
@ -125,8 +123,8 @@
|
||||
</question>
|
||||
<answer xml:id="a-how">
|
||||
<para>
|
||||
Here is <link linkend="appendix.contrib">a page devoted to
|
||||
this topic</link>. Subscribing to the mailing list (see above, or
|
||||
See the <link linkend="appendix.contrib">Contributing</link> 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 @@
|
||||
</question>
|
||||
<answer xml:id="a-whereis_old">
|
||||
<para>
|
||||
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
|
||||
<quote>This package is considered obsolete and is no longer
|
||||
being developed.</quote>
|
||||
It should not be used for new projects, and won't even compile with
|
||||
recent releases of GCC (or most other C++ compilers).
|
||||
</para>
|
||||
<para>
|
||||
More information in the <link linkend="manual.appendix.porting.backwards">backwards compatibility documentation</link>
|
||||
More information can be found in the
|
||||
<link linkend="manual.appendix.porting.backwards">Backwards
|
||||
Compatibility</link> section of the libstdc++ manual.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -163,7 +165,7 @@
|
||||
</question>
|
||||
<answer xml:id="a-more_questions">
|
||||
<para>
|
||||
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 @@
|
||||
<para>
|
||||
Libstdc++ sources for all official releases can be obtained as
|
||||
part of the GCC sources, available from various sites and
|
||||
mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">list of
|
||||
mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/mirrors.html">list of
|
||||
download sites</link> is provided on the main GCC site.
|
||||
</para>
|
||||
<para>
|
||||
@ -308,7 +310,7 @@
|
||||
</para>
|
||||
<para>
|
||||
For more information
|
||||
see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
|
||||
see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/svn.html"><acronym>SVN</acronym>
|
||||
details</link>.
|
||||
</para>
|
||||
</answer>
|
||||
@ -325,7 +327,9 @@
|
||||
conformance testing, regression testing, ABI testing, and
|
||||
performance testing. Please consult the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing
|
||||
documentation</link> for more details.
|
||||
documentation</link> for GCC and
|
||||
<link linkend="manual.intro.setup.test">Test</link> in the libstdc++
|
||||
manual for more details.
|
||||
</para>
|
||||
<para>
|
||||
If you find bugs in the testsuite programs themselves, or if you
|
||||
@ -382,26 +386,26 @@
|
||||
|
||||
<para>
|
||||
The simplest way to fix this is
|
||||
to use the <literal>LD_LIBRARY_PATH</literal> environment variable,
|
||||
to use the <envar>LD_LIBRARY_PATH</envar> environment variable,
|
||||
which is a colon-separated list of directories in which the linker
|
||||
will search for shared libraries:
|
||||
</para>
|
||||
|
||||
<screen>
|
||||
LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH
|
||||
</screen>
|
||||
<screen><command>
|
||||
export LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
|
||||
</command></screen>
|
||||
|
||||
<para>
|
||||
Here the shell variable <command>${prefix}</command> is assumed to contain
|
||||
Here the shell variable <varname>${prefix}</varname> 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
|
||||
<filename>${prefix}/lib64</filename> on some systems.
|
||||
<filename class="directory">${prefix}/lib64</filename> 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. <envar>DYLD_LIBRARY_PATH</envar> for Darwin,
|
||||
<envar>LD_LIBRARY_PATH_32</envar>/<envar>LD_LIBRARY_PATH_64</envar>
|
||||
for Solaris 32-/64-bit,
|
||||
and <envar>SHLIB_PATH</envar> for HP-UX.
|
||||
</para>
|
||||
<para>
|
||||
See the man pages for <command>ld</command>, <command>ldd</command>
|
||||
@ -411,7 +415,8 @@
|
||||
<filename>rtld</filename> or <filename>dld.so</filename>.
|
||||
</para>
|
||||
<para>
|
||||
Using LD_LIBRARY_PATH is not always the best solution, <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
|
||||
Using <envar>LD_LIBRARY_PATH</envar> is not always the best solution,
|
||||
<link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared
|
||||
Libraries</link> in the manual gives some alternatives.
|
||||
</para>
|
||||
</answer>
|
||||
@ -425,20 +430,20 @@
|
||||
</question>
|
||||
<answer xml:id="a-what_is_libsupcxx">
|
||||
<para>
|
||||
If the only functions from <filename>libstdc++.a</filename>
|
||||
If the only functions from <filename class="libraryfile">libstdc++.a</filename>
|
||||
which you need are language support functions (those listed in
|
||||
<link linkend="std.support">clause 18</link> of the
|
||||
standard, e.g., <function>new</function> and
|
||||
<function>delete</function>), then try linking against
|
||||
<filename>libsupc++.a</filename>, which is a subset of
|
||||
<filename>libstdc++.a</filename>. (Using <command>gcc</command>
|
||||
<filename class="libraryfile">libsupc++.a</filename>, which is a subset of
|
||||
<filename class="libraryfile">libstdc++.a</filename>. (Using <command>gcc</command>
|
||||
instead of <command>g++</command> and explicitly linking in
|
||||
<filename>libsupc++.a</filename> via <literal>-lsupc++</literal>
|
||||
<filename class="libraryfile">libsupc++.a</filename> via <option>-lsupc++</option>
|
||||
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
|
||||
<filename>libstdc++.a</filename>.
|
||||
<filename class="libraryfile">libstdc++.a</filename>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -461,14 +466,15 @@
|
||||
for background reasons.)
|
||||
</para>
|
||||
<para>
|
||||
Some of the object files which make up libstdc++.a are rather large.
|
||||
Some of the object files which make up
|
||||
<filename class="libraryfile">libstdc++.a</filename> are rather large.
|
||||
If you create a statically-linked executable with
|
||||
<literal>-static</literal>, those large object files are suddenly part
|
||||
<option>-static</option>, 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 <filename>.o</filename> 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.
|
||||
</para>
|
||||
@ -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 <filename>.o</filename> 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.
|
||||
</para>
|
||||
@ -509,13 +515,14 @@
|
||||
</para>
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
<para>
|
||||
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 @@
|
||||
<qandaentry xml:id="faq.solaris_long_long">
|
||||
<question xml:id="q-solaris_long_long">
|
||||
<para>
|
||||
No 'long long' type on Solaris?
|
||||
No '<type>long long</type>' type on Solaris?
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-solaris_long_long">
|
||||
@ -555,13 +562,14 @@
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-predefined">
|
||||
<para>On Solaris, g++ (but not gcc) always defines the preprocessor
|
||||
macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
|
||||
<para>On Solaris, <command>g++</command> (but not <command>gcc</command>)
|
||||
always defines the preprocessor macro
|
||||
<constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens
|
||||
with <constant>_GNU_SOURCE</constant>. (This is not an exhaustive list;
|
||||
other macros and other platforms are also affected.)
|
||||
</para>
|
||||
<para>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.
|
||||
</para>
|
||||
<para>Note that it's not enough to #define them only when the library is
|
||||
<para>Note that it's not enough to <literal>#define</literal> 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.
|
||||
</para>
|
||||
<para>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
|
||||
<para>To see which symbols are defined, look for
|
||||
<varname>CPLUSPLUS_CPP_SPEC</varname> in
|
||||
the gcc config headers for your target (and try changing them to
|
||||
see what happens when building complicated code). You can also run
|
||||
<command>g++ -E -dM - < /dev/null"</command> to display
|
||||
@ -600,10 +609,13 @@
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-darwin_ctype">
|
||||
<para>This is a long-standing bug in the OS X support. Fortunately,
|
||||
the patch is quite simple, and well-known.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a
|
||||
link to the solution</link>.
|
||||
<note>
|
||||
<para>This answer is old and probably no longer be relevant.</para>
|
||||
</note>
|
||||
<para>
|
||||
This was a long-standing bug in the OS X support. Fortunately, the
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html">patch</link>
|
||||
was quite simple, and well-known.
|
||||
</para>
|
||||
|
||||
</answer>
|
||||
@ -616,9 +628,10 @@
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-threads_i386">
|
||||
<para>
|
||||
</para>
|
||||
<para>Support for atomic integer operations is/was broken on i386
|
||||
<note>
|
||||
<para>This answer is old and probably no longer be relevant.</para>
|
||||
</note>
|
||||
<para>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 @@
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-atomic_mips">
|
||||
<note>
|
||||
<para>This answer is old and probably no longer be relevant.</para>
|
||||
</note>
|
||||
<para>
|
||||
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 @@
|
||||
<para>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.
|
||||
</para>
|
||||
@ -680,10 +696,13 @@
|
||||
</para>
|
||||
</question>
|
||||
<answer xml:id="a-freebsd_wchar">
|
||||
<note>
|
||||
<para>This answer is old and probably no longer be relevant.</para>
|
||||
</note>
|
||||
<para>
|
||||
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 <type>wchar_t</type> support should be
|
||||
disabled. In addition, the libstdc++ platform checks that
|
||||
enabled <type>wchar_t</type> were quite strict, and not granular
|
||||
enough to detect when the minimal support to
|
||||
@ -713,7 +732,7 @@
|
||||
<para>
|
||||
Short answer: Pretty much everything <emphasis>works</emphasis>
|
||||
except for some corner cases. Support for localization
|
||||
in <classname>locale</classname> may be incomplete on non-GNU
|
||||
in <classname>locale</classname> may be incomplete on some non-GNU
|
||||
platforms. Also dependent on the underlying platform is support
|
||||
for <type>wchar_t</type> and <type>long
|
||||
long</type> specializations, and details of thread support.
|
||||
@ -745,12 +764,12 @@
|
||||
published on <link xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">the WG21
|
||||
website</link>.
|
||||
Some of these issues have resulted in code changes in libstdc++.
|
||||
Many of these issues have resulted in code changes in libstdc++.
|
||||
</para>
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -798,7 +817,7 @@
|
||||
One of the most-reported non-bug reports. Executing a sequence like:
|
||||
</para>
|
||||
|
||||
<literallayout class="normal">
|
||||
<programlisting>
|
||||
#include <fstream>
|
||||
...
|
||||
std::fstream fs("a_file");
|
||||
@ -807,7 +826,7 @@
|
||||
// .
|
||||
fs.close();
|
||||
fs.open("a_new_file");
|
||||
</literallayout>
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
All operations on the re-opened <varname>fs</varname> will fail, or at
|
||||
@ -835,15 +854,15 @@
|
||||
</question>
|
||||
<answer xml:id="a-wefcxx_verbose">
|
||||
<para>
|
||||
Many warnings are emitted when <literal>-Weffc++</literal> is used. Making
|
||||
libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project,
|
||||
Many warnings are emitted when <option>-Weffc++</option> is used. Making
|
||||
libstdc++ <option>-Weffc++</option>-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.
|
||||
</para>
|
||||
<para>
|
||||
We do, however, try to have libstdc++ sources as clean as possible. If
|
||||
you see some simple changes that pacify <literal>-Weffc++</literal>
|
||||
you see some simple changes that pacify <option>-Weffc++</option>
|
||||
without other drawbacks, send us a patch.
|
||||
</para>
|
||||
</answer>
|
||||
@ -879,19 +898,20 @@
|
||||
<answer xml:id="a-v2_headers">
|
||||
<para>
|
||||
If you are using headers in
|
||||
<filename>${prefix}/include/g++-3</filename>, or if the installed
|
||||
library's name looks like <filename>libstdc++-2.10.a</filename> or
|
||||
<filename>libstdc++-libc6-2.10.so</filename>, then you are using the
|
||||
old libstdc++-v2 library, which is nonstandard and
|
||||
<filename class="directory">${prefix}/include/g++-3</filename>, or if
|
||||
the installed library's name looks like
|
||||
<filename class="libraryfile">libstdc++-2.10.a</filename> or
|
||||
<filename class="libraryfile">libstdc++-libc6-2.10.so</filename>, 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.
|
||||
</para>
|
||||
<para>
|
||||
For GCC versions 3.0 and 3.1 the libstdc++ header files are
|
||||
installed in <filename>${prefix}/include/g++-v3</filename> (see the
|
||||
'v'?). Starting with version 3.2 the headers are installed in
|
||||
<filename>${prefix}/include/c++/${version}</filename> 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
|
||||
<filename class="directory">${prefix}/include/g++-v3</filename>
|
||||
(see the 'v'?). Starting with version 3.2 the headers are installed in
|
||||
<filename class="directory">${prefix}/include/c++/${version}</filename>
|
||||
as this prevents headers from previous versions being found by mistake.
|
||||
</para>
|
||||
|
||||
</answer>
|
||||
@ -907,7 +927,7 @@
|
||||
<answer xml:id="a-boost_concept_checks">
|
||||
<para>
|
||||
If you see compilation errors containing messages about
|
||||
<errortext>foo Concept </errortext>and something to do with a
|
||||
<errortext>foo Concept</errortext> and something to do with a
|
||||
<errortext>constraints</errortext> 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 @@
|
||||
</para>
|
||||
|
||||
<literallayout class="normal">
|
||||
// compile your library components
|
||||
g++ -fPIC -c a.cc
|
||||
g++ -fPIC -c b.cc
|
||||
Compile your library components:
|
||||
<command>g++ -fPIC -c a.cc</command>
|
||||
<command>g++ -fPIC -c b.cc</command>
|
||||
...
|
||||
g++ -fPIC -c z.cc
|
||||
<command>g++ -fPIC -c z.cc</command>
|
||||
|
||||
// create your library
|
||||
g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o
|
||||
Create your library:
|
||||
<command>g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o</command>
|
||||
|
||||
// link the executable
|
||||
g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
|
||||
Link the executable:
|
||||
<command>g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl</command>
|
||||
</literallayout>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -964,7 +984,7 @@
|
||||
<para>
|
||||
A few people have reported that the standard containers appear
|
||||
to leak memory when tested with memory checkers such as
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/">valgrind</link>.
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>.
|
||||
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</link> documentation.
|
||||
</para>
|
||||
<para>
|
||||
The FAQ for SGI's STL (one jump off of their main page) is
|
||||
still recommended reading.
|
||||
The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/FAQ.html">FAQ</link>
|
||||
for SGI's STL is still recommended reading.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
@ -1189,7 +1209,7 @@
|
||||
<answer xml:id="a-what_is_abi">
|
||||
<para>
|
||||
<acronym>ABI</acronym> stands for <quote>Application Binary
|
||||
Interface</quote>. Conventionally, it refers to a great
|
||||
Interface</quote>. 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 <quote>free-standing implementation</quote> that doesn't include (much
|
||||
of) the standard library. It is a good basis for the work to come.
|
||||
</para>
|
||||
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
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/">C++
|
||||
ABI for Itanium</link>) 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 <quote>free-standing implementation</quote> 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.
|
||||
</para>
|
||||
<para>
|
||||
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 <type>FILE</type>, <type>stat</type>, <type>jmpbuf</type>,
|
||||
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 @@
|
||||
</para>
|
||||
<para>
|
||||
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., <function>getchar</function>) 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.
|
||||
|
@ -1100,8 +1100,8 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||
<biblioentry>
|
||||
<title>
|
||||
<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>
|
||||
</title>
|
||||
</biblioentry>
|
||||
@ -1109,7 +1109,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||
<biblioentry>
|
||||
<title>
|
||||
<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>
|
||||
</title>
|
||||
@ -1143,7 +1143,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||
<biblioentry>
|
||||
<title>
|
||||
<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>
|
||||
</title>
|
||||
@ -1179,7 +1179,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
|
||||
<biblioentry>
|
||||
<title>
|
||||
<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>
|
||||
|
@ -137,7 +137,7 @@
|
||||
<section xml:id="allocator.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<section><info><title>Interface Design</title></info>
|
||||
<section xml:id="allocator.interface"><info><title>Interface Design</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
@ -161,7 +161,7 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section><info><title>Selecting Default Allocation Policy</title></info>
|
||||
<section xml:id="allocator.default"><info><title>Selecting Default Allocation Policy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
@ -227,7 +227,7 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section><info><title>Disabling Memory Caching</title></info>
|
||||
<section xml:id="allocator.caching"><info><title>Disabling Memory Caching</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
|
@ -163,7 +163,7 @@ else return false.</para></listitem>
|
||||
(assume a 32-bit system where, size_t is a 32-bit entity).
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.bitmap_alloc">
|
||||
<title>Bitmap Allocator Memory Map</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
|
@ -76,7 +76,7 @@ in the build directory starts the build process. The <literal>all</literal> targ
|
||||
<section xml:id="build_hacking.overview.map"><info><title>What Comes from Where</title></info>
|
||||
|
||||
|
||||
<figure>
|
||||
<figure xml:id="fig.build_hacking.deps">
|
||||
<title>Configure and Build File Dependencies</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
|
@ -595,7 +595,7 @@ codecvt usage.
|
||||
<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>
|
||||
</title>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<section xml:id="facet.ctype.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<section><info><title>Specializations</title></info>
|
||||
<section xml:id="facet.ctype.impl.spec"><info><title>Specializations</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
|
@ -175,7 +175,7 @@ which always works correctly.
|
||||
containers:
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.debug_mode_containers">
|
||||
<title>Debugging Containers</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
@ -267,7 +267,7 @@ which always works correctly.
|
||||
containers have additional debug capability.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.debug_mode_containers_cxx11">
|
||||
<title>Debugging Containers C++11</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
|
@ -206,7 +206,7 @@
|
||||
|
||||
<section xml:id="doxygen.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.doxygen_prereq">
|
||||
<title>Doxygen Prerequisites</title>
|
||||
|
||||
<tgroup cols="3" align="center" colsep="1" rowsep="1">
|
||||
@ -582,7 +582,7 @@
|
||||
doubt, consult the following table.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.doxygen_cmp">
|
||||
<title>HTML to Doxygen Markup Comparison</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
@ -652,7 +652,7 @@
|
||||
<section xml:id="docbook.prereq"><info><title>Prerequisites</title></info>
|
||||
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.docbook_prereq">
|
||||
<title>Docbook Prerequisites</title>
|
||||
|
||||
<tgroup cols="3" align="center" colsep="1" rowsep="1">
|
||||
@ -1029,7 +1029,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal>
|
||||
detailed in the table below.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.docbook_cmp">
|
||||
<title>HTML to Docbook XML Markup Comparison</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
@ -1107,7 +1107,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal>
|
||||
equivalents are listed in the table below.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.docbook_elem">
|
||||
<title>Docbook XML Element Use</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
|
@ -165,7 +165,7 @@ _Alloc_traits</code> have been removed.
|
||||
underlying allocator was not user-configurable.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.extension_allocators">
|
||||
<title>Extension Allocators</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
@ -230,7 +230,7 @@ _Alloc_traits</code> have been removed.
|
||||
the first released version of GCC that included the extension allocator.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.extension_allocators2">
|
||||
<title>Extension Allocators Continued</title>
|
||||
|
||||
<tgroup cols="3" align="left" colsep="1" rowsep="1">
|
||||
|
@ -13,7 +13,7 @@
|
||||
</info>
|
||||
|
||||
|
||||
<preface><info><title/></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
|
||||
|
@ -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>
|
||||
</title>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="manual.localization.facet.messages" xreflabel="Messages">
|
||||
xml:id="std.localization.facet.messages" xreflabel="Messages">
|
||||
<?dbhtml filename="messages.html"?>
|
||||
|
||||
<info><title>messages</title>
|
||||
@ -12,8 +12,8 @@
|
||||
|
||||
|
||||
<para>
|
||||
The std::messages facet implements message retrieval functionality
|
||||
equivalent to Java's java.text.MessageFormat .using either GNU gettext
|
||||
The <classname>std::messages</classname> facet implements message retrieval functionality
|
||||
equivalent to Java's <classname>java.text.MessageFormat</classname> using either GNU <function>gettext</function>
|
||||
or IEEE 1003.1-200 functions.
|
||||
</para>
|
||||
|
||||
@ -21,7 +21,7 @@ or IEEE 1003.1-200 functions.
|
||||
|
||||
|
||||
<para>
|
||||
The std::messages facet is probably the most vaguely defined facet in
|
||||
The <classname>std::messages</classname> 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:
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<code>catalog do_open(const string&, const locale&) const</code>
|
||||
<code>catalog do_open(const string& name, const locale& loc) const</code>
|
||||
</para>
|
||||
<blockquote>
|
||||
<para>
|
||||
<emphasis>
|
||||
-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 <code>get()</code> to retrieve a
|
||||
message, from the message catalog identified by the string <code>name</code>
|
||||
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 <code>close()</code>. Returns a value less than 0 if no such
|
||||
catalog can be opened.
|
||||
</emphasis>
|
||||
</para>
|
||||
</blockquote>
|
||||
|
||||
<para>
|
||||
<code>string_type do_get(catalog, int, int, const string_type&) const</code>
|
||||
<code>string_type do_get(catalog cat, int set , int msgid, const string_type& dfault) const</code>
|
||||
</para>
|
||||
<blockquote>
|
||||
<para>
|
||||
<emphasis>
|
||||
-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 <code>cat</code> obtained from <code>open()</code> and not yet closed.
|
||||
-4- Returns: A message identified by arguments <code>set</code>, <code>msgid</code>, and <code>dfault</code>,
|
||||
according to an implementation-defined mapping. If no such message can
|
||||
be found, returns dfault.
|
||||
be found, returns <code>dfault</code>.
|
||||
</emphasis>
|
||||
</para>
|
||||
</blockquote>
|
||||
|
||||
<para>
|
||||
<code>void do_close(catalog) const</code>
|
||||
<code>void do_close(catalog cat) const</code>
|
||||
</para>
|
||||
<blockquote>
|
||||
<para>
|
||||
<emphasis>
|
||||
-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 <code>open()</code> and not yet closed.
|
||||
-6- Effects: Releases unspecified resources associated with <code>cat</code>.
|
||||
-7- Notes: The limit on such resources, if any, is implementation-defined.
|
||||
</emphasis>
|
||||
</para>
|
||||
@ -488,7 +488,7 @@ void test01()
|
||||
<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>
|
||||
</title>
|
||||
|
@ -191,7 +191,7 @@ flags for atomic operations.)
|
||||
parallel algorithms that can be used in a similar manner:
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.parallel_algos">
|
||||
<title>Parallel Algorithms</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
|
@ -215,7 +215,7 @@ vector-size: improvement = 3: call stack = 0x804842c ...
|
||||
|
||||
<para>
|
||||
</para>
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.profile_code_loc">
|
||||
<title>Profile Code Location</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
@ -690,7 +690,7 @@ it helps the user focus on the key problems and ignore the uninteresting ones.
|
||||
specific needs or time budgets.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.profile_diagnostics">
|
||||
<title>Profile Diagnostics</title>
|
||||
|
||||
<tgroup cols="7" align="left" colsep="1" rowsep="1">
|
||||
|
@ -59,7 +59,7 @@ technique known as type erasure.
|
||||
<section xml:id="shared_ptr.impl"><info><title>Implementation</title></info>
|
||||
|
||||
|
||||
<section><info><title>Class Hierarchy</title></info>
|
||||
<section xml:id="shared_ptr.hier"><info><title>Class Hierarchy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
@ -155,7 +155,7 @@ deprecated in C++11 mode.
|
||||
|
||||
</section>
|
||||
|
||||
<section><info><title>Thread Safety</title></info>
|
||||
<section xml:id="shared_ptr.thread"><info><title>Thread Safety</title></info>
|
||||
|
||||
<para>
|
||||
The
|
||||
@ -213,7 +213,7 @@ Policy below for details.
|
||||
|
||||
</section>
|
||||
|
||||
<section><info><title>Selecting Lock Policy</title></info>
|
||||
<section xml:id="shared_ptr.policy"><info><title>Selecting Lock Policy</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
@ -282,7 +282,7 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
|
||||
</section>
|
||||
|
||||
|
||||
<section><info><title>Related functions and classes</title></info>
|
||||
<section xml:id="shared_ptr.rel"><info><title>Related functions and classes</title></info>
|
||||
|
||||
|
||||
<variablelist>
|
||||
@ -350,7 +350,7 @@ be private.
|
||||
<section xml:id="shared_ptr.using"><info><title>Use</title></info>
|
||||
|
||||
|
||||
<section><info><title>Examples</title></info>
|
||||
<section xml:id="shared_ptr.examples"><info><title>Examples</title></info>
|
||||
|
||||
<para>
|
||||
Examples of use can be found in the testsuite, under
|
||||
@ -361,21 +361,13 @@ be private.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section><info><title>Unresolved Issues</title></info>
|
||||
<section xml:id="shared_ptr.issues"><info><title>Unresolved Issues</title></info>
|
||||
|
||||
<para>
|
||||
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
|
||||
clause in the C++11 standard is not implemented in GCC.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <type>_S_single</type> policy uses atomics when used in MT
|
||||
code, because it uses the same dispatcher functions that check
|
||||
<function>__gthread_active_p()</function>. This could be
|
||||
addressed by providing template specialisations for some members
|
||||
of <classname>_Sp_counted_base<_S_single></classname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Unlike Boost, this implementation does not use separate classes
|
||||
for the pointer+deleter and pointer+deleter+allocator cases in
|
||||
|
@ -31,7 +31,7 @@ particular release.
|
||||
Broken/Partial
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx98_status">
|
||||
<title>C++ 1998/2003 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
|
@ -40,7 +40,7 @@ particular release.
|
||||
Broken/Partial
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx11_status">
|
||||
<title>C++ 2011 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
|
@ -24,7 +24,7 @@ This page describes the C++14 and library TS support in mainline GCC SVN,
|
||||
not in any particular release.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx14_status">
|
||||
<title>C++ 2014 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
@ -251,7 +251,7 @@ not in any particular release.
|
||||
</table>
|
||||
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.ts_status">
|
||||
<title>C++ Technical Specifications Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
|
@ -35,7 +35,7 @@ release.
|
||||
Broken/Partial
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.tr1_status">
|
||||
<title>C++ TR1 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
|
@ -29,7 +29,7 @@ particular release.
|
||||
Broken/Partial
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.decfp_status">
|
||||
<title>C++ TR 24733 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
|
@ -17,7 +17,7 @@
|
||||
By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cmd_options">
|
||||
<title>C++ Command Options</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
@ -115,7 +115,7 @@
|
||||
C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx98_headers">
|
||||
<title>C++ 1998 Library Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -176,7 +176,7 @@
|
||||
</table>
|
||||
|
||||
<para/>
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx98_cheaders">
|
||||
<title>C++ 1998 Library Headers for C Library Facilities</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -222,7 +222,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
|
||||
</para>
|
||||
|
||||
<para/>
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx11_headers">
|
||||
<title>C++ 2011 Library Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -308,7 +308,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
|
||||
|
||||
<para/>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.cxx11_cheaders">
|
||||
<title>C++ 2011 Library Headers for C Library Facilities</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -362,7 +362,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
|
||||
In addition, TR1 includes as:
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.tr1_headers">
|
||||
<title>C++ TR 1 Library Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -398,7 +398,7 @@ mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
|
||||
<para/>
|
||||
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.tr1_cheaders">
|
||||
<title>C++ TR 1 Library Headers for C Library Facilities</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -441,7 +441,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
<code>__attribute__((mode(SD|DD|LD)))</code>.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.decfp_headers">
|
||||
<title>C++ TR 24733 Decimal Floating-Point Header</title>
|
||||
|
||||
<tgroup cols="1" align="left" colsep="1" rowsep="1">
|
||||
@ -458,7 +458,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
Also included are files for the C++ ABI interface:
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.abi_headers">
|
||||
<title>C++ ABI Headers</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
@ -474,7 +474,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
And a large variety of extensions.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.ext_headers">
|
||||
<title>Extension Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -537,7 +537,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
|
||||
<para/>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.debug_headers">
|
||||
<title>Extension Debug Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
@ -569,7 +569,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
|
||||
<para/>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.profile_headers">
|
||||
<title>Extension Profile Headers</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
@ -599,7 +599,7 @@ compiler supports scalar decimal floating-point types defined via
|
||||
|
||||
<para/>
|
||||
|
||||
<table frame="all">
|
||||
<table frame="all" xml:id="table.parallel_headers">
|
||||
<title>Extension Parallel Headers</title>
|
||||
|
||||
<tgroup cols="2" align="left" colsep="1" rowsep="1">
|
||||
|
Loading…
x
Reference in New Issue
Block a user