faq.xml: Replace references to C++0x with C++11.
* doc/xml/faq.xml: Replace references to C++0x with C++11. * doc/xml/manual/intro.xml: Likewise. * doc/xml/manual/backwards_compatibility.xml: Likewise. * doc/xml/manual/shared_ptr.xml: Likewise. * doc/xml/manual/configure.xml: Likewise. * doc/xml/manual/evolution.xml: Likewise. * doc/xml/manual/using.xml: Likewise. * doc/xml/manual/strings.xml: Likewise. * doc/xml/manual/debug_mode.xml: Likewise. * doc/xml/manual/policy_data_structures.xml: Likewise. * doc/xml/manual/extensions.xml: Likewise. * doc/xml/manual/diagnostics.xml: Likewise. * doc/xml/manual/test.xml: Likewise. * doc/xml/manual/status_cxx200x.xml: Likewise, and rename to... * doc/xml/manual/status_cxx2011.xml: Here. * doc/Makefile.am: Rename status_cxx200x.xml. * doc/Makefile.in: Regenerate. * doc/html/*: Regenerate. From-SVN: r181041
This commit is contained in:
parent
4a7ab00c25
commit
f25481f470
|
@ -1,3 +1,24 @@
|
|||
2011-11-06 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* doc/xml/faq.xml: Replace references to C++0x with C++11.
|
||||
* doc/xml/manual/intro.xml: Likewise.
|
||||
* doc/xml/manual/backwards_compatibility.xml: Likewise.
|
||||
* doc/xml/manual/shared_ptr.xml: Likewise.
|
||||
* doc/xml/manual/configure.xml: Likewise.
|
||||
* doc/xml/manual/evolution.xml: Likewise.
|
||||
* doc/xml/manual/using.xml: Likewise.
|
||||
* doc/xml/manual/strings.xml: Likewise.
|
||||
* doc/xml/manual/debug_mode.xml: Likewise.
|
||||
* doc/xml/manual/policy_data_structures.xml: Likewise.
|
||||
* doc/xml/manual/extensions.xml: Likewise.
|
||||
* doc/xml/manual/diagnostics.xml: Likewise.
|
||||
* doc/xml/manual/test.xml: Likewise.
|
||||
* doc/xml/manual/status_cxx200x.xml: Likewise, and rename to...
|
||||
* doc/xml/manual/status_cxx2011.xml: Here.
|
||||
* doc/Makefile.am: Rename status_cxx200x.xml.
|
||||
* doc/Makefile.in: Regenerate.
|
||||
* doc/html/*: Regenerate.
|
||||
|
||||
2011-11-06 François Dumont <fdumont@gcc.gnu.org>
|
||||
|
||||
* testsuite/performance/23_containers/insert_erase/41975.cc: Add
|
||||
|
|
|
@ -337,7 +337,7 @@ xml_sources_manual = \
|
|||
${xml_dir}/manual/shared_ptr.xml \
|
||||
${xml_dir}/manual/spine.xml \
|
||||
${xml_dir}/manual/status_cxx1998.xml \
|
||||
${xml_dir}/manual/status_cxx200x.xml \
|
||||
${xml_dir}/manual/status_cxx2011.xml \
|
||||
${xml_dir}/manual/status_cxxtr1.xml \
|
||||
${xml_dir}/manual/status_cxxtr24733.xml \
|
||||
${xml_dir}/manual/strings.xml \
|
||||
|
|
|
@ -390,7 +390,7 @@ xml_sources_manual = \
|
|||
${xml_dir}/manual/shared_ptr.xml \
|
||||
${xml_dir}/manual/spine.xml \
|
||||
${xml_dir}/manual/status_cxx1998.xml \
|
||||
${xml_dir}/manual/status_cxx200x.xml \
|
||||
${xml_dir}/manual/status_cxx2011.xml \
|
||||
${xml_dir}/manual/status_cxxtr1.xml \
|
||||
${xml_dir}/manual/status_cxxtr24733.xml \
|
||||
${xml_dir}/manual/strings.xml \
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
<a class="link" href="http://www.fsf.org/">FSF
|
||||
</a>
|
||||
</p></div><div><div class="legalnotice" title="Legal Notice"><a id="id404125"/><p>
|
||||
</p></div><div><div class="legalnotice" title="Legal Notice"><a id="id385263"/><p>
|
||||
<a class="link" href="manual/license.html" title="License">License
|
||||
</a>
|
||||
</p></div></div></div><hr/></div><p>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
2008, 2010
|
||||
|
||||
<a class="link" href="http://www.fsf.org">FSF</a>
|
||||
</p></div></div><hr/></div><div class="qandaset" title="Frequently Asked Questions"><a id="id409549"/><dl><dt/><dd><dl><dt>1.1. <a href="faq.html#faq.what">
|
||||
</p></div></div><hr/></div><div class="qandaset" title="Frequently Asked Questions"><a id="id388426"/><dl><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++?
|
||||
|
@ -512,7 +512,7 @@
|
|||
Long answer: See the implementation status pages for
|
||||
<a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>,
|
||||
<a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>, and
|
||||
<a class="link" href="manual/status.html#status.iso.200x" title="C++ 200x">C++0x</a>.
|
||||
<a class="link" href="manual/status.html#status.iso.2011" title="C++ 2011">C++11</a>.
|
||||
</p></td></tr><tr class="question" title="5.2."><td align="left" valign="top"><a id="faq.standard_bugs"/><a id="q-standard_bugs"/><p><strong>5.2.</strong></p></td><td align="left" valign="top"><p>
|
||||
Bugs in the ISO C++ language or library specification
|
||||
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"/></td><td align="left" valign="top"><p>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -490,39 +490,39 @@ 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/public/cxx-abi">
|
||||
C++ ABI Summary
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Intel Compilers for Linux Compatibility with the GNU Compilers"><a id="id538227"/><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Intel Compilers for Linux Compatibility with the GNU Compilers"><a id="id518473"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm">
|
||||
Intel Compilers for Linux Compatibility with the GNU Compilers
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Linker and Libraries Guide (document 819-0690)"><a id="id538242"/><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Linker and Libraries Guide (document 819-0690)"><a id="id518488"/><p><span class="title"><em>
|
||||
<a class="link" href="http://download.oracle.com/docs/cd/E19963-01/html/819-0690/index.html">
|
||||
Linker and Libraries Guide (document 819-0690)
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Sun Studio 11: C++ Migration Guide (document 819-3689)"><a id="id538257"/><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Sun Studio 11: C++ Migration Guide (document 819-3689)"><a id="id518504"/><p><span class="title"><em>
|
||||
<a class="link" href="http://download.oracle.com/docs/cd/E19422-01/819-3689/index.html">
|
||||
Sun Studio 11: C++ Migration Guide (document 819-3689)
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry" title="How to Write Shared Libraries"><a id="id538273"/><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry" title="How to Write Shared Libraries"><a id="id518519"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.akkadia.org/drepper/dsohowto.pdf">
|
||||
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" title="C++ ABI for the ARM Architecture"><a id="id538302"/><p><span class="title"><em>
|
||||
</em>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry" title="C++ ABI for the ARM Architecture"><a id="id518548"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.arm.com/miscPDFs/8033.pdf">
|
||||
C++ ABI for the ARM Architecture
|
||||
</a>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Dynamic Shared Objects: Survey and Issues"><a id="id538317"/><p><span class="title"><em>
|
||||
</em>. </span></p></div><div class="biblioentry" title="Dynamic Shared Objects: Survey and Issues"><a id="id518563"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html">
|
||||
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" title="Versioning With Namespaces"><a id="id538344"/><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" title="Versioning With Namespaces"><a id="id518590"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html">
|
||||
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" title="Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems"><a id="id538371"/><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" title="Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems"><a id="id518618"/><p><span class="title"><em>
|
||||
<a class="link" href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf">
|
||||
Binary Compatibility of Shared Libraries Implemented in C++
|
||||
on GNU/Linux Systems
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 11. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="std.algorithms"/>Chapter 11.
|
||||
Algorithms
|
||||
<a id="id482474" class="indexterm"/>
|
||||
<a id="id462720" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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 sect1 is that all the
|
||||
work is done via iterators, not containers directly. This means two
|
||||
|
|
|
@ -75,11 +75,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="id538931"/><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Allocator (3.4)</th><th style="text-align: left">Header (3.4)</th><th style="text-align: left">Allocator (3.[0-3])</th><th style="text-align: left">Header (3.[0-3])</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__new_alloc</code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__malloc_alloc_template<int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="classname">std::debug_alloc<T></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"> </td><td style="text-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="id519177"/><p class="title"><strong>Table B.6. Extension Allocators</strong></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Allocator (3.4)</th><th style="text-align: left">Header (3.4)</th><th style="text-align: left">Allocator (3.[0-3])</th><th style="text-align: left">Header (3.[0-3])</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/new_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__new_alloc</code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/malloc_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__malloc_alloc_template<int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/debug_allocator.h</code></td><td style="text-align: left"><code class="classname">std::debug_alloc<T></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/pool_allocator.h</code></td><td style="text-align: left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td style="text-align: left"><code class="filename">memory</code></td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td style="text-align: left"><code class="filename">ext/mt_allocator.h</code></td><td style="text-align: left"> </td><td style="text-align: left"> </td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/bitmap_allocator.h</code></td><td style="text-align: left"> </td><td style="text-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="id539161"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/></colgroup><thead><tr><th style="text-align: left">Allocator</th><th style="text-align: left">Include</th><th style="text-align: left">Version</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left">4.0.0</td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-align: left">4.2.0</td></tr></tbody></table></div></div><br class="table-break"/><p>
|
||||
</p><div class="table"><a id="id519407"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/></colgroup><thead><tr><th style="text-align: left">Allocator</th><th style="text-align: left">Include</th><th style="text-align: left">Version</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/array_allocator.h</code></td><td style="text-align: left">4.0.0</td></tr><tr><td style="text-align: left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td style="text-align: left"><code class="filename">ext/throw_allocator.h</code></td><td style="text-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.
|
||||
|
@ -134,7 +134,7 @@ Backward include edit.
|
|||
<code class="filename">tree.h</code> <code class="filename">vector.h</code>
|
||||
</p></li><li class="listitem"><p>Added</p><p>
|
||||
<code class="filename">hash_map</code> and <code class="filename">hash_set</code>
|
||||
</p></li><li class="listitem"><p>Added in C++0x</p><p>
|
||||
</p></li><li class="listitem"><p>Added in C++11</p><p>
|
||||
<code class="filename">auto_ptr.h</code> and <code class="filename">binders.h</code>
|
||||
</p></li></ul></div><p>
|
||||
Header dependency streamlining.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Appendices
|
||||
</th><td align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix A. Contributing"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.contrib"/>
|
||||
Contributing
|
||||
<a id="id529730" class="indexterm"/>
|
||||
<a id="id509976" class="indexterm"/>
|
||||
</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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 follows an open development model. Active
|
||||
contributors are assigned maintainer-ship responsibility, and given
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Appendices
|
||||
</th><td align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix C. Free Software Needs Free Documentation"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.free"/>
|
||||
Free Software Needs Free Documentation
|
||||
<a id="id542094" class="indexterm"/>
|
||||
<a id="id522386" class="indexterm"/>
|
||||
</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
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
</p><p>
|
||||
The precise terms and conditions for copying, distribution and modification
|
||||
follow.
|
||||
</p><h2><a id="id542433"/>
|
||||
</p><h2><a id="id522725"/>
|
||||
TERMS AND CONDITIONS
|
||||
</h2><h2><a id="gpl-3-definitions"/>
|
||||
0. Definitions.
|
||||
|
@ -619,7 +619,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="id543257"/>
|
||||
</p><h2><a id="id523549"/>
|
||||
END OF TERMS AND CONDITIONS
|
||||
</h2><h2><a id="HowToApply"/>
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
|
|
@ -7,28 +7,28 @@
|
|||
Appendices
|
||||
</th><td align="right"> <a accesskey="n" href="documentation_hacking.html">Next</a></td></tr></table><hr/></div><div class="appendix" title="Appendix B. Porting and Maintenance"><div class="titlepage"><div><div><h1 class="title"><a id="appendix.porting"/>
|
||||
Porting and Maintenance
|
||||
<a id="id530849" class="indexterm"/>
|
||||
<a id="id511095" class="indexterm"/>
|
||||
</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="section"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="section"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html">Writing and Generating Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doc.intro">Introduction</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.generation">Generating Documentation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doc.doxygen">Doxygen</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#doxygen.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.rules">Generating the Doxygen Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#doxygen.markup">Markup</a></span></dt></dl></dd><dt><span class="section"><a href="documentation_hacking.html#doc.docbook">Docbook</a></span></dt><dd><dl><dt><span class="section"><a href="documentation_hacking.html#docbook.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.rules">Generating the DocBook Files</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.validation">Editing and Validation</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.examples">File Organization and Basics</a></span></dt><dt><span class="section"><a href="documentation_hacking.html#docbook.markup">Markup By Example</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="section"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="section"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="section"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="section"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="section"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="section"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.organization.layout">Directory Layout</a></span></dt><dt><span class="section"><a href="test.html#test.organization.naming">Naming Conventions</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.run.basic">Basic</a></span></dt><dt><span class="section"><a href="test.html#test.run.variations">Variations</a></span></dt><dt><span class="section"><a href="test.html#test.run.permutations">Permutations</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="section"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.harness.dejagnu">Dejagnu Harness Details</a></span></dt><dt><span class="section"><a href="test.html#test.harness.utils">Utilities</a></span></dt></dl></dd><dt><span class="section"><a href="test.html#test.special">Special Topics</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety">
|
||||
Qualifying Exception Safety Guarantees
|
||||
|
||||
</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety.overview">Overview</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.status">
|
||||
Existing tests
|
||||
</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
|
||||
C++0x Requirements Test Sequence Descriptions
|
||||
</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540654">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id540687">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540790">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id540916">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id540977"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541073">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541112">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541130">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541176">
|
||||
C++11 Requirements Test Sequence Descriptions
|
||||
</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id520901">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id520933">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521036">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id521162">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id521224"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id521319">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521358">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521376">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521422">
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541195">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541351">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id541369">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id541388">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id541513">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id541598">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id541701">No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541749">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id521441">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521597">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id521616">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id521634">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521759">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id521844">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id521961">No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id522009">
|
||||
No <code class="code">stream::attach(int fd)</code>
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541817">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx98">
|
||||
Support for C++98 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541844">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_tr1">
|
||||
Support for C++TR1 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541888">
|
||||
Support for C++0x dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541966">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx11">
|
||||
Support for C++11 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id522258">
|
||||
Container::iterator_type is not necessarily Container::value_type*
|
||||
</a></span></dt></dl></dd></dl></dd></dl></div><div class="section" title="Configure and Build Hacking"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting.build_hacking"/>Configure and Build Hacking</h2></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"/>Prerequisites</h3></div></div></div><p>
|
||||
As noted <a class="link" href="http://gcc.gnu.org/install/prerequisites.html">previously</a>,
|
||||
|
@ -41,7 +41,7 @@ Support for C++0x dialect.
|
|||
in GCC try to stay in sync with each other in terms of versions of
|
||||
the auto-tools used, so please try to play nicely with the
|
||||
neighbors.
|
||||
</p></div><div class="section" title="Overview: What Comes from Where"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.map"/>Overview: What Comes from Where</h3></div></div></div><div class="figure"><a id="id530981"/><p class="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/confdeps.png" style="text-align: middle" alt="Dependency Graph for Configure and Build Files"/></div></div></div><br class="figure-break"/><p>
|
||||
</p></div><div class="section" title="Overview: What Comes from Where"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.map"/>Overview: What Comes from Where</h3></div></div></div><div class="figure"><a id="id511227"/><p class="title"><strong>Figure B.1. Configure and Build File Dependencies</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/confdeps.png" style="text-align: middle" alt="Dependency Graph for Configure and Build Files"/></div></div></div><br class="figure-break"/><p>
|
||||
Regenerate all generated files by using the command sequence
|
||||
<code class="code">"autoreconf"</code> at the top level of the libstdc++ source
|
||||
directory. The following will also work, but is much more complex:
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 14. Atomics"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics"/>Chapter 14.
|
||||
Atomics
|
||||
<a id="id484125" class="indexterm"/>
|
||||
<a id="id464372" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics.api"/>API Reference</h2></div></div></div><p>
|
||||
|
|
|
@ -17,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of
|
|||
really useful things that are used by a lot of people, the Standards
|
||||
Committee couldn't include everything, and so a lot of those
|
||||
<span class="quote">“<span class="quote">obvious</span>”</span> classes didn't get included.
|
||||
</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="section" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id540654"/>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
|
||||
</p></div><div class="section" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id540687"/>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
|
||||
</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="section" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id520901"/>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>.
|
||||
</p></div><div class="section" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id520933"/>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p>
|
||||
In earlier versions of the standard,
|
||||
<code class="filename">fstream.h</code>,
|
||||
<code class="filename">ostream.h</code>
|
||||
|
@ -44,7 +44,7 @@ considered replaced and rewritten.
|
|||
archived. The code is considered replaced and rewritten.
|
||||
</p><p>
|
||||
Portability notes and known implementation limitations are as follows.
|
||||
</p><div class="section" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id540790"/>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
|
||||
</p><div class="section" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id521036"/>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p>
|
||||
Some care is required to support C++ compiler and or library
|
||||
implementation that do not have the standard library in
|
||||
<code class="code">namespace std</code>.
|
||||
|
@ -108,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
|||
AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ])
|
||||
fi
|
||||
])
|
||||
</pre></div><div class="section" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id540916"/>Illegal iterator usage</h4></div></div></div><p>
|
||||
</pre></div><div class="section" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id521162"/>Illegal iterator usage</h4></div></div></div><p>
|
||||
The following illustrate implementation-allowed illegal iterator
|
||||
use, and then correct use.
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
|
||||
|
@ -121,7 +121,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [
|
|||
</p></li><li class="listitem"><p>
|
||||
<code class="code">if (iterator)</code> won't work any more => use
|
||||
<code class="code">if (iterator != iterator_type())</code>
|
||||
</p></li></ul></div></div><div class="section" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id540977"/><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</p></li></ul></div></div><div class="section" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id521224"/><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</h4></div></div></div><p>
|
||||
Glibc 2.0.x and 2.1.x define <code class="filename">ctype.h</code> functionality as macros
|
||||
(isspace, isalpha etc.).
|
||||
|
@ -154,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ;
|
|||
(<code class="filename">ctype.h</code>) and the
|
||||
definitions in namespace <code class="code">std::</code>
|
||||
(<code class="code"><cctype></code>).
|
||||
</p></div><div class="section" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id541073"/>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
|
||||
</p></div><div class="section" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id521319"/>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p>
|
||||
One solution is to add an autoconf-test for this:
|
||||
</p><pre class="programlisting">
|
||||
AC_MSG_CHECKING(for container::at)
|
||||
|
@ -180,7 +180,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
|
|||
</pre><p>
|
||||
If you are using other (non-GNU) compilers it might be a good idea
|
||||
to check for <code class="code">string::at</code> separately.
|
||||
</p></div><div class="section" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id541112"/>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p>
|
||||
</p></div><div class="section" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id521358"/>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p>
|
||||
Use some kind of autoconf test, plus this:
|
||||
</p><pre class="programlisting">
|
||||
#ifdef HAVE_CHAR_TRAITS
|
||||
|
@ -188,7 +188,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)],
|
|||
#else
|
||||
#define CPP_EOF EOF
|
||||
#endif
|
||||
</pre></div><div class="section" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id541130"/>No <code class="code">string::clear</code></h4></div></div></div><p>
|
||||
</pre></div><div class="section" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id521376"/>No <code class="code">string::clear</code></h4></div></div></div><p>
|
||||
There are two functions for deleting the contents of a string:
|
||||
<code class="code">clear</code> and <code class="code">erase</code> (the latter returns the
|
||||
string).
|
||||
|
@ -206,12 +206,12 @@ erase(size_type __pos = 0, size_type __n = npos)
|
|||
Unfortunately, <code class="code">clear</code> is not implemented in this
|
||||
version, so you should use <code class="code">erase</code> (which is probably
|
||||
faster than <code class="code">operator=(charT*)</code>).
|
||||
</p></div><div class="section" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id541176"/>
|
||||
</p></div><div class="section" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id521422"/>
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
</h4></div></div></div><p>
|
||||
These are no longer supported. Please use stringstreams instead.
|
||||
</p></div><div class="section" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id541195"/>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
|
||||
</p></div><div class="section" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id521441"/>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p>
|
||||
Although the ISO standard <code class="code">i/ostringstream</code>-classes are
|
||||
provided, (<code class="filename">sstream</code>), for
|
||||
compatibility with older implementations the pre-ISO
|
||||
|
@ -299,14 +299,14 @@ any = temp;
|
|||
Another example of using stringstreams is in <a class="link" href="strings.html#strings.string.shrink" title="Shrink to Fit">this howto</a>.
|
||||
</p><p> There is additional information in the libstdc++-v2 info files, in
|
||||
particular <span class="quote">“<span class="quote">info iostream</span>”</span>.
|
||||
</p></div><div class="section" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id541351"/>Little or no wide character support</h4></div></div></div><p>
|
||||
</p></div><div class="section" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id521597"/>Little or no wide character support</h4></div></div></div><p>
|
||||
Classes <code class="classname">wstring</code> and
|
||||
<code class="classname">char_traits<wchar_t></code> are
|
||||
not supported.
|
||||
</p></div><div class="section" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id541369"/>No templatized iostreams</h4></div></div></div><p>
|
||||
</p></div><div class="section" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id521616"/>No templatized iostreams</h4></div></div></div><p>
|
||||
Classes <code class="classname">wfilebuf</code> and
|
||||
<code class="classname">wstringstream</code> are not supported.
|
||||
</p></div><div class="section" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id541388"/>Thread safety issues</h4></div></div></div><p>
|
||||
</p></div><div class="section" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id521634"/>Thread safety issues</h4></div></div></div><p>
|
||||
Earlier GCC releases had a somewhat different approach to
|
||||
threading configuration and proper compilation. Before GCC 3.0,
|
||||
configuration of the threading model was dictated by compiler
|
||||
|
@ -364,7 +364,7 @@ libstdc++-v3.
|
|||
of the SGI STL (version 3.3), with extensive changes.
|
||||
</p><p>A more formal description of the V3 goals can be found in the
|
||||
official <a class="link" href="source_design_notes.html" title="Design Notes">design document</a>.
|
||||
</p><p>Portability notes and known implementation limitations are as follows.</p><div class="section" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id541513"/>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
|
||||
</p><p>Portability notes and known implementation limitations are as follows.</p><div class="section" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id521759"/>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers
|
||||
(<code class="code">iostream.h</code>, <code class="code">defalloc.h</code> etc.) are
|
||||
available, unlike previous libstdc++ versions, but inclusion
|
||||
generates a warning that you are using deprecated headers.
|
||||
|
@ -436,15 +436,17 @@ like <code class="filename">vector.h</code> can be replaced with <code class="fi
|
|||
directive <code class="code">using namespace std;</code> can be put at the global
|
||||
scope. This should be enough to get this code compiling, assuming the
|
||||
other usage is correct.
|
||||
</p></div><div class="section" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id541598"/>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
|
||||
</p></div><div class="section" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id521844"/>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been
|
||||
replaced by standardized libraries.
|
||||
In particular, the unordered_map and unordered_set containers of TR1
|
||||
are suitable replacement for the non-standard hash_map and hash_set
|
||||
In particular, the <code class="classname">unordered_map</code> and
|
||||
<code class="classname">unordered_set</code> containers of TR1 and C++ 2011
|
||||
are suitable replacements for the non-standard
|
||||
<code class="classname">hash_map</code> and <code class="classname">hash_set</code>
|
||||
containers in the SGI STL.
|
||||
</p><p> Header files <code class="filename">hash_map</code> and <code class="filename">hash_set</code> moved
|
||||
to <code class="filename">ext/hash_map</code> and <code class="filename">ext/hash_set</code>,
|
||||
respectively. At the same time, all types in these files are enclosed
|
||||
in <code class="code">namespace __gnu_cxx</code>. Later versions move deprecate
|
||||
in <code class="code">namespace __gnu_cxx</code>. Later versions deprecate
|
||||
these files, and suggest using TR1's <code class="filename">unordered_map</code>
|
||||
and <code class="filename">unordered_set</code> instead.
|
||||
</p><p>The extensions are no longer in the global or <code class="code">std</code>
|
||||
|
@ -508,7 +510,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [
|
|||
AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ])
|
||||
fi
|
||||
])
|
||||
</pre></div><div class="section" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id541701"/>No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</pre></div><div class="section" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id521961"/>No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</h4></div></div></div><p> The existence of <code class="code">ios::nocreate</code> being used for
|
||||
input-streams has been confirmed, most probably because the author
|
||||
thought it would be more correct to specify nocreate explicitly. So
|
||||
|
@ -519,7 +521,7 @@ open the file for reading, check if it has been opened, and then
|
|||
decide whether you want to create/replace or not. To my knowledge,
|
||||
even older implementations support <code class="code">app</code>, <code class="code">ate</code>
|
||||
and <code class="code">trunc</code> (except for <code class="code">app</code> ?).
|
||||
</p></div><div class="section" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id541749"/>
|
||||
</p></div><div class="section" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id522009"/>
|
||||
No <code class="code">stream::attach(int fd)</code>
|
||||
</h4></div></div></div><p>
|
||||
Phil Edwards writes: It was considered and rejected for the ISO
|
||||
|
@ -542,7 +544,7 @@ No <code class="code">stream::attach(int fd)</code>
|
|||
For another example of this, refer to
|
||||
<a class="link" href="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</a>
|
||||
by Nicolai Josuttis.
|
||||
</p></div><div class="section" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id541817"/>
|
||||
</p></div><div class="section" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="backwards.support_cxx98"/>
|
||||
Support for C++98 dialect.
|
||||
</h4></div></div></div><p>Check for complete library coverage of the C++1998/2003 standard.
|
||||
</p><pre class="programlisting">
|
||||
|
@ -610,7 +612,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
|
|||
AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
|
||||
fi
|
||||
])
|
||||
</pre></div><div class="section" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id541844"/>
|
||||
</pre></div><div class="section" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="backwards.support_tr1"/>
|
||||
Support for C++TR1 dialect.
|
||||
</h4></div></div></div><p>Check for library coverage of the TR1 standard.
|
||||
</p><pre class="programlisting">
|
||||
|
@ -687,14 +689,14 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
|
|||
AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
|
||||
fi
|
||||
])
|
||||
</pre></div><div class="section" title="Support for C++0x dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id541888"/>
|
||||
Support for C++0x dialect.
|
||||
</h4></div></div></div><p>Check for baseline language coverage in the compiler for the C++0xstandard.
|
||||
</pre></div><div class="section" title="Support for C++11 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="backwards.support_cxx11"/>
|
||||
Support for C++11 dialect.
|
||||
</h4></div></div></div><p>Check for baseline language coverage in the compiler for the C++11 standard.
|
||||
</p><pre class="programlisting">
|
||||
# AC_COMPILE_STDCXX_OX
|
||||
AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
|
||||
ac_cv_cxx_compile_cxx0x_native,
|
||||
# AC_COMPILE_STDCXX_11
|
||||
AC_DEFUN([AC_COMPILE_STDCXX_11], [
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features without additional flags,
|
||||
ac_cv_cxx_compile_cxx11_native,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
AC_TRY_COMPILE([
|
||||
|
@ -712,16 +714,16 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no)
|
||||
ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no)
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
|
||||
ac_cv_cxx_compile_cxx0x_cxx,
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features with -std=c++11,
|
||||
ac_cv_cxx_compile_cxx11_cxx,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=c++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=c++11"
|
||||
AC_TRY_COMPILE([
|
||||
template <typename T>
|
||||
struct check
|
||||
|
@ -737,17 +739,17 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no)
|
||||
ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
|
||||
ac_cv_cxx_compile_cxx0x_gxx,
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features with -std=gnu++11,
|
||||
ac_cv_cxx_compile_cxx11_gxx,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([
|
||||
template <typename T>
|
||||
struct check
|
||||
|
@ -763,28 +765,28 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no)
|
||||
ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
|
||||
AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
|
||||
if test "$ac_cv_cxx_compile_cxx11_native" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx11_cxx" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx11_gxx" = yes; then
|
||||
AC_DEFINE(HAVE_STDCXX_11,,[Define if g++ supports C++11 features. ])
|
||||
fi
|
||||
])
|
||||
</pre><p>Check for library coverage of the C++0xstandard.
|
||||
</pre><p>Check for library coverage of the C++2011 standard.
|
||||
</p><pre class="programlisting">
|
||||
# AC_HEADER_STDCXX_0X
|
||||
AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
||||
AC_CACHE_CHECK(for ISO C++ 0x include files,
|
||||
ac_cv_cxx_stdcxx_0x,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
# AC_HEADER_STDCXX_11
|
||||
AC_DEFUN([AC_HEADER_STDCXX_11], [
|
||||
AC_CACHE_CHECK(for ISO C++11 include files,
|
||||
ac_cv_cxx_stdcxx_11,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
|
||||
AC_TRY_COMPILE([
|
||||
#include <cassert>
|
||||
|
@ -852,12 +854,12 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
|||
#include <valarray>
|
||||
#include <vector>
|
||||
],,
|
||||
ac_cv_cxx_stdcxx_0x=yes, ac_cv_cxx_stdcxx_0x=no)
|
||||
ac_cv_cxx_stdcxx_11=yes, ac_cv_cxx_stdcxx_11=no)
|
||||
AC_LANG_RESTORE
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
])
|
||||
if test "$ac_cv_cxx_stdcxx_0x" = yes; then
|
||||
AC_DEFINE(STDCXX_0X_HEADERS,,[Define if ISO C++ 0x header files are present. ])
|
||||
if test "$ac_cv_cxx_stdcxx_11" = yes; then
|
||||
AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ])
|
||||
fi
|
||||
])
|
||||
</pre><p>As is the case for TR1 support, these autoconf macros can be made for a finer-grained, per-header-file check. For <unordered_map>
|
||||
|
@ -866,11 +868,11 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
|||
AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
|
||||
AC_CACHE_CHECK(for unordered_map,
|
||||
ac_cv_cxx_unordered_map,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;],
|
||||
ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
@ -885,11 +887,11 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
|
|||
AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
||||
AC_CACHE_CHECK(for unordered_set,
|
||||
ac_cv_cxx_unordered_set,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;],
|
||||
ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
@ -899,21 +901,29 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
|||
AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ])
|
||||
fi
|
||||
])
|
||||
</pre></div><div class="section" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id541966"/>
|
||||
</pre><p>
|
||||
Some C++11 features first appeared in GCC 4.3 and could be enabled by
|
||||
<code class="option">-std=c++0x</code> and <code class="option">-std=gnu++0x</code> for GCC
|
||||
releases which pre-date the 2011 standard. Those C++11 features and GCC's
|
||||
support for them were still changing until the 2011 standard was finished,
|
||||
but the autoconf checks above could be extended to test for incomplete
|
||||
C++11 support with <code class="option">-std=c++0x</code> and
|
||||
<code class="option">-std=gnu++0x</code>.
|
||||
</p></div><div class="section" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id522258"/>
|
||||
Container::iterator_type is not necessarily Container::value_type*
|
||||
</h4></div></div></div><p>
|
||||
This is a change in behavior from the previous version. Now, most
|
||||
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" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry" title="Migrating to GCC 4.1"><a id="id541997"/><p><span class="title"><em>
|
||||
</p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry" title="Migrating to GCC 4.1"><a id="id522289"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.kegel.com/gcc/gcc4.html">
|
||||
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" title="Building the Whole Debian Archive with GCC 4.1: A Summary"><a id="id542020"/><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" title="Building the Whole Debian Archive with GCC 4.1: A Summary"><a id="id522312"/><p><span class="title"><em>
|
||||
<a class="link" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html">
|
||||
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" title="Migration guide for GCC-3.2"><a id="id542044"/><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" title="Migration guide for GCC-3.2"><a id="id522336"/><p><span class="title"><em>
|
||||
<a class="link" href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html">
|
||||
Migration guide for GCC-3.2
|
||||
</a>
|
||||
|
|
|
@ -13,13 +13,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="bk01pt02ch05s02.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#id463447">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#id463477">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#id463588">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#id464596">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#id464775">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#id464844">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#id464966">Dual C++0x and TR1 Implementation</a></span></dt><dt><span class="section"><a href="memory.html#id465022">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#id465171">Examples</a></span></dt><dt><span class="section"><a href="memory.html#id465201">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#id443701">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#id443731">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#id443842">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#id444841">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#id445019">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#id445089">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#id445211">Dual C++11 and TR1 Implementation</a></span></dt><dt><span class="section"><a href="memory.html#id445267">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#id445416">Examples</a></span></dt><dt><span class="section"><a href="memory.html#id445446">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#id479120">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#id459366">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.
|
||||
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="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.
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<code class="literal">-D_GLIBCXX_CONCEPT_CHECKS</code>.
|
||||
</p><p>
|
||||
Please note that the checks are based on the requirements in the original
|
||||
C++ standard, some of which have changed in the upcoming C++0x revision.
|
||||
C++ standard, some of which have changed in the new C++11 revision.
|
||||
Additionally, some correct code might be rejected by the concept checks,
|
||||
for example template argument types may need to be complete when used in
|
||||
a template definition, rather than at the point of instantiation.
|
||||
|
|
|
@ -19,6 +19,6 @@
|
|||
mode or with debug mode. The
|
||||
following table provides the names and headers of the debugging
|
||||
containers:
|
||||
</p><div class="table"><a id="id484961"/><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::bitset</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="classname">__gnu_debug::bitset</code></td><td style="text-align: left"><code class="filename"><debug/bitset></code></td></tr><tr><td style="text-align: left"><code class="classname">std::deque</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="classname">__gnu_debug::deque</code></td><td style="text-align: left"><code class="filename"><debug/deque></code></td></tr><tr><td style="text-align: left"><code class="classname">std::list</code></td><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="classname">__gnu_debug::list</code></td><td style="text-align: left"><code class="filename"><debug/list></code></td></tr><tr><td style="text-align: left"><code class="classname">std::map</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::map</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multimap</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multimap</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multiset</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multiset</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::set</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::set</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::wstring</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::wstring</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::basic_string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::basic_string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::vector</code></td><td style="text-align: left"><code class="filename">vector</code></td><td style="text-align: left"><code class="classname">__gnu_debug::vector</code></td><td style="text-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++0x mode, these additional
|
||||
</p><div class="table"><a id="id465208"/><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::bitset</code></td><td style="text-align: left"><code class="filename">bitset</code></td><td style="text-align: left"><code class="classname">__gnu_debug::bitset</code></td><td style="text-align: left"><code class="filename"><debug/bitset></code></td></tr><tr><td style="text-align: left"><code class="classname">std::deque</code></td><td style="text-align: left"><code class="filename">deque</code></td><td style="text-align: left"><code class="classname">__gnu_debug::deque</code></td><td style="text-align: left"><code class="filename"><debug/deque></code></td></tr><tr><td style="text-align: left"><code class="classname">std::list</code></td><td style="text-align: left"><code class="filename">list</code></td><td style="text-align: left"><code class="classname">__gnu_debug::list</code></td><td style="text-align: left"><code class="filename"><debug/list></code></td></tr><tr><td style="text-align: left"><code class="classname">std::map</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::map</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multimap</code></td><td style="text-align: left"><code class="filename">map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multimap</code></td><td style="text-align: left"><code class="filename"><debug/map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::multiset</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::multiset</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::set</code></td><td style="text-align: left"><code class="filename">set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::set</code></td><td style="text-align: left"><code class="filename"><debug/set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::wstring</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::wstring</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::basic_string</code></td><td style="text-align: left"><code class="filename">string</code></td><td style="text-align: left"><code class="classname">__gnu_debug::basic_string</code></td><td style="text-align: left"><code class="filename"><debug/string></code></td></tr><tr><td style="text-align: left"><code class="classname">std::vector</code></td><td style="text-align: left"><code class="filename">vector</code></td><td style="text-align: left"><code class="classname">__gnu_debug::vector</code></td><td style="text-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="id485336"/><p class="title"><strong>Table 17.2. Debugging Containers C++0x</strong></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_map</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multimap</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_set</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_set</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multiset</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td style="text-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 align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../index.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html>
|
||||
</p><div class="table"><a id="id465582"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/></colgroup><thead><tr><th style="text-align: left">Container</th><th style="text-align: left">Header</th><th style="text-align: left">Debug container</th><th style="text-align: left">Debug header</th></tr></thead><tbody><tr><td style="text-align: left"><code class="classname">std::unordered_map</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_map</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multimap</code></td><td style="text-align: left"><code class="filename">unordered_map</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td style="text-align: left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_set</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_set</code></td><td style="text-align: left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td style="text-align: left"><code class="classname">std::unordered_multiset</code></td><td style="text-align: left"><code class="filename">unordered_set</code></td><td style="text-align: left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td style="text-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 align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><td align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr><tr><td align="left" valign="top">Semantics </td><td align="center"><a accesskey="h" href="../index.html">Home</a></td><td align="right" valign="top"> Design</td></tr></table></div></body></html>
|
||||
|
|
|
@ -193,7 +193,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp>
|
|||
and making the debug mode easier to incorporate into development
|
||||
environments by minimizing dependencies.</p><p>Achieving link- and run-time coexistence is not a trivial
|
||||
implementation task. To achieve this goal we required a small
|
||||
extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as
|
||||
extension to the GNU C++ compiler (since incorporated into the C++11 language specification, described in the GCC Manual for the C++ language as
|
||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace
|
||||
association</a>), and a complex organization of debug- and
|
||||
release-modes. The end result is that we have achieved per-use
|
||||
|
@ -224,7 +224,7 @@ namespace std
|
|||
defined in the namespace <code class="code">__cxx1998</code>) and also the
|
||||
debug-mode container. The debug-mode container is defined within the
|
||||
namespace <code class="code">__debug</code>, which is associated with namespace
|
||||
<code class="code">std</code> via the C++0x namespace association language feature. This
|
||||
<code class="code">std</code> via the C++11 namespace association language feature. This
|
||||
method allows the debug and release versions of the same component to
|
||||
coexist at compile-time and link-time without causing an unreasonable
|
||||
maintenance burden, while minimizing confusion. Again, this boils down
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Design</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.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="bk01pt03ch19s03.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 align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td align="right"> <a accesskey="n" href="bk01pt03ch19s03.html">Next</a></td></tr></table><hr/></div><div class="section" title="Design"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode.design"/>Design</h2></div></div></div><p>
|
||||
</p><div class="table"><a id="id489046"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Code Location</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/std/*</code></td><td style="text-align: left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/*</code></td><td style="text-align: left">Profile extension public headers (map, vector, ...).</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td style="text-align: left">Profile extension internals. Implementation files are
|
||||
</p><div class="table"><a id="id469292"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Code Location</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/std/*</code></td><td style="text-align: left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/*</code></td><td style="text-align: left">Profile extension public headers (map, vector, ...).</td></tr><tr><td style="text-align: left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td style="text-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" title="Wrapper Model"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"/>Wrapper Model</h3></div></div></div><p>
|
||||
|
|
|
@ -18,7 +18,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="id489928"/><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/><col style="text-align: left" class="c6"/><col style="text-align: left" class="c7"/></colgroup><thead><tr><th style="text-align: left">Group</th><th style="text-align: left">Flag</th><th style="text-align: left">Benefit</th><th style="text-align: left">Cost</th><th style="text-align: left">Freq.</th><th style="text-align: left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers" title="Containers">
|
||||
</p><div class="table"><a id="id470174"/><p class="title"><strong>Table 19.2. Profile Diagnostics</strong></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/><col style="text-align: left" class="c6"/><col style="text-align: left" class="c7"/></colgroup><thead><tr><th style="text-align: left">Group</th><th style="text-align: left">Flag</th><th style="text-align: left">Benefit</th><th style="text-align: left">Cost</th><th style="text-align: left">Freq.</th><th style="text-align: left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers" title="Containers">
|
||||
CONTAINERS</a></td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_small" title="Hashtable Too Small">
|
||||
HASHTABLE_TOO_SMALL</a></td><td style="text-align: left">10</td><td style="text-align: left">1</td><td style="text-align: left"> </td><td style="text-align: left">10</td><td style="text-align: left">yes</td></tr><tr><td style="text-align: left"> </td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.hashtable_too_large" title="Hashtable Too Large">
|
||||
HASHTABLE_TOO_LARGE</a></td><td style="text-align: left">5</td><td style="text-align: left">1</td><td style="text-align: left"> </td><td style="text-align: left">10</td><td style="text-align: left">yes</td></tr><tr><td style="text-align: left"> </td><td style="text-align: left"><a class="link" href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.inefficient_hash" title="Inefficient Hash">
|
||||
|
|
|
@ -76,7 +76,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="id493358"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left">268</td><td style="text-align: left">0</td><td style="text-align: left">4294967295</td><td style="text-align: left">4294967295</td><td style="text-align: left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break"/><p>
|
||||
</p><div class="table"><a id="id473604"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/><col style="text-align: left" class="c3"/><col style="text-align: left" class="c4"/><col style="text-align: left" class="c5"/></colgroup><tbody><tr><td style="text-align: left">268</td><td style="text-align: left">0</td><td style="text-align: left">4294967295</td><td style="text-align: left">4294967295</td><td style="text-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
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
The SGI hashing classes <code class="classname">hash_set</code> and
|
||||
<code class="classname">hash_set</code> have been deprecated by the
|
||||
unordered_set, unordered_multiset, unordered_map,
|
||||
unordered_multimap containers in TR1 and the upcoming C++0x, and
|
||||
unordered_multimap containers in TR1 and C++11, and
|
||||
may be removed in future releases.
|
||||
</p><p>The SGI headers</p><pre class="programlisting">
|
||||
<hash_map>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title/><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.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"/></tr><tr><td align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III.
|
||||
Extensions
|
||||
|
||||
</th><td 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="id484429"/></h1></div></div></div><p>
|
||||
</th><td 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="id464675"/></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
|
||||
|
|
|
@ -16,21 +16,21 @@
|
|||
</a></span></dt><dd><dl><dt><span class="section"><a href="test.html#test.exception.safety.overview">Overview</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.status">
|
||||
Existing tests
|
||||
</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
|
||||
C++0x Requirements Test Sequence Descriptions
|
||||
</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540654">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id540687">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id540790">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id540916">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id540977"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541073">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541112">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541130">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541176">
|
||||
C++11 Requirements Test Sequence Descriptions
|
||||
</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="section"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.versioning.goals">Goals</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.history">History</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.config">Configuring</a></span></dt><dt><span class="section"><a href="abi.html#abi.versioning.active">Checking Active</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="section"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing">Testing</a></span></dt><dd><dl><dt><span class="section"><a href="abi.html#abi.testing.single">Single ABI Testing</a></span></dt><dt><span class="section"><a href="abi.html#abi.testing.multi">Multiple ABI Testing</a></span></dt></dl></dd><dt><span class="section"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="section"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#backwards.first">First</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id520901">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#id520933">No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.second">Second</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521036">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#id521162">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#id521224"><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id521319">No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521358">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521376">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521422">
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541195">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id541351">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id541369">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id541388">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id541513">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id541598">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id541701">No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541749">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id521441">No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></a></span></dt><dt><span class="section"><a href="backwards.html#id521597">Little or no wide character support</a></span></dt><dt><span class="section"><a href="backwards.html#id521616">No templatized iostreams</a></span></dt><dt><span class="section"><a href="backwards.html#id521634">Thread safety issues</a></span></dt></dl></dd><dt><span class="section"><a href="backwards.html#backwards.third">Third</a></span></dt><dd><dl><dt><span class="section"><a href="backwards.html#id521759">Pre-ISO headers moved to backwards or removed</a></span></dt><dt><span class="section"><a href="backwards.html#id521844">Extension headers hash_map, hash_set moved to ext or backwards</a></span></dt><dt><span class="section"><a href="backwards.html#id521961">No <code class="code">ios::nocreate/ios::noreplace</code>.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id522009">
|
||||
No <code class="code">stream::attach(int fd)</code>
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541817">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx98">
|
||||
Support for C++98 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541844">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_tr1">
|
||||
Support for C++TR1 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541888">
|
||||
Support for C++0x dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id541966">
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.support_cxx11">
|
||||
Support for C++11 dialect.
|
||||
</a></span></dt><dt><span class="section"><a href="backwards.html#id522258">
|
||||
Container::iterator_type is not necessarily Container::value_type*
|
||||
</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C.
|
||||
Free Software Needs Free Documentation
|
||||
|
|
|
@ -226,7 +226,7 @@
|
|||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#387">387</a>:
|
||||
<span class="emphasis"><em>std::complex over-encapsulated</em></span>
|
||||
</span></dt><dd><p>Add the <code class="code">real(T)</code> and <code class="code">imag(T)</code>
|
||||
members; in C++0x mode, also adjust the existing
|
||||
members; in C++11 mode, also adjust the existing
|
||||
<code class="code">real()</code> and <code class="code">imag()</code> members and
|
||||
free functions.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#389">389</a>:
|
||||
|
@ -298,7 +298,7 @@
|
|||
</span></dt><dd><p>Follow the straightforward proposed resolution.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#550">550</a>:
|
||||
<span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span>
|
||||
</span></dt><dd><p>In C++0x mode, remove the pow(float,int), etc., signatures.
|
||||
</span></dt><dd><p>In C++11 mode, remove the pow(float,int), etc., signatures.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#586">586</a>:
|
||||
<span class="emphasis"><em>string inserter not a formatted function</em></span>
|
||||
</span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions).
|
||||
|
@ -313,7 +313,7 @@
|
|||
</span></dt><dd><p>Add the missing operations.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#691">691</a>:
|
||||
<span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span>
|
||||
</span></dt><dd><p>In C++0x mode add cbegin(size_type) and cend(size_type)
|
||||
</span></dt><dd><p>In C++11 mode add cbegin(size_type) and cend(size_type)
|
||||
to the unordered containers.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#693">693</a>:
|
||||
<span class="emphasis"><em>std::bitset::all() missing</em></span>
|
||||
|
@ -326,22 +326,22 @@
|
|||
</span></dt><dd><p>Implement the straightforward resolution.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#761">761</a>:
|
||||
<span class="emphasis"><em>unordered_map needs an at() member function</em></span>
|
||||
</span></dt><dd><p>In C++0x mode, add at() and at() const.
|
||||
</span></dt><dd><p>In C++11 mode, add at() and at() const.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#775">775</a>:
|
||||
<span class="emphasis"><em>Tuple indexing should be unsigned?</em></span>
|
||||
</span></dt><dd><p>Implement the int -> size_t replacements.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#776">776</a>:
|
||||
<span class="emphasis"><em>Undescribed assign function of std::array</em></span>
|
||||
</span></dt><dd><p>In C++0x mode, remove assign, add fill.
|
||||
</span></dt><dd><p>In C++11 mode, remove assign, add fill.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#781">781</a>:
|
||||
<span class="emphasis"><em>std::complex should add missing C99 functions</em></span>
|
||||
</span></dt><dd><p>In C++0x mode, add std::proj.
|
||||
</span></dt><dd><p>In C++11 mode, add std::proj.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#809">809</a>:
|
||||
<span class="emphasis"><em>std::swap should be overloaded for array types</em></span>
|
||||
</span></dt><dd><p>Add the overload.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#844">844</a>:
|
||||
<span class="emphasis"><em>complex pow return type is ambiguous</em></span>
|
||||
</span></dt><dd><p>In C++0x mode, remove the pow(complex<T>, int) signature.
|
||||
</span></dt><dd><p>In C++11 mode, remove the pow(complex<T>, int) signature.
|
||||
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#853">853</a>:
|
||||
<span class="emphasis"><em>to_string needs updating with zero and one</em></span>
|
||||
</span></dt><dd><p>Update / add the signatures.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 15. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"/>Chapter 15.
|
||||
Concurrency
|
||||
<a id="id484245" class="indexterm"/>
|
||||
<a id="id464491" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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" title="API Reference"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency.api"/>API Reference</h2></div></div></div><p>
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
</p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the
|
||||
clock_gettime clocks, used in the implementation of [time.clock],
|
||||
and of the nanosleep and sched_yield functions, used in the
|
||||
implementation of [thread.thread.this] of the current C++0x draft.
|
||||
implementation of [thread.thread.this] of the 2011 ISO C++ standard.
|
||||
The choice OPTION=yes checks for the availability of the facilities
|
||||
in libc and libposix4. In case of need the latter is also linked
|
||||
to libstdc++ as part of the build process. OPTION=rt also searches
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 9. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"/>Chapter 9.
|
||||
Containers
|
||||
<a id="id481292" class="indexterm"/>
|
||||
<a id="id461537" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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="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" title="Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers.sequences"/>Sequences</h2></div></div></div><div class="section" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"/>list</h3></div></div></div><div class="section" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"/>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
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 5. Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"/>Chapter 5.
|
||||
Diagnostics
|
||||
<a id="id462728" class="indexterm"/>
|
||||
<a id="id442982" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="section" title="Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics.exceptions"/>Exceptions</h2></div></div></div><div class="section" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"/>API Reference</h3></div></div></div><p>
|
||||
All exception objects are defined in one of the standard header
|
||||
files: <code class="filename">exception</code>,
|
||||
|
|
|
@ -117,7 +117,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" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id531887"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr></tbody></table></div></div><br class="table-break"/><p>
|
||||
</p></div><div class="section" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc.doxygen"/>Doxygen</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512133"/><p class="title"><strong>Table B.1. Doxygen Prerequisites</strong></p><div class="table-contents"><table summary="Doxygen Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">coreutils</td><td style="text-align: center">8.5</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">bash</td><td style="text-align: center">4.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">doxygen</td><td style="text-align: center">1.7.0</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">graphviz</td><td style="text-align: center">2.26</td><td style="text-align: center">graphical hierarchies</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-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/">Doxygen</a>, and
|
||||
the <a class="link" href="http://www.gnu.org/software/coreutils/">GNU
|
||||
|
@ -263,7 +263,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="id532390"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id532552"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info output</td></tr></tbody></table></div></div><br class="table-break"/><p>
|
||||
</p><div class="table"><a id="id512636"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Doxygen</th></tr></thead><tbody><tr><td style="text-align: left">\</td><td style="text-align: left">\\</td></tr><tr><td style="text-align: left">"</td><td style="text-align: left">\"</td></tr><tr><td style="text-align: left">'</td><td style="text-align: left">\'</td></tr><tr><td style="text-align: left"><i></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><b></td><td style="text-align: left">@b word</td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left">@c word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left">@a word</td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break"/></div></div><div class="section" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc.docbook"/>Docbook</h3></div></div></div><div class="section" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"/>Prerequisites</h4></div></div></div><div class="table"><a id="id512798"/><p class="title"><strong>Table B.3. Docbook Prerequisites</strong></p><div class="table-contents"><table summary="Docbook Prerequisites" border="1"><colgroup><col style="text-align: center" class="c1"/><col style="text-align: center" class="c2"/><col style="text-align: center" class="c3"/></colgroup><thead><tr><th style="text-align: center">Tool</th><th style="text-align: center">Version</th><th style="text-align: center">Required By</th></tr></thead><tbody><tr><td style="text-align: center">docbook5-style-xsl</td><td style="text-align: center">1.76.1</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xsltproc</td><td style="text-align: center">1.1.26</td><td style="text-align: center">all</td></tr><tr><td style="text-align: center">xmllint</td><td style="text-align: center">2.7.7</td><td style="text-align: center">validation</td></tr><tr><td style="text-align: center">dblatex</td><td style="text-align: center">0.3</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">pdflatex</td><td style="text-align: center">2007-59</td><td style="text-align: center">pdf output</td></tr><tr><td style="text-align: center">docbook2X</td><td style="text-align: center">0.8.8</td><td style="text-align: center">info 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>,
|
||||
|
@ -419,11 +419,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">online</a>.
|
||||
An incomplete reference for HTML to Docbook conversion is
|
||||
detailed in the table below.
|
||||
</p><div class="table"><a id="id533030"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>,
|
||||
</p><div class="table"><a id="id513276"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">HTML</th><th style="text-align: left">Docbook</th></tr></thead><tbody><tr><td style="text-align: left"><p></td><td style="text-align: left"><para></td></tr><tr><td style="text-align: left"><pre></td><td style="text-align: left"><computeroutput>, <programlisting>,
|
||||
<literallayout></td></tr><tr><td style="text-align: left"><ul></td><td style="text-align: left"><itemizedlist></td></tr><tr><td style="text-align: left"><ol></td><td style="text-align: left"><orderedlist></td></tr><tr><td style="text-align: left"><il></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><dl></td><td style="text-align: left"><variablelist></td></tr><tr><td style="text-align: left"><dt></td><td style="text-align: left"><term></td></tr><tr><td style="text-align: left"><dd></td><td style="text-align: left"><listitem></td></tr><tr><td style="text-align: left"><a href=""></td><td style="text-align: left"><ulink url=""></td></tr><tr><td style="text-align: left"><code></td><td style="text-align: left"><literal>, <programlisting></td></tr><tr><td style="text-align: left"><strong></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left"><em></td><td style="text-align: left"><emphasis></td></tr><tr><td style="text-align: left">"</td><td style="text-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="id533231"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left">
|
||||
</p><div class="table"><a id="id513477"/><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 style="text-align: left" class="c1"/><col style="text-align: left" class="c2"/></colgroup><thead><tr><th style="text-align: left">Element</th><th style="text-align: left">Use</th></tr></thead><tbody><tr><td style="text-align: left"><structname></td><td style="text-align: left"><structname>char_traits</structname></td></tr><tr><td style="text-align: left"><classname></td><td style="text-align: left"><classname>string</classname></td></tr><tr><td style="text-align: left"><function></td><td style="text-align: left">
|
||||
<p><function>clear()</function></p>
|
||||
<p><function>fs.clear()</function></p>
|
||||
</td></tr><tr><td style="text-align: left"><type></td><td style="text-align: left"><type>long long</type></td></tr><tr><td style="text-align: left"><varname></td><td style="text-align: left"><varname>fs</varname></td></tr><tr><td style="text-align: left"><literal></td><td style="text-align: left">
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Facets</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.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 align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8.
|
||||
Localization
|
||||
|
||||
</th><td align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="Facets"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.facet"/>Facets</h2></div></div></div><div class="section" title="ctype"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"/>ctype</h3></div></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"/>Implementation</h4></div></div></div><div class="section" title="Specializations"><div class="titlepage"><div><div><h5 class="title"><a id="id479120"/>Specializations</h5></div></div></div><p>
|
||||
</th><td align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr/></div><div class="section" title="Facets"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.facet"/>Facets</h2></div></div></div><div class="section" title="ctype"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"/>ctype</h3></div></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"/>Implementation</h4></div></div></div><div class="section" title="Specializations"><div class="titlepage"><div><div><h5 class="title"><a id="id459366"/>Specializations</h5></div></div></div><p>
|
||||
For the required specialization codecvt<wchar_t, char, mbstate_t> ,
|
||||
conversions are made between the internal character set (always UCS4
|
||||
on GNU/Linux) and whatever the currently selected locale for the
|
||||
|
@ -50,24 +50,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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id479245"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id459491"/><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="id479285"/><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="id459531"/><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="id479310"/><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="id459557"/><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="id479330"/><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id459576"/><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" title="The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)"><a id="id479348"/><p><span class="title"><em>
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)"><a id="id459595"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.unix.org/version3/ieee_std.html">
|
||||
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="id479376"/><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="id459622"/><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="id479414"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id459660"/><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
|
@ -410,42 +410,42 @@ 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id480064"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id460310"/><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="id480104"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id460350"/><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="id480130"/><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="id460376"/><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="id480149"/><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id460395"/><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" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id480168"/><p><span class="title"><em>
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id460414"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin">
|
||||
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="id480194"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id460441"/><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="id480233"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id460479"/><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" title="A brief description of Normative Addendum 1"><a id="id480280"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="A brief description of Normative Addendum 1"><a id="id460526"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.lysator.liu.se/c/na1.html">
|
||||
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" title="The Unicode HOWTO"><a id="id480307"/><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" title="The Unicode HOWTO"><a id="id460554"/><p><span class="title"><em>
|
||||
<a class="link" href="http://tldp.org/HOWTO/Unicode-HOWTO.html">
|
||||
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" title="UTF-8 and Unicode FAQ for Unix/Linux"><a id="id480330"/><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" title="UTF-8 and Unicode FAQ for Unix/Linux"><a id="id460577"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html">
|
||||
UTF-8 and Unicode FAQ for Unix/Linux
|
||||
</a>
|
||||
|
@ -690,39 +690,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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id481002"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id461248"/><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="id481042"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id461288"/><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="id481068"/><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="id461313"/><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="id481087"/><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id461332"/><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" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id481106"/><p><span class="title"><em>
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id461351"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin">
|
||||
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="id481133"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id461378"/><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="id481171"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id461417"/><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" title="API Specifications, Java Platform"><a id="id481218"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="API Specifications, Java Platform"><a id="id461464"/><p><span class="title"><em>
|
||||
<a class="link" href="http://java.sun.com/reference/api/index.html">
|
||||
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" title="GNU gettext tools, version 0.10.38, Native Language Support Library and Tools."><a id="id481238"/><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry" title="GNU gettext tools, version 0.10.38, Native Language Support Library and Tools."><a id="id461484"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.gnu.org/software/gettext">
|
||||
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
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 13. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="std.io"/>Chapter 13.
|
||||
Input and Output
|
||||
<a id="id483014" class="indexterm"/>
|
||||
<a id="id463259" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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" title="Iostream Objects"><div class="titlepage"><div><div><h2 class="title"><a id="std.io.objects"/>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
|
||||
<iostream> when they don't need to -- and that can <span class="emphasis"><em>penalize
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 10. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators"/>Chapter 10.
|
||||
Iterators
|
||||
<a id="id482179" class="indexterm"/>
|
||||
<a id="id462425" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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" title="Predefined"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators.predefined"/>Predefined</h2></div></div></div><div class="section" title="Iterators vs. Pointers"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"/>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
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 8. Localization"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization"/>Chapter 8.
|
||||
Localization
|
||||
<a id="id478468" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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#id479120">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" title="Locales"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.locales"/>Locales</h2></div></div></div><div class="section" title="locale"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"/>locale</h3></div></div></div><p>
|
||||
<a id="id458714" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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#id459366">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" title="Locales"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization.locales"/>Locales</h2></div></div></div><div class="section" title="locale"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"/>locale</h3></div></div></div><p>
|
||||
Describes the basic locale object, including nested
|
||||
classes id, facet, and the reference-counted implementation object,
|
||||
class _Impl.
|
||||
|
@ -403,29 +403,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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id478831"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id459077"/><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="id478870"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id459117"/><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="id478896"/><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="id459142"/><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="id478915"/><p><span class="citetitle"><em class="citetitle">
|
||||
</em>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id459161"/><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" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id478934"/><p><span class="title"><em>
|
||||
</em>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id459180"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin/">
|
||||
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="id478961"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></p></div><div class="biblioentry"><a id="id459207"/><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="id479000"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id459246"/><p><span class="citetitle"><em class="citetitle">
|
||||
Standard C++ IOStreams and Locales
|
||||
</em>. </span><span class="subtitle">
|
||||
Advanced Programmer's Guide and Reference
|
||||
|
|
|
@ -93,7 +93,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" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"/>Implementation</h4></div></div></div><div class="section" title="Interface Design"><div class="titlepage"><div><div><h5 class="title"><a id="id463447"/>Interface Design</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"/>Implementation</h4></div></div></div><div class="section" title="Interface Design"><div class="titlepage"><div><div><h5 class="title"><a id="id443701"/>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
|
||||
|
@ -106,7 +106,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" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id463477"/>Selecting Default Allocation Policy</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id443731"/>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
|
||||
|
@ -143,7 +143,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" title="Disabling Memory Caching"><div class="titlepage"><div><div><h5 class="title"><a id="id463588"/>Disabling Memory Caching</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Disabling Memory Caching"><div class="titlepage"><div><div><h5 class="title"><a id="id443842"/>Disabling Memory Caching</h5></div></div></div><p>
|
||||
In use, <code class="classname">allocator</code> may allocate and
|
||||
deallocate using implementation-specified strategies and
|
||||
heuristics. Because of this, every call to an allocator object's
|
||||
|
@ -308,33 +308,33 @@
|
|||
A high-performance allocator that uses a bit-map to keep track
|
||||
of the used and unused memory locations. It has its own
|
||||
documentation, found <a class="link" href="bitmap_allocator.html" title="Chapter 21. The bitmap_allocator">here</a>.
|
||||
</p></li></ol></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id464038"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></li></ol></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id444292"/><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" title="The Standard Librarian: What Are Allocators Good For?"><a id="id464054"/><p><span class="title"><em>
|
||||
<span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry" title="The Standard Librarian: What Are Allocators Good For?"><a id="id444308"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.drdobbs.com/cpp/184403759">
|
||||
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" title="The Hoard Memory Allocator"><a id="id464085"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="The Hoard Memory Allocator"><a id="id444339"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.cs.umass.edu/~emery/hoard">
|
||||
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" title="Reconsidering Custom Memory Allocation"><a id="id464108"/><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" title="Reconsidering Custom Memory Allocation"><a id="id444362"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf">
|
||||
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" title="Allocator Types"><a id="id464159"/><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" title="Allocator Types"><a id="id444413"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html">
|
||||
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="id464199"/><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="id444453"/><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="id464236"/><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" title="auto_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"/>auto_ptr</h3></div></div></div><div class="section" title="Limitations"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"/>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="id444490"/><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" title="auto_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"/>auto_ptr</h3></div></div></div><div class="section" title="Limitations"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"/>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>
|
||||
|
@ -429,12 +429,6 @@ and implements shared ownership semantics.
|
|||
The standard deliberately doesn't require a reference-counted
|
||||
implementation, allowing other techniques such as a
|
||||
circular-linked-list.
|
||||
</p><p>
|
||||
At the time of writing the C++0x working paper doesn't mention how
|
||||
threads affect shared_ptr, but it is likely to follow the existing
|
||||
practice set by <code class="classname">boost::shared_ptr</code>. The
|
||||
shared_ptr in libstdc++ is derived from Boost's, so the same rules
|
||||
apply.
|
||||
</p><p>
|
||||
</p></div><div class="section" title="Design Issues"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.design_issues"/>Design Issues</h4></div></div></div><p>
|
||||
The <code class="classname">shared_ptr</code> code is kindly donated to GCC by the Boost
|
||||
|
@ -450,7 +444,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" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"/>Implementation</h4></div></div></div><div class="section" title="Class Hierarchy"><div class="titlepage"><div><div><h5 class="title"><a id="id464596"/>Class Hierarchy</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"/>Implementation</h4></div></div></div><div class="section" title="Class Hierarchy"><div class="titlepage"><div><div><h5 class="title"><a id="id444841"/>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,11 +486,11 @@ be forwarded to <span class="type">Tp</span>'s constructor.
|
|||
Unlike the other <code class="classname">_Sp_counted_*</code> classes, this one is parameterized on the
|
||||
type of object, not the type of pointer; this is purely a convenience
|
||||
that simplifies the implementation slightly.
|
||||
</p></dd></dl></div></div><div class="section" title="Thread Safety"><div class="titlepage"><div><div><h5 class="title"><a id="id464775"/>Thread Safety</h5></div></div></div><p>
|
||||
C++0x-only features are: rvalue-ref/move support, allocator support,
|
||||
</p></dd></dl></div></div><div class="section" title="Thread Safety"><div class="titlepage"><div><div><h5 class="title"><a id="id445019"/>Thread Safety</h5></div></div></div><p>
|
||||
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++0x mode.
|
||||
deprecated in C++11 mode.
|
||||
</p><p>
|
||||
The
|
||||
<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread
|
||||
|
@ -542,7 +536,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" title="Selecting Lock Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id464844"/>Selecting Lock Policy</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Selecting Lock Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id445089"/>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
|
||||
|
@ -583,30 +577,30 @@ 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" title="Dual C++0x and TR1 Implementation"><div class="titlepage"><div><div><h5 class="title"><a id="id464966"/>Dual C++0x and TR1 Implementation</h5></div></div></div><p>
|
||||
The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++0x
|
||||
</p></div><div class="section" title="Dual C++11 and TR1 Implementation"><div class="titlepage"><div><div><h5 class="title"><a id="id445211"/>Dual C++11 and TR1 Implementation</h5></div></div></div><p>
|
||||
The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++11
|
||||
with support for rvalue-references and the other features from N2351.
|
||||
The <code class="classname">_Sp_counted_base</code> base class is implemented in
|
||||
<code class="filename">tr1/boost_sp_shared_count.h</code> and is common to the TR1
|
||||
and C++0x versions of <code class="classname">shared_ptr</code>.
|
||||
and C++11 versions of <code class="classname">shared_ptr</code>.
|
||||
</p><p>
|
||||
The classes derived from <code class="classname">_Sp_counted_base</code> (see Class Hierarchy
|
||||
above) and <code class="classname">__shared_count</code> are implemented separately for C++0x
|
||||
above) and <code class="classname">__shared_count</code> are implemented separately for C++11
|
||||
and TR1, in <code class="filename">bits/shared_ptr.h</code> and
|
||||
<code class="filename">tr1/shared_ptr.h</code> respectively.
|
||||
</p><p>
|
||||
The TR1 implementation is considered relatively stable, so is unlikely to
|
||||
change unless bug fixes require it. If the code that is common to both
|
||||
C++0x and TR1 modes needs to diverge further then it might be necessary to
|
||||
C++11 and TR1 versions needs to diverge further then it might be necessary to
|
||||
duplicate <code class="classname">_Sp_counted_base</code> and only make changes to
|
||||
the C++0x version.
|
||||
</p></div><div class="section" title="Related functions and classes"><div class="titlepage"><div><div><h5 class="title"><a id="id465022"/>Related functions and classes</h5></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>,
|
||||
the C++11 version.
|
||||
</p></div><div class="section" title="Related functions and classes"><div class="titlepage"><div><div><h5 class="title"><a id="id445267"/>Related functions and classes</h5></div></div></div><div class="variablelist"><dl><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
|
||||
in C++0x mode, so in TR1 mode these casts rely on three non-standard
|
||||
in C++11 mode, so in TR1 mode these casts rely on three non-standard
|
||||
constructors in shared_ptr and __shared_ptr.
|
||||
In C++0x mode these constructors and the related tag types are not needed.
|
||||
In C++11 mode these constructors and the related tag types are not needed.
|
||||
</p></dd><dt><span class="term"><code class="code">enable_shared_from_this</code></span></dt><dd><p>
|
||||
The clever overload to detect a base class of type
|
||||
<code class="code">enable_shared_from_this</code> comes straight from Boost.
|
||||
|
@ -633,15 +627,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" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"/>Use</h4></div></div></div><div class="section" title="Examples"><div class="titlepage"><div><div><h5 class="title"><a id="id465171"/>Examples</h5></div></div></div><p>
|
||||
</p></dd></dl></div></div></div><div class="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"/>Use</h4></div></div></div><div class="section" title="Examples"><div class="titlepage"><div><div><h5 class="title"><a id="id445416"/>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" title="Unresolved Issues"><div class="titlepage"><div><div><h5 class="title"><a id="id465201"/>Unresolved Issues</h5></div></div></div><p>
|
||||
</p></div><div class="section" title="Unresolved Issues"><div class="titlepage"><div><div><h5 class="title"><a id="id445446"/>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++0x working draft is not implemented in GCC.
|
||||
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
|
||||
|
@ -651,7 +645,7 @@ be private.
|
|||
</p><p>
|
||||
Unlike Boost, this implementation does not use separate classes
|
||||
for the pointer+deleter and pointer+deleter+allocator cases in
|
||||
C++0x mode, combining both into _Sp_counted_deleter and using
|
||||
C++11 mode, combining both into _Sp_counted_deleter and using
|
||||
<code class="classname">allocator</code> when the user doesn't specify
|
||||
an allocator. If it was found to be beneficial an additional
|
||||
class could easily be added. With the current implementation,
|
||||
|
@ -680,25 +674,25 @@ 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" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry" title="Improving shared_ptr for C++0x, Revision 2"><a id="id477514"/><p><span class="title"><em>
|
||||
</p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"/>Bibliography</h4></div></div></div><div class="biblioentry" title="Improving shared_ptr for C++0x, Revision 2"><a id="id457760"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm">
|
||||
Improving shared_ptr for C++0x, Revision 2
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2351
|
||||
. </span></p></div><div class="biblioentry" title="C++ Standard Library Active Issues List"><a id="id477533"/><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry" title="C++ Standard Library Active Issues List"><a id="id457779"/><p><span class="title"><em>
|
||||
<a class="link" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html">
|
||||
C++ Standard Library Active Issues List
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2456
|
||||
. </span></p></div><div class="biblioentry" title="Working Draft, Standard for Programming Language C++"><a id="id477552"/><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry" title="Working Draft, Standard for Programming Language C++"><a id="id457798"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf">
|
||||
Working Draft, Standard for Programming Language C++
|
||||
</a>
|
||||
</em>. </span><span class="subtitle">
|
||||
N2461
|
||||
. </span></p></div><div class="biblioentry" title="Boost C++ Libraries documentation, shared_ptr"><a id="id477571"/><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry" title="Boost C++ Libraries documentation, shared_ptr"><a id="id457817"/><p><span class="title"><em>
|
||||
<a class="link" href="http://boost.org/libs/smart_ptr/shared_ptr.htm">
|
||||
Boost C++ Libraries documentation, shared_ptr
|
||||
</a>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 12. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics"/>Chapter 12.
|
||||
Numerics
|
||||
<a id="id482667" class="indexterm"/>
|
||||
<a id="id462913" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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" title="Complex"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics.complex"/>Complex</h2></div></div></div><p>
|
||||
</p><div class="section" title="complex Processing"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.complex.processing"/>complex Processing</h3></div></div></div><p>
|
||||
</p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry,
|
||||
|
|
|
@ -13,11 +13,11 @@ explicit source declaration or by compiling existing sources with a
|
|||
specific compiler flag.
|
||||
</p><div class="section" title="Intro"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode.intro"/>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"><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"><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" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id488591"/><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"><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" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id468837"/><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="id488633"/><p><span class="citetitle"><em class="citetitle">
|
||||
. </span></span></p></div><div class="biblioentry"><a id="id468880"/><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)
|
||||
|
|
|
@ -251,7 +251,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="id494301"/><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_node_invariants.png" style="text-align: middle" alt="Node Invariants"/></div></div></div><br class="figure-break"/></div><div class="section" title="Underlying Data Structures"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"/>Underlying Data Structures</h5></div></div></div><p>
|
||||
</p></li></ol></div><div class="figure"><a id="id474547"/><p class="title"><strong>Figure 22.1. Node Invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_node_invariants.png" style="text-align: middle" alt="Node Invariants"/></div></div></div><br class="figure-break"/></div><div class="section" title="Underlying Data Structures"><div class="titlepage"><div><div><h5 class="title"><a id="motivation.associative.underlying"/>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
|
||||
|
@ -259,7 +259,7 @@
|
|||
</p><p>
|
||||
The figure below shows the different underlying data structures
|
||||
currently supported in this library.
|
||||
</p><div class="figure"><a id="id494357"/><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_different_underlying_dss_1.png" style="text-align: middle" alt="Underlying Associative Data Structures"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id474603"/><p class="title"><strong>Figure 22.2. Underlying Associative Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_different_underlying_dss_1.png" style="text-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
|
||||
|
@ -378,7 +378,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="id494620"/><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterators_range_ops_1.png" style="text-align: middle" alt="Node Invariants"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id474866"/><p class="title"><strong>Figure 22.3. Range Iteration in Different Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterators_range_ops_1.png" style="text-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
|
||||
|
@ -429,7 +429,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="id494745"/><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterators_range_ops_2.png" style="text-align: middle" alt="Point Iteration in Hash Data Structures"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id474991"/><p class="title"><strong>Figure 22.4. Point Iteration in Hash Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterators_range_ops_2.png" style="text-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.
|
||||
|
@ -445,7 +445,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="id494822"/><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_invalidation_guarantee_erase.png" style="text-align: middle" alt="Effect of erase in different underlying data structures"/></div></div></div><br class="figure-break"/><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><p>
|
||||
</p><div class="figure"><a id="id475068"/><p class="title"><strong>Figure 22.5. Effect of erase in different underlying data structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_invalidation_guarantee_erase.png" style="text-align: middle" alt="Effect of erase in different underlying data structures"/></div></div></div><br class="figure-break"/><div class="orderedlist"><ol class="orderedlist"><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.
|
||||
|
@ -681,7 +681,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="id495385"/><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_different_underlying_dss_2.png" style="text-align: middle" alt="Underlying Priority Queue Data Structures"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id475631"/><p class="title"><strong>Figure 22.6. Underlying Priority Queue Data Structures</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_different_underlying_dss_2.png" style="text-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
|
||||
|
|
|
@ -171,7 +171,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="id497529"/><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_embedded_lists_1.png" style="text-align: middle" alt="Non-unique Mapping Standard Containers"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id477775"/><p class="title"><strong>Figure 22.8. Non-unique Mapping Standard Containers</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_embedded_lists_1.png" style="text-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
|
||||
|
@ -253,7 +253,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="id497724"/><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_embedded_lists_3.png" style="text-align: middle" alt="Non-unique Mapping Containers"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id477971"/><p class="title"><strong>Figure 22.10. Non-unique Mapping Containers</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_embedded_lists_3.png" style="text-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
|
||||
|
@ -306,7 +306,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="id497890"/><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterator_hierarchy.png" style="text-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="id478136"/><p class="title"><strong>Figure 22.11. Point Iterator Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_point_iterator_hierarchy.png" style="text-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
|
||||
|
@ -345,7 +345,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="id498001"/><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_invalidation_tag_hierarchy.png" style="text-align: middle" alt="Invalidation Guarantee Tags Hierarchy"/></div></div></div><br class="figure-break"/><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
|
||||
</p><div class="figure"><a id="id478248"/><p class="title"><strong>Figure 22.12. Invalidation Guarantee Tags Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_invalidation_tag_hierarchy.png" style="text-align: middle" alt="Invalidation Guarantee Tags Hierarchy"/></div></div></div><br class="figure-break"/><div class="itemizedlist"><ul class="itemizedlist"><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
|
||||
|
@ -429,7 +429,7 @@
|
|||
</p><p>
|
||||
This library contains a container tag hierarchy corresponding to the
|
||||
diagram below.
|
||||
</p><div class="figure"><a id="id498253"/><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_container_tag_hierarchy.png" style="text-align: middle" alt="Container Tag Hierarchy"/></div></div></div><br class="figure-break"/><p>
|
||||
</p><div class="figure"><a id="id478499"/><p class="title"><strong>Figure 22.13. Container Tag Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_container_tag_hierarchy.png" style="text-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>.
|
||||
|
@ -488,7 +488,7 @@
|
|||
collision-chaining container, except for the following.</p><div class="orderedlist"><ol class="orderedlist"><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" title="Details"><div class="titlepage"><div><div><h5 class="title"><a id="container.hash.details"/>Details</h5></div></div></div><div class="section" title="Hash Policies"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.hash_policies"/>Hash Policies</h6></div></div></div><div class="section" title="General"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.general"/>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="id498585"/><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="id478832"/><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" style="text-align: center"><img src="../images/pbds_hash_ranged_hash_range_hashing_fns.png" style="text-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 -
|
||||
|
@ -505,7 +505,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="id498701"/><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="id478947"/><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
|
||||
|
@ -525,7 +525,7 @@
|
|||
transforming the sequence of hash values into a sequence of
|
||||
positions.</p></div><div class="section" title="Range Hashing"><div class="titlepage"><div><div><h6 class="title"><a id="details.hash_policies.range"/>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="id498750"/><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="id478996"/><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
|
||||
|
@ -536,9 +536,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="id498787"/><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="id479034"/><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="id498803"/><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="id479049"/><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
|
||||
|
@ -564,7 +564,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="id498883"/><p class="title"><strong>Equation 22.5.
|
||||
function:</p><div class="equation"><a id="id479129"/><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 =
|
||||
|
@ -576,7 +576,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="id498934"/><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="id479180"/><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
|
||||
|
@ -607,12 +607,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="id499123"/><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" style="text-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="id479369"/><p class="title"><strong>Figure 22.15. Insert hash sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_range_hashing_seq_diagram.png" style="text-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="id499181"/><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" style="text-align: middle" alt="Insert hash sequence diagram with a null policy"/></div></div></div><br class="figure-break"/></div><div class="section" title="Probing tables"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"/>
|
||||
(points B and C).</p><div class="figure"><a id="id479428"/><p class="title"><strong>Figure 22.16. Insert hash sequence diagram with a null policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_range_hashing_seq_diagram2.png" style="text-align: middle" alt="Insert hash sequence diagram with a null policy"/></div></div></div><br class="figure-break"/></div><div class="section" title="Probing tables"><div class="titlepage"><div><div><h6 class="title"><a id="hash_policies.implementation.probe"/>
|
||||
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>,
|
||||
|
@ -635,7 +635,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="id499321"/><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_policy_cd.png" style="text-align: middle" alt="Hash policy class diagram"/></div></div></div><br class="figure-break"/></div></div></div><div class="section" title="Resize Policies"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"/>Resize Policies</h6></div></div></div><div class="section" title="General"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"/>General</h6></div></div></div><p>Hash-tables, as opposed to trees, do not naturally grow or
|
||||
</p><div class="figure"><a id="id479567"/><p class="title"><strong>Figure 22.17. Hash policy class diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_hash_policy_cd.png" style="text-align: middle" alt="Hash policy class diagram"/></div></div></div><br class="figure-break"/></div></div></div><div class="section" title="Resize Policies"><div class="titlepage"><div><div><h6 class="title"><a id="container.hash.details.resize_policies"/>Resize Policies</h6></div></div></div><div class="section" title="General"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.general"/>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"><li class="listitem"><p>A size policy indicating how a hash table
|
||||
|
@ -668,10 +668,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="id499480"/><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_balls_and_bins.png" style="text-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="id479726"/><p class="title"><strong>Figure 22.18. Balls and bins</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_balls_and_bins.png" style="text-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="id499526"/><p class="title"><strong>Equation 22.7.
|
||||
l<sub>i</sub>, and assume uniform distribution. Then</p><div class="equation"><a id="id479772"/><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> =
|
||||
|
@ -685,7 +685,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="id499582"/><p class="title"><strong>Equation 22.8.
|
||||
I(.) denote the indicator function. Then</p><div class="equation"><a id="id479828"/><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 ) =
|
||||
|
@ -724,7 +724,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="id499736"/><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" style="text-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="id479982"/><p class="title"><strong>Figure 22.19. Insert resize sequence diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_insert_resize_sequence_diagram1.png" style="text-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>
|
||||
|
@ -733,8 +733,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="id499801"/><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" style="text-align: middle" alt="Standard resize policy trigger sequence diagram"/></div></div></div><br class="figure-break"/><div class="figure"><a id="id499836"/><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="id480047"/><p class="title"><strong>Figure 22.20. Standard resize policy trigger sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_insert_resize_sequence_diagram2.png" style="text-align: middle" alt="Standard resize policy trigger sequence diagram"/></div></div></div><br class="figure-break"/><div class="figure"><a id="id480082"/><p class="title"><strong>Figure 22.21. Standard resize policy size sequence
|
||||
diagram</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_insert_resize_sequence_diagram3.png" style="text-align: middle" alt="Standard resize policy size sequence diagram"/></div></div></div><br class="figure-break"/></div><div class="section" title="Predefined Policies"><div class="titlepage"><div><div><h6 class="title"><a id="resize_policies.impl.predefined"/>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"><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>
|
||||
|
@ -877,7 +877,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="id500486"/><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_invariants.png" style="text-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="id480732"/><p class="title"><strong>Figure 22.22. Tree node invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_invariants.png" style="text-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"><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,
|
||||
|
@ -891,7 +891,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="id500564"/><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_invalidations.png" style="text-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="id480810"/><p class="title"><strong>Figure 22.23. Tree node invalidation</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_invalidations.png" style="text-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" title="Node Iterators"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.node.iterators"/>Node Iterators</h6></div></div></div><p>Each tree-based container defines two additional iterator
|
||||
types, <code class="classname">const_node_iterator</code>
|
||||
|
@ -920,7 +920,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="id500674"/><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_updator_policy_cd.png" style="text-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="id480920"/><p class="title"><strong>Figure 22.24. A tree and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_tree_node_updator_policy_cd.png" style="text-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>.
|
||||
|
@ -939,7 +939,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="id500771"/><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_restoring_node_invariants.png" style="text-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="id481017"/><p class="title"><strong>Figure 22.25. Restoring node invariants</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_restoring_node_invariants.png" style="text-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
|
||||
|
@ -947,7 +947,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="id500839"/><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_update_seq_diagram.png" style="text-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="id481085"/><p class="title"><strong>Figure 22.26. Insert update sequence</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_update_seq_diagram.png" style="text-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"><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?
|
||||
|
@ -989,7 +989,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="id501025"/><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_rationale_null_node_updator.png" style="text-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="id481271"/><p class="title"><strong>Figure 22.27. Useless update path</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_rationale_null_node_updator.png" style="text-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" title="Split and Join"><div class="titlepage"><div><div><h6 class="title"><a id="container.tree.details.split"/>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
|
||||
|
@ -1072,7 +1072,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="id501397"/><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_pat_trie.png" style="text-align: middle" alt="A PATRICIA trie"/></div></div></div><br class="figure-break"/></div><div class="section" title="Node Invariants"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"/>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="id481643"/><p class="title"><strong>Figure 22.28. A PATRICIA trie</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_pat_trie.png" style="text-align: middle" alt="A PATRICIA trie"/></div></div></div><br class="figure-break"/></div><div class="section" title="Node Invariants"><div class="titlepage"><div><div><h6 class="title"><a id="container.trie.details.node"/>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"><li class="listitem"><p>A trie's <code class="classname">Node_Update</code> template-template
|
||||
|
@ -1081,7 +1081,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="id501485"/><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_trie_node_updator_policy_cd.png" style="text-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="id481731"/><p class="title"><strong>Figure 22.29. A trie and its update policy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_trie_node_updator_policy_cd.png" style="text-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"><li class="listitem"><p>
|
||||
<code class="classname">trie_order_statistics_node_update</code>
|
||||
supports order statistics.
|
||||
|
@ -1129,7 +1129,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="id501739"/><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_simple_list.png" style="text-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="id481985"/><p class="title"><strong>Figure 22.30. A simple list</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_simple_list.png" style="text-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
|
||||
|
@ -1139,7 +1139,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="id501786"/><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_list_update.png" style="text-align: middle" alt="The counter algorithm"/></div></div></div><br class="figure-break"/></div><div class="section" title="Policies"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"/>Policies</h6></div></div></div><p>this library allows instantiating lists with policies
|
||||
</p><div class="figure"><a id="id482032"/><p class="title"><strong>Figure 22.31. The counter algorithm</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_list_update.png" style="text-align: middle" alt="The counter algorithm"/></div></div></div><br class="figure-break"/></div><div class="section" title="Policies"><div class="titlepage"><div><div><h6 class="title"><a id="container.list.details.policies"/>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
|
||||
|
@ -1311,7 +1311,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="id502317"/><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" style="text-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="id482563"/><p class="title"><strong>Figure 22.32. Underlying Priority-Queue Data-Structures.</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_priority_queue_different_underlying_dss.png" style="text-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
|
||||
|
@ -1391,7 +1391,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="id502609"/><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" style="text-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="id482855"/><p class="title"><strong>Figure 22.33. Priority-Queue Data-Structure Tags.</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_priority_queue_tag_hierarchy.png" style="text-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
|
||||
|
|
|
@ -62,7 +62,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="id495908"/><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_exception_hierarchy.png" style="text-align: middle" alt="Exception Hierarchy"/></div></div></div><br class="figure-break"/></div><div class="section" title="Tutorial"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"/>Tutorial</h3></div></div></div><div class="section" title="Basic Use"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"/>Basic Use</h4></div></div></div><p>
|
||||
</p><div class="figure"><a id="id476154"/><p class="title"><strong>Figure 22.7. Exception Hierarchy</strong></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="../images/pbds_exception_hierarchy.png" style="text-align: middle" alt="Exception Hierarchy"/></div></div></div><br class="figure-break"/></div><div class="section" title="Tutorial"><div class="titlepage"><div><div><h3 class="title"><a id="pbds.using.tutorial"/>Tutorial</h3></div></div></div><div class="section" title="Basic Use"><div class="titlepage"><div><div><h4 class="title"><a id="pbds.using.tutorial.basic"/>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
|
||||
|
@ -83,7 +83,7 @@
|
|||
<code class="classname">__gnu_pbds::cc_hash_table</code> instead of
|
||||
<code class="classname">std::unordered_map</code>, since <span class="quote">“<span class="quote">unordered
|
||||
map</span>”</span> does not necessarily mean a hash-based map as implied by
|
||||
the C++ library (C++0x or TR1). For example, list-based associative
|
||||
the C++ library (C++11 or TR1). For example, list-based associative
|
||||
containers, which are very useful for the construction of
|
||||
"multimaps," are also unordered.
|
||||
</p><p>This snippet shows a red-black tree based container:</p><pre class="programlisting">
|
||||
|
|
|
@ -138,7 +138,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" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id492483"/><p><span class="citetitle"><em class="citetitle">
|
||||
</p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"/>Bibliography</h2></div></div></div><div class="biblioentry"><a id="id472729"/><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
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 7. Strings"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings"/>Chapter 7.
|
||||
Strings
|
||||
<a id="id477648" class="indexterm"/>
|
||||
<a id="id457894" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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></div><div class="section" title="String Classes"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings.string"/>String Classes</h2></div></div></div><div class="section" title="Simple Transformations"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"/>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
|
||||
|
@ -269,7 +269,7 @@ stringtok(Container &container, string const &in,
|
|||
(see <a class="link" href="../faq.html#faq.size_equals_capacity" title="7.8.">this FAQ
|
||||
entry</a>) but the regular copy constructor cannot be used
|
||||
because libstdc++'s <code class="code">string</code> is Copy-On-Write.
|
||||
</p><p>In <a class="link" href="status.html#status.iso.200x" title="C++ 200x">C++0x</a> mode you can call
|
||||
</p><p>In <a class="link" href="status.html#status.iso.2011" title="C++ 2011">C++11</a> mode you can call
|
||||
<code class="code">s.shrink_to_fit()</code> to achieve the same effect as
|
||||
<code class="code">s.reserve(s.size())</code>.
|
||||
</p></div><div class="section" title="CString (MFC)"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.Cstring"/>CString (MFC)</h3></div></div></div><p>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 4. Support"><div class="titlepage"><div><div><h2 class="title"><a id="std.support"/>Chapter 4.
|
||||
Support
|
||||
<a id="id461980" class="indexterm"/>
|
||||
<a id="id442234" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><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.
|
||||
|
|
|
@ -392,10 +392,10 @@ Example 1: Testing compilation only
|
|||
// { dg-do compile }
|
||||
|
||||
Example 2: Testing for expected warnings on line 36, which all targets fail
|
||||
// { dg-warning "string literals" "" { xfail *-*-* } 36
|
||||
// { dg-warning "string literals" "" { xfail *-*-* } 36 }
|
||||
|
||||
Example 3: Testing for expected warnings on line 36
|
||||
// { dg-warning "string literals" "" { target *-*-* } 36
|
||||
// { dg-warning "string literals" "" { target *-*-* } 36 }
|
||||
|
||||
Example 4: Testing for compilation errors on line 41
|
||||
// { dg-do compile }
|
||||
|
@ -493,7 +493,7 @@ only default variables.
|
|||
reporting functions including:
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist"><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" title="Special Topics"><div class="titlepage"><div><div><h3 class="title"><a id="test.special"/>Special Topics</h3></div></div></div><div class="section" title="Qualifying Exception Safety Guarantees"><div class="titlepage"><div><div><h4 class="title"><a id="test.exception.safety"/>
|
||||
Qualifying Exception Safety Guarantees
|
||||
<a id="id535489" class="indexterm"/>
|
||||
<a id="id515735" class="indexterm"/>
|
||||
</h4></div></div></div><div class="section" title="Overview"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.overview"/>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
|
||||
|
@ -548,7 +548,7 @@ container uses an extension
|
|||
allocator, <code class="classname">__gnu_cxx::throw_allocator_random</code>,
|
||||
as the allocator type.
|
||||
</p></li><li class="listitem"><p>
|
||||
C++0x Container Requirements.
|
||||
C++11 Container Requirements.
|
||||
</p><p>
|
||||
Coverage is currently limited to testing container
|
||||
requirements for exception safety,
|
||||
|
@ -563,8 +563,8 @@ as the allocator type.
|
|||
instrumentation to <code class="classname">iterator</code>
|
||||
and <code class="classname">const_iterator</code> types that throw
|
||||
conditionally on iterator operations.
|
||||
</p></li></ul></div></div><div class="section" title="C++0x Requirements Test Sequence Descriptions"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.containers"/>
|
||||
C++0x Requirements Test Sequence Descriptions
|
||||
</p></li></ul></div></div><div class="section" title="C++11 Requirements Test Sequence Descriptions"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.containers"/>
|
||||
C++11 Requirements Test Sequence Descriptions
|
||||
</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
|
||||
Basic
|
||||
</p><p>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -26,7 +26,7 @@
|
|||
<code class="filename">cxxabi.h</code>.
|
||||
</p></li></ul></div><p>
|
||||
In the
|
||||
C++0x <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a> add
|
||||
C++11 <a class="link" href="using.html#manual.intro.using.flags" title="Command Options">dialect</a> add
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist"><li class="listitem"><p>
|
||||
<code class="filename">initializer_list</code>
|
||||
</p></li><li class="listitem"><p>
|
||||
|
|
|
@ -266,7 +266,7 @@ is called.
|
|||
}
|
||||
catch(...)
|
||||
{ this->_M_setstate(ios_base::badbit); }
|
||||
</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id461137"/><p><span class="title"><em>
|
||||
</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"/>Bibliography</h3></div></div></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id441391"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.opengroup.org/austin">
|
||||
System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)
|
||||
</a>
|
||||
|
@ -275,39 +275,39 @@ 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" title="Error and Exception Handling"><a id="id461168"/><p><span class="title"><em>
|
||||
. </span></p></div><div class="biblioentry" title="Error and Exception Handling"><a id="id441422"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.boost.org/community/error_handling.html">
|
||||
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" title="Exception-Safety in Generic Components"><a id="id461199"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="Exception-Safety in Generic Components"><a id="id441453"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.boost.org/community/exception_safety.html">
|
||||
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" title="Standard Library Exception Policy"><a id="id461230"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="Standard Library Exception Policy"><a id="id441484"/><p><span class="title"><em>
|
||||
<a class="link" href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf">
|
||||
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" title="ia64 c++ abi exception handling"><a id="id461260"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="ia64 c++ abi exception handling"><a id="id441514"/><p><span class="title"><em>
|
||||
<a class="link" href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html">
|
||||
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" title="Appendix E: Standard-Library Exception Safety"><a id="id461291"/><p><span class="title"><em>
|
||||
. </span></span></p></div><div class="biblioentry" title="Appendix E: Standard-Library Exception Safety"><a id="id441545"/><p><span class="title"><em>
|
||||
<a class="link" href="http://www.research.att.com/~bs/3rd_safe.pdf">
|
||||
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="id461315"/><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="id441569"/><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" title="GCC Bug 25191: exception_defines.h #defines try/catch"><a id="id461335"/><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" title="GCC Bug 25191: exception_defines.h #defines try/catch"><a id="id441589"/><p><span class="title"><em>
|
||||
<a class="link" href="http://gcc.gnu.org/PR25191">
|
||||
GCC Bug 25191: exception_defines.h #defines try/catch
|
||||
</a>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -45,7 +45,7 @@
|
|||
removes older ARM-style iostreams code, and other anachronisms
|
||||
from the API. This macro is dependent on the version of the
|
||||
standard being tracked, and as a result may give different results for
|
||||
<code class="code">-std=c++98</code> and <code class="code">-std=c++0x</code>. This may
|
||||
<code class="code">-std=c++98</code> and <code class="code">-std=c++11</code>. This may
|
||||
be useful in updating old C++ code which no longer meet the
|
||||
requirements of the language, or for checking current code
|
||||
against new language standards.
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
Standard Contents
|
||||
</th><td align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr/></div><div class="chapter" title="Chapter 6. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="std.util"/>Chapter 6.
|
||||
Utilities
|
||||
<a id="id462956" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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#id463447">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#id463477">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#id463588">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#id464596">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#id464775">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#id464844">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#id464966">Dual C++0x and TR1 Implementation</a></span></dt><dt><span class="section"><a href="memory.html#id465022">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#id465171">Examples</a></span></dt><dt><span class="section"><a href="memory.html#id465201">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" title="Functors"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.functors"/>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
|
||||
<a id="id443210" class="indexterm"/>
|
||||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><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#id443701">Interface Design</a></span></dt><dt><span class="section"><a href="memory.html#id443731">Selecting Default Allocation Policy</a></span></dt><dt><span class="section"><a href="memory.html#id443842">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#id444841">Class Hierarchy</a></span></dt><dt><span class="section"><a href="memory.html#id445019">Thread Safety</a></span></dt><dt><span class="section"><a href="memory.html#id445089">Selecting Lock Policy</a></span></dt><dt><span class="section"><a href="memory.html#id445211">Dual C++11 and TR1 Implementation</a></span></dt><dt><span class="section"><a href="memory.html#id445267">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#id445416">Examples</a></span></dt><dt><span class="section"><a href="memory.html#id445446">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" title="Functors"><div class="titlepage"><div><div><h2 class="title"><a id="std.util.functors"/>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 chapter of their STL, in
|
||||
|
|
|
@ -694,7 +694,7 @@
|
|||
Long answer: See the implementation status pages for
|
||||
<link linkend="status.iso.1998">C++98</link>,
|
||||
<link linkend="status.iso.tr1">TR1</link>, and
|
||||
<link linkend="status.iso.200x">C++0x</link>.
|
||||
<link linkend="status.iso.2011">C++11</link>.
|
||||
</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
|
|
@ -693,14 +693,15 @@ other usage is correct.
|
|||
|
||||
<para>At this time most of the features of the SGI STL extension have been
|
||||
replaced by standardized libraries.
|
||||
In particular, the unordered_map and unordered_set containers of TR1
|
||||
are suitable replacement for the non-standard hash_map and hash_set
|
||||
containers in the SGI STL.
|
||||
In particular, the <code>unordered_map</code> and
|
||||
<code>unordered_set</code> containers of TR1 and C++ 2011 are suitable
|
||||
replacements for the non-standard <code>hash_map</code> and
|
||||
<code>hash_set</code> containers in the SGI STL.
|
||||
</para>
|
||||
<para> Header files <filename class="headerfile">hash_map</filename> and <filename class="headerfile">hash_set</filename> moved
|
||||
to <filename class="headerfile">ext/hash_map</filename> and <filename class="headerfile">ext/hash_set</filename>,
|
||||
respectively. At the same time, all types in these files are enclosed
|
||||
in <code>namespace __gnu_cxx</code>. Later versions move deprecate
|
||||
in <code>namespace __gnu_cxx</code>. Later versions deprecate
|
||||
these files, and suggest using TR1's <filename class="headerfile">unordered_map</filename>
|
||||
and <filename class="headerfile">unordered_set</filename> instead.
|
||||
</para>
|
||||
|
@ -832,7 +833,7 @@ No <code>stream::attach(int fd)</code>
|
|||
</para>
|
||||
</section>
|
||||
|
||||
<section><info><title>
|
||||
<section xml:id="backwards.support_cxx98"><info><title>
|
||||
Support for C++98 dialect.
|
||||
</title></info>
|
||||
|
||||
|
@ -908,7 +909,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [
|
|||
</programlisting>
|
||||
</section>
|
||||
|
||||
<section><info><title>
|
||||
<section xml:id="backwards.support_tr1"><info><title>
|
||||
Support for C++TR1 dialect.
|
||||
</title></info>
|
||||
|
||||
|
@ -1000,19 +1001,19 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [
|
|||
</section>
|
||||
|
||||
|
||||
<section><info><title>
|
||||
Support for C++0x dialect.
|
||||
<section xml:id="backwards.support_cxx11"><info><title>
|
||||
Support for C++11 dialect.
|
||||
</title></info>
|
||||
|
||||
|
||||
<para>Check for baseline language coverage in the compiler for the C++0xstandard.
|
||||
<para>Check for baseline language coverage in the compiler for the C++11 standard.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
# AC_COMPILE_STDCXX_OX
|
||||
AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
|
||||
ac_cv_cxx_compile_cxx0x_native,
|
||||
# AC_COMPILE_STDCXX_11
|
||||
AC_DEFUN([AC_COMPILE_STDCXX_11], [
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features without additional flags,
|
||||
ac_cv_cxx_compile_cxx11_native,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
AC_TRY_COMPILE([
|
||||
|
@ -1030,16 +1031,16 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no)
|
||||
ac_cv_cxx_compile_cxx11_native=yes, ac_cv_cxx_compile_cxx11_native=no)
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
|
||||
ac_cv_cxx_compile_cxx0x_cxx,
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features with -std=c++11,
|
||||
ac_cv_cxx_compile_cxx11_cxx,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=c++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=c++11"
|
||||
AC_TRY_COMPILE([
|
||||
template <typename T>
|
||||
struct check
|
||||
|
@ -1055,17 +1056,17 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no)
|
||||
ac_cv_cxx_compile_cxx11_cxx=yes, ac_cv_cxx_compile_cxx11_cxx=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
|
||||
ac_cv_cxx_compile_cxx0x_gxx,
|
||||
AC_CACHE_CHECK(if g++ supports C++11 features with -std=gnu++11,
|
||||
ac_cv_cxx_compile_cxx11_gxx,
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([
|
||||
template <typename T>
|
||||
struct check
|
||||
|
@ -1081,33 +1082,33 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
|||
typedef check<int> check_type;
|
||||
check_type c;
|
||||
check_type&& cr = c;],,
|
||||
ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no)
|
||||
ac_cv_cxx_compile_cxx11_gxx=yes, ac_cv_cxx_compile_cxx11_gxx=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
|
||||
if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
|
||||
AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
|
||||
if test "$ac_cv_cxx_compile_cxx11_native" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx11_cxx" = yes ||
|
||||
test "$ac_cv_cxx_compile_cxx11_gxx" = yes; then
|
||||
AC_DEFINE(HAVE_STDCXX_11,,[Define if g++ supports C++11 features. ])
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
|
||||
|
||||
<para>Check for library coverage of the C++0xstandard.
|
||||
<para>Check for library coverage of the C++2011 standard.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
# AC_HEADER_STDCXX_0X
|
||||
AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
||||
AC_CACHE_CHECK(for ISO C++ 0x include files,
|
||||
ac_cv_cxx_stdcxx_0x,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
# AC_HEADER_STDCXX_11
|
||||
AC_DEFUN([AC_HEADER_STDCXX_11], [
|
||||
AC_CACHE_CHECK(for ISO C++11 include files,
|
||||
ac_cv_cxx_stdcxx_11,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
|
||||
AC_TRY_COMPILE([
|
||||
#include <cassert>
|
||||
|
@ -1175,12 +1176,12 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
|||
#include <valarray>
|
||||
#include <vector>
|
||||
],,
|
||||
ac_cv_cxx_stdcxx_0x=yes, ac_cv_cxx_stdcxx_0x=no)
|
||||
ac_cv_cxx_stdcxx_11=yes, ac_cv_cxx_stdcxx_11=no)
|
||||
AC_LANG_RESTORE
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
])
|
||||
if test "$ac_cv_cxx_stdcxx_0x" = yes; then
|
||||
AC_DEFINE(STDCXX_0X_HEADERS,,[Define if ISO C++ 0x header files are present. ])
|
||||
if test "$ac_cv_cxx_stdcxx_11" = yes; then
|
||||
AC_DEFINE(STDCXX_11_HEADERS,,[Define if ISO C++11 header files are present. ])
|
||||
fi
|
||||
])
|
||||
</programlisting>
|
||||
|
@ -1193,11 +1194,11 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [
|
|||
AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
|
||||
AC_CACHE_CHECK(for unordered_map,
|
||||
ac_cv_cxx_unordered_map,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;],
|
||||
ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
@ -1214,11 +1215,11 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [
|
|||
AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
||||
AC_CACHE_CHECK(for unordered_set,
|
||||
ac_cv_cxx_unordered_set,
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_0X])
|
||||
[AC_REQUIRE([AC_COMPILE_STDCXX_11])
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
ac_save_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++11"
|
||||
AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;],
|
||||
ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no)
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
@ -1229,6 +1230,17 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
|||
fi
|
||||
])
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
Some C++11 features first appeared in GCC 4.3 and could be enabled by
|
||||
<option>-std=c++0x</option> and <option>-std=gnu++0x</option> for GCC
|
||||
releases which pre-date the 2011 standard. Those C++11 features and GCC's
|
||||
support for them were still changing until the 2011 standard was finished,
|
||||
but the autoconf checks above could be extended to test for incomplete
|
||||
C++11 support with <option>-std=c++0x</option> and
|
||||
<option>-std=gnu++0x</option>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section><info><title>
|
||||
|
@ -1237,7 +1249,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [
|
|||
|
||||
|
||||
<para>
|
||||
This is a change in behavior from the previous version. Now, most
|
||||
This is a change in behavior from older versions. Now, most
|
||||
<type>iterator_type</type> typedefs in container classes are POD
|
||||
objects, not <type>value_type</type> pointers.
|
||||
</para>
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
<listitem><para>Enables link-type checks for the availability of the
|
||||
clock_gettime clocks, used in the implementation of [time.clock],
|
||||
and of the nanosleep and sched_yield functions, used in the
|
||||
implementation of [thread.thread.this] of the current C++0x draft.
|
||||
implementation of [thread.thread.this] of the 2011 ISO C++ standard.
|
||||
The choice OPTION=yes checks for the availability of the facilities
|
||||
in libc and libposix4. In case of need the latter is also linked
|
||||
to libstdc++ as part of the build process. OPTION=rt also searches
|
||||
|
|
|
@ -267,12 +267,12 @@ which always works correctly.
|
|||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para>In addition, when compiling in C++0x mode, these additional
|
||||
<para>In addition, when compiling in C++11 mode, these additional
|
||||
containers have additional debug capability.
|
||||
</para>
|
||||
|
||||
<table frame="all">
|
||||
<title>Debugging Containers C++0x</title>
|
||||
<title>Debugging Containers C++11</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
|
@ -588,7 +588,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp>
|
|||
|
||||
<para>Achieving link- and run-time coexistence is not a trivial
|
||||
implementation task. To achieve this goal we required a small
|
||||
extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as
|
||||
extension to the GNU C++ compiler (since incorporated into the C++11 language specification, described in the GCC Manual for the C++ language as
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace
|
||||
association</link>), and a complex organization of debug- and
|
||||
release-modes. The end result is that we have achieved per-use
|
||||
|
@ -630,7 +630,7 @@ namespace std
|
|||
defined in the namespace <code>__cxx1998</code>) and also the
|
||||
debug-mode container. The debug-mode container is defined within the
|
||||
namespace <code>__debug</code>, which is associated with namespace
|
||||
<code>std</code> via the C++0x namespace association language feature. This
|
||||
<code>std</code> via the C++11 namespace association language feature. This
|
||||
method allows the debug and release versions of the same component to
|
||||
coexist at compile-time and link-time without causing an unreasonable
|
||||
maintenance burden, while minimizing confusion. Again, this boils down
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
|
||||
<para>
|
||||
Please note that the checks are based on the requirements in the original
|
||||
C++ standard, some of which have changed in the upcoming C++0x revision.
|
||||
C++ standard, some of which have changed in the new C++11 revision.
|
||||
Additionally, some correct code might be rejected by the concept checks,
|
||||
for example template argument types may need to be complete when used in
|
||||
a template definition, rather than at the point of instantiation.
|
||||
|
|
|
@ -399,7 +399,7 @@ Backward include edit.
|
|||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Added in C++0x</para>
|
||||
<para>Added in C++11</para>
|
||||
<para>
|
||||
<filename class="headerfile">auto_ptr.h</filename> and <filename class="headerfile">binders.h</filename>
|
||||
</para>
|
||||
|
|
|
@ -201,7 +201,7 @@ extensions, be aware of two things:
|
|||
The SGI hashing classes <classname>hash_set</classname> and
|
||||
<classname>hash_set</classname> have been deprecated by the
|
||||
unordered_set, unordered_multiset, unordered_map,
|
||||
unordered_multimap containers in TR1 and the upcoming C++0x, and
|
||||
unordered_multimap containers in TR1 and C++11, and
|
||||
may be removed in future releases.
|
||||
</para>
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 01.2 : Status C++ 200x -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx200x.xml">
|
||||
<!-- Section 01.2 : Status C++ 2011 -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2011.xml">
|
||||
</xi:include>
|
||||
|
||||
<!-- Section 01.3 : Status C++ TR1 -->
|
||||
|
@ -577,7 +577,7 @@ requirements of the license of GCC.
|
|||
<emphasis>std::complex over-encapsulated</emphasis>
|
||||
</term>
|
||||
<listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
|
||||
members; in C++0x mode, also adjust the existing
|
||||
members; in C++11 mode, also adjust the existing
|
||||
<code>real()</code> and <code>imag()</code> members and
|
||||
free functions.
|
||||
</para></listitem></varlistentry>
|
||||
|
@ -709,7 +709,7 @@ requirements of the license of GCC.
|
|||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#550">550</link>:
|
||||
<emphasis>What should the return type of pow(float,int) be?</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures.
|
||||
<listitem><para>In C++11 mode, remove the pow(float,int), etc., signatures.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#586">586</link>:
|
||||
|
@ -739,7 +739,7 @@ requirements of the license of GCC.
|
|||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#691">691</link>:
|
||||
<emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type)
|
||||
<listitem><para>In C++11 mode add cbegin(size_type) and cend(size_type)
|
||||
to the unordered containers.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
|
@ -764,7 +764,7 @@ requirements of the license of GCC.
|
|||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#761">761</link>:
|
||||
<emphasis>unordered_map needs an at() member function</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, add at() and at() const.
|
||||
<listitem><para>In C++11 mode, add at() and at() const.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#775">775</link>:
|
||||
|
@ -776,13 +776,13 @@ requirements of the license of GCC.
|
|||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#776">776</link>:
|
||||
<emphasis>Undescribed assign function of std::array</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove assign, add fill.
|
||||
<listitem><para>In C++11 mode, remove assign, add fill.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#781">781</link>:
|
||||
<emphasis>std::complex should add missing C99 functions</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, add std::proj.
|
||||
<listitem><para>In C++11 mode, add std::proj.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#809">809</link>:
|
||||
|
@ -794,7 +794,7 @@ requirements of the license of GCC.
|
|||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#844">844</link>:
|
||||
<emphasis>complex pow return type is ambiguous</emphasis>
|
||||
</term>
|
||||
<listitem><para>In C++0x mode, remove the pow(complex<T>, int) signature.
|
||||
<listitem><para>In C++11 mode, remove the pow(complex<T>, int) signature.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>:
|
||||
|
|
|
@ -1365,7 +1365,7 @@
|
|||
<classname>__gnu_pbds::cc_hash_table</classname> instead of
|
||||
<classname>std::unordered_map</classname>, since <quote>unordered
|
||||
map</quote> does not necessarily mean a hash-based map as implied by
|
||||
the C++ library (C++0x or TR1). For example, list-based associative
|
||||
the C++ library (C++11 or TR1). For example, list-based associative
|
||||
containers, which are very useful for the construction of
|
||||
"multimaps," are also unordered.
|
||||
</para>
|
||||
|
|
|
@ -32,14 +32,6 @@ and implements shared ownership semantics.
|
|||
circular-linked-list.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
At the time of writing the C++0x working paper doesn't mention how
|
||||
threads affect shared_ptr, but it is likely to follow the existing
|
||||
practice set by <classname>boost::shared_ptr</classname>. The
|
||||
shared_ptr in libstdc++ is derived from Boost's, so the same rules
|
||||
apply.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
</section>
|
||||
|
@ -163,10 +155,10 @@ that simplifies the implementation slightly.
|
|||
|
||||
|
||||
<para>
|
||||
C++0x-only features are: rvalue-ref/move support, allocator support,
|
||||
C++11-only features are: rvalue-ref/move support, allocator support,
|
||||
aliasing constructor, make_shared & allocate_shared. Additionally,
|
||||
the constructors taking <classname>auto_ptr</classname> parameters are
|
||||
deprecated in C++0x mode.
|
||||
deprecated in C++11 mode.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -293,20 +285,20 @@ used when libstdc++ is built without <literal>--enable-threads</literal>.
|
|||
</para>
|
||||
</section>
|
||||
|
||||
<section><info><title>Dual C++0x and TR1 Implementation</title></info>
|
||||
<section><info><title>Dual C++11 and TR1 Implementation</title></info>
|
||||
|
||||
|
||||
<para>
|
||||
The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x
|
||||
The interface of <classname>tr1::shared_ptr</classname> was extended for C++11
|
||||
with support for rvalue-references and the other features from N2351.
|
||||
The <classname>_Sp_counted_base</classname> base class is implemented in
|
||||
<filename>tr1/boost_sp_shared_count.h</filename> and is common to the TR1
|
||||
and C++0x versions of <classname>shared_ptr</classname>.
|
||||
and C++11 versions of <classname>shared_ptr</classname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The classes derived from <classname>_Sp_counted_base</classname> (see Class Hierarchy
|
||||
above) and <classname>__shared_count</classname> are implemented separately for C++0x
|
||||
above) and <classname>__shared_count</classname> are implemented separately for C++11
|
||||
and TR1, in <filename>bits/shared_ptr.h</filename> and
|
||||
<filename>tr1/shared_ptr.h</filename> respectively.
|
||||
</para>
|
||||
|
@ -314,9 +306,9 @@ and TR1, in <filename>bits/shared_ptr.h</filename> and
|
|||
<para>
|
||||
The TR1 implementation is considered relatively stable, so is unlikely to
|
||||
change unless bug fixes require it. If the code that is common to both
|
||||
C++0x and TR1 modes needs to diverge further then it might be necessary to
|
||||
C++11 and TR1 versions needs to diverge further then it might be necessary to
|
||||
duplicate <classname>_Sp_counted_base</classname> and only make changes to
|
||||
the C++0x version.
|
||||
the C++11 version.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
@ -332,9 +324,9 @@ the C++0x version.
|
|||
<para>
|
||||
As noted in N2351, these functions can be implemented non-intrusively using
|
||||
the alias constructor. However the aliasing constructor is only available
|
||||
in C++0x mode, so in TR1 mode these casts rely on three non-standard
|
||||
in C++11 mode, so in TR1 mode these casts rely on three non-standard
|
||||
constructors in shared_ptr and __shared_ptr.
|
||||
In C++0x mode these constructors and the related tag types are not needed.
|
||||
In C++11 mode these constructors and the related tag types are not needed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -431,7 +423,7 @@ the following types, depending on how the shared_ptr is constructed.
|
|||
|
||||
<para>
|
||||
The <emphasis><classname>shared_ptr</classname> atomic access</emphasis>
|
||||
clause in the C++0x working draft is not implemented in GCC.
|
||||
clause in the C++11 standard is not implemented in GCC.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -445,7 +437,7 @@ the following types, depending on how the shared_ptr is constructed.
|
|||
<para>
|
||||
Unlike Boost, this implementation does not use separate classes
|
||||
for the pointer+deleter and pointer+deleter+allocator cases in
|
||||
C++0x mode, combining both into _Sp_counted_deleter and using
|
||||
C++11 mode, combining both into _Sp_counted_deleter and using
|
||||
<classname>allocator</classname> when the user doesn't specify
|
||||
an allocator. If it was found to be beneficial an additional
|
||||
class could easily be added. With the current implementation,
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
|
||||
xml:id="status.iso.200x" xreflabel="Status C++ 200x">
|
||||
<?dbhtml filename="status_iso_cxx200x.html"?>
|
||||
xml:id="status.iso.2011" xreflabel="Status C++ 2011">
|
||||
<?dbhtml filename="status_iso_cxx2011.html"?>
|
||||
|
||||
<info><title>C++ 200x</title>
|
||||
<info><title>C++ 2011</title>
|
||||
<keywordset>
|
||||
<keyword>
|
||||
ISO C++
|
||||
</keyword>
|
||||
<keyword>
|
||||
200x
|
||||
2011
|
||||
</keyword>
|
||||
</keywordset>
|
||||
</info>
|
||||
|
@ -20,8 +20,8 @@ Final Draft International Standard, Standard for Programming Language C++
|
|||
</para>
|
||||
|
||||
<para>
|
||||
In this implementation <literal>-std=gnu++0x</literal> or
|
||||
<literal>-std=c++0x</literal> flags must be used to enable language
|
||||
In this implementation <literal>-std=gnu++11</literal> or
|
||||
<literal>-std=c++11</literal> flags must be used to enable language
|
||||
and library
|
||||
features. See <link linkend="manual.intro.using.flags">dialect</link>
|
||||
options. The pre-defined symbol
|
||||
|
@ -30,7 +30,7 @@ presence of the required flag.
|
|||
</para>
|
||||
|
||||
<para>
|
||||
This page describes the C++0x support in mainline GCC SVN, not in any
|
||||
This page describes the C++11 support in mainline GCC SVN, not in any
|
||||
particular release.
|
||||
</para>
|
||||
|
||||
|
@ -44,7 +44,7 @@ particular release.
|
|||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
-->
|
||||
<table frame="all">
|
||||
<title>C++ 200x Implementation Status</title>
|
||||
<title>C++ 2011 Implementation Status</title>
|
||||
|
||||
<tgroup cols="4" align="left" colsep="0" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
|
@ -1122,10 +1122,11 @@ particular release.
|
|||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<?dbhtml bgcolor="#B0B0B0" ?>
|
||||
<entry>21.4</entry>
|
||||
<entry>Class template <code>basic_string</code></entry>
|
||||
<entry>Y</entry>
|
||||
<entry/>
|
||||
<entry>Partial</entry>
|
||||
<entry>Missing pop_back</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>21.5</entry>
|
|
@ -359,7 +359,7 @@ stringtok(Container &container, string const &in,
|
|||
entry</link>) but the regular copy constructor cannot be used
|
||||
because libstdc++'s <code>string</code> is Copy-On-Write.
|
||||
</para>
|
||||
<para>In <link linkend="status.iso.200x">C++0x</link> mode you can call
|
||||
<para>In <link linkend="status.iso.2011">C++11</link> mode you can call
|
||||
<code>s.shrink_to_fit()</code> to achieve the same effect as
|
||||
<code>s.reserve(s.size())</code>.
|
||||
</para>
|
||||
|
|
|
@ -896,7 +896,7 @@ as the allocator type.
|
|||
|
||||
<listitem>
|
||||
<para>
|
||||
C++0x Container Requirements.
|
||||
C++11 Container Requirements.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -924,7 +924,7 @@ as the allocator type.
|
|||
|
||||
|
||||
<section xml:id="test.exception.safety.containers"><info><title>
|
||||
C++0x Requirements Test Sequence Descriptions
|
||||
C++11 Requirements Test Sequence Descriptions
|
||||
</title></info>
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<para>
|
||||
The set of features available in the GNU C++ library is shaped
|
||||
by
|
||||
several <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC
|
||||
several <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Invoking-GCC.html">GCC
|
||||
Command Options</link>. Options that impact libstdc++ are
|
||||
enumerated and detailed in the table below.
|
||||
</para>
|
||||
|
@ -43,12 +43,12 @@
|
|||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>-std=c++0x</literal></entry>
|
||||
<entry>Use the working draft of the upcoming ISO C++0x standard.</entry>
|
||||
<entry><literal>-std=c++11</literal></entry>
|
||||
<entry>Use the 2011 ISO C++ standard.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>-std=gnu++0x</literal></entry>
|
||||
<entry><literal>-std=gnu++11</literal></entry>
|
||||
<entry>As directly above, with GNU extensions.</entry>
|
||||
</row>
|
||||
|
||||
|
@ -64,7 +64,7 @@
|
|||
|
||||
<row>
|
||||
<entry><literal>-pthread</literal> or <literal>-pthreads</literal></entry>
|
||||
<entry>For ISO C++0x <thread>, <future>,
|
||||
<entry>For ISO C++11 <thread>, <future>,
|
||||
<mutex>, or <condition_variable>.</entry>
|
||||
</row>
|
||||
|
||||
|
@ -108,8 +108,7 @@
|
|||
|
||||
<para>
|
||||
Two dialects of standard headers are supported, corresponding to
|
||||
the 1998 standard as updated for 2003, and the draft of the
|
||||
upcoming 200x standard.
|
||||
the 1998 standard as updated for 2003, and the current 2011 standard.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -218,13 +217,13 @@
|
|||
</table>
|
||||
|
||||
<para>
|
||||
C++0x include files. These are only available in C++0x compilation
|
||||
mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
|
||||
C++11 include files. These are only available in C++11 compilation
|
||||
mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
|
||||
</para>
|
||||
|
||||
<para/>
|
||||
<table frame="all">
|
||||
<title>C++ 200x Library Headers</title>
|
||||
<title>C++ 2011 Library Headers</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
|
@ -310,7 +309,7 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>.
|
|||
<para/>
|
||||
|
||||
<table frame="all">
|
||||
<title>C++ 200x Library Headers for C Library Facilities</title>
|
||||
<title>C++ 2011 Library Headers for C Library Facilities</title>
|
||||
|
||||
<tgroup cols="5" align="left" colsep="1" rowsep="1">
|
||||
<colspec colname="c1"/>
|
||||
|
@ -632,22 +631,22 @@ possible. It's an all-or-nothing affair. Thus, code like
|
|||
#include <functional>
|
||||
</programlisting>
|
||||
|
||||
<para>Implies C++0x mode. To use the entities in <array>, the C++0x
|
||||
compilation mode must be used, which implies the C++0x functionality
|
||||
<para>Implies C++11 mode. To use the entities in <array>, the C++11
|
||||
compilation mode must be used, which implies the C++11 functionality
|
||||
(and deprecations) in <functional> will be present.
|
||||
</para>
|
||||
|
||||
<para>Second, the other headers can be included with either dialect of
|
||||
the standard headers, although features and types specific to C++0x
|
||||
are still only enabled when in C++0x compilation mode. So, to use
|
||||
the standard headers, although features and types specific to C++11
|
||||
are still only enabled when in C++11 compilation mode. So, to use
|
||||
rvalue references with <code>__gnu_cxx::vstring</code>, or to use the
|
||||
debug-mode versions of <code>std::unordered_map</code>, one must use
|
||||
the <code>std=gnu++0x</code> compiler flag. (Or <code>std=c++0x</code>, of course.)
|
||||
the <code>std=gnu++11</code> compiler flag. (Or <code>std=c++11</code>, of course.)
|
||||
</para>
|
||||
|
||||
<para>A special case of the second rule is the mixing of TR1 and C++0x
|
||||
<para>A special case of the second rule is the mixing of TR1 and C++11
|
||||
facilities. It is possible (although not especially prudent) to
|
||||
include both the TR1 version and the C++0x version of header in the
|
||||
include both the TR1 version and the C++11 version of header in the
|
||||
same translation unit:
|
||||
</para>
|
||||
|
||||
|
@ -656,7 +655,7 @@ same translation unit:
|
|||
#include <type_traits>
|
||||
</programlisting>
|
||||
|
||||
<para> Several parts of C++0x diverge quite substantially from TR1 predecessors.
|
||||
<para> Several parts of C++11 diverge quite substantially from TR1 predecessors.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
@ -841,7 +840,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
|
|||
removes older ARM-style iostreams code, and other anachronisms
|
||||
from the API. This macro is dependent on the version of the
|
||||
standard being tracked, and as a result may give different results for
|
||||
<code>-std=c++98</code> and <code>-std=c++0x</code>. This may
|
||||
<code>-std=c++98</code> and <code>-std=c++11</code>. This may
|
||||
be useful in updating old C++ code which no longer meet the
|
||||
requirements of the language, or for checking current code
|
||||
against new language standards.
|
||||
|
@ -1093,7 +1092,7 @@ namespace gtk
|
|||
|
||||
<para>
|
||||
In the
|
||||
C++0x <link linkend="manual.intro.using.flags">dialect</link> add
|
||||
C++11 <link linkend="manual.intro.using.flags">dialect</link> add
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
|
Loading…
Reference in New Issue