Update libstdc++ manual in preparation for GCC 8 release
* doc/xml/manual/abi.xml: Document header locations in recent releases. * doc/xml/manual/evolution.xml: Add API changes since GCC 5. * doc/xml/manual/spine.xml: Update copyright years. * doc/xml/manual/strings.xml: Adjust tolower example to avoid undefined behaviour. * doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests. * doc/html/*: Regenerate. From-SVN: r259308
This commit is contained in:
parent
f70bbfb3c0
commit
52556a878d
27 changed files with 281 additions and 46 deletions
|
@ -1,3 +1,14 @@
|
|||
2018-04-11 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* doc/xml/manual/abi.xml: Document header locations in recent
|
||||
releases.
|
||||
* doc/xml/manual/evolution.xml: Add API changes since GCC 5.
|
||||
* doc/xml/manual/spine.xml: Update copyright years.
|
||||
* doc/xml/manual/strings.xml: Adjust tolower example to avoid
|
||||
undefined behaviour.
|
||||
* doc/xml/manual/test.xml: Update outdated notes on VERIFY in tests.
|
||||
* doc/html/*: Regenerate.
|
||||
|
||||
2018-04-10 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* doc/xml/faq.xml: Update links to archived copy of SGI STL docs.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
,
|
||||
2014
|
||||
|
||||
<a class="link" href="http://www.fsf.org/" target="_top">FSF
|
||||
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||
</a>
|
||||
</p></div><div><div class="legalnotice"><a id="id-1.4.1.2.2"></a><p>
|
||||
<a class="link" href="manual/license.html" title="License">License
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Frequently Asked Questions</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="index.html" title="The GNU C++ Library" /><link rel="up" href="bk03.html" title="" /><link rel="prev" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Frequently Asked Questions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="article"><div class="titlepage"><div><div><h1 class="title"><a id="faq"></a>Frequently Asked Questions</h1></div><div><p class="copyright">Copyright ©
|
||||
2008-2018
|
||||
|
||||
<a class="link" href="http://www.fsf.org" target="_top">FSF</a>
|
||||
<a class="link" href="https://www.fsf.org" target="_top">FSF</a>
|
||||
</p></div></div><hr /></div><div class="qandaset"><a id="faq.faq"></a><dl><dt></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what">
|
||||
What is libstdc++?
|
||||
</a></dt><dt>1.2. <a href="faq.html#faq.why">
|
||||
|
@ -796,9 +796,9 @@
|
|||
<code class="classname">std::thread</code>.
|
||||
</p><p>
|
||||
Libstdc++-v3 incorporates a lot of code from
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/" target="_top">the SGI STL</a>
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">the SGI STL</a>
|
||||
(the final merge was from
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/whats_new.html" target="_top">release 3.3</a>).
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/whats_new.html" target="_top">release 3.3</a>).
|
||||
The code in libstdc++ contains many fixes and changes compared to the
|
||||
original SGI code.
|
||||
</p><p>
|
||||
|
@ -814,7 +814,7 @@
|
|||
and <a class="link" href="manual/backwards.html" title="Backwards Compatibility">backwards
|
||||
compatibility</a> documentation.
|
||||
</p><p>
|
||||
The <a class="link" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
|
||||
The <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/FAQ.html" target="_top">FAQ</a>
|
||||
for SGI's STL is still recommended reading.
|
||||
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.extensions_and_backwards_compat"></a><a id="q-extensions_and_backwards_compat"></a><p><strong>7.4.</strong></p></td><td align="left" valign="top"><p>
|
||||
Extensions and Backward Compatibility
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -226,7 +226,7 @@ compatible.
|
|||
file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before GCC 3.4.0).
|
||||
</p><p>
|
||||
C++ includes are versioned as follows:
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.1: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.2: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.3: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.4: include/g++-v3</p></li><li class="listitem"><p>GCC 3.1.0: include/g++-v3</p></li><li class="listitem"><p>GCC 3.1.1: include/c++/3.1.1</p></li><li class="listitem"><p>GCC 3.2.0: include/c++/3.2</p></li><li class="listitem"><p>GCC 3.2.1: include/c++/3.2.1</p></li><li class="listitem"><p>GCC 3.2.2: include/c++/3.2.2</p></li><li class="listitem"><p>GCC 3.2.3: include/c++/3.2.3</p></li><li class="listitem"><p>GCC 3.3.0: include/c++/3.3</p></li><li class="listitem"><p>GCC 3.3.1: include/c++/3.3.1</p></li><li class="listitem"><p>GCC 3.3.2: include/c++/3.3.2</p></li><li class="listitem"><p>GCC 3.3.3: include/c++/3.3.3</p></li><li class="listitem"><p>GCC 3.4.x: include/c++/3.4.x</p></li><li class="listitem"><p>GCC 4.x.y: include/c++/4.x.y</p></li><li class="listitem"><p>GCC 5.x.0: include/c++/5.x.0</p></li></ul></div><p></p></li></ol></div><p>
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.1: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.2: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.3: include/g++-v3</p></li><li class="listitem"><p>GCC 3.0.4: include/g++-v3</p></li><li class="listitem"><p>GCC 3.1.0: include/g++-v3</p></li><li class="listitem"><p>GCC 3.1.1: include/c++/3.1.1</p></li><li class="listitem"><p>GCC 3.2.0: include/c++/3.2</p></li><li class="listitem"><p>GCC 3.2.1: include/c++/3.2.1</p></li><li class="listitem"><p>GCC 3.2.2: include/c++/3.2.2</p></li><li class="listitem"><p>GCC 3.2.3: include/c++/3.2.3</p></li><li class="listitem"><p>GCC 3.3.0: include/c++/3.3</p></li><li class="listitem"><p>GCC 3.3.1: include/c++/3.3.1</p></li><li class="listitem"><p>GCC 3.3.2: include/c++/3.3.2</p></li><li class="listitem"><p>GCC 3.3.3: include/c++/3.3.3</p></li><li class="listitem"><p>GCC 3.4.x: include/c++/3.4.x</p></li><li class="listitem"><p>GCC 4.x.y: include/c++/4.x.y</p></li><li class="listitem"><p>GCC 5.x.0: include/c++/5.x.0</p></li><li class="listitem"><p>GCC 6.x.0: include/c++/6.x.0</p></li><li class="listitem"><p>GCC 7.x.0: include/c++/7.x.0</p></li><li class="listitem"><p>GCC 8.x.0: include/c++/8.x.0</p></li></ul></div><p></p></li></ol></div><p>
|
||||
Taken together, these techniques can accurately specify interface
|
||||
and implementation changes in the GNU C++ tools themselves. Used
|
||||
properly, they allow both the GNU C++ tools implementation, and
|
||||
|
|
|
@ -263,18 +263,21 @@ now defaults to zero.
|
|||
</p><p>New --enable-libstdcxx-verbose configure option</p><p>
|
||||
The --enable-libstdcxx-time configure option becomes unnecessary given a
|
||||
sufficiently recent glibc.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_490"></a><code class="constant">4.9</code></h3></div></div></div><p> Implementation of <code class="classname">regex</code> completed. </p><p> C++14 library and TS implementations are added. </p><p> <code class="function">copy_exception</code> deprecated. </p><p> <code class="classname">__gnu_cxx::array_allocator</code> deprecated. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_50"></a><code class="constant">5</code></h3></div></div></div><p>
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_490"></a><code class="constant">4.9</code></h3></div></div></div><p> Implementation of <code class="classname">regex</code> completed. </p><p> C++14 library and TS implementations are added. </p><p> <code class="function">copy_exception</code> deprecated. </p><p> <code class="classname">__gnu_cxx::array_allocator</code> deprecated. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_51"></a><code class="constant">5</code></h3></div></div></div><p>
|
||||
ABI transition adds new implementations of several components, using the
|
||||
<code class="code">abi_tag</code> attribute and the <code class="code">__cxx11</code> inline
|
||||
namespace to distinguish the new entities from the old ones.
|
||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||
Use of the new or old ABI can be selected per-translation unit with the
|
||||
<span class="symbol">_GLIBCXX_USE_CXX11_ABI</span> macro.
|
||||
<a class="xref" href="using_macros.html" title="Macros">Macros</a>.
|
||||
</p></li><li class="listitem"><p>
|
||||
New non-reference-counted <code class="classname">string</code> implementation.
|
||||
</p></li><li class="listitem"><p>
|
||||
New <code class="classname">list</code> implementation containing a new
|
||||
data member in order to provide O(1) <code class="function">size()</code>.
|
||||
</p></li><li class="listitem"><p>
|
||||
New <code class="classname">ios_base::failure</code> implementation inheriting
|
||||
from <code class="classname">system_error</code>.
|
||||
</p></li></ul></div><p>
|
||||
C++11 support completed (movable iostreams, new I/O manipulators,
|
||||
Unicode conversion utilities, atomic operations for
|
||||
|
@ -290,4 +293,67 @@ now defaults to zero.
|
|||
<code class="classname">has_trivial_default_constructor</code>,
|
||||
<code class="classname">has_trivial_copy_constructor</code> and
|
||||
<code class="classname">has_trivial_copy_assign</code> deprecated.
|
||||
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="api.rel_53"></a><code class="constant">5.3</code></h4></div></div></div><p> Experimental implementation of the C++ Filesystem TS added. </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_61"></a><code class="constant">6</code></h3></div></div></div><p> C++14 support completed. </p><p>
|
||||
Support for mathematical special functions (ISO/IEC 29124:2010) added.
|
||||
</p><p>
|
||||
Assertions to check function preconditions can be enabled by defining the
|
||||
<a class="xref" href="using_macros.html" title="Macros">Macros</a>.
|
||||
The initial set of assertions are a subset of the checks enabled by
|
||||
the Debug Mode, but without the ABI changes and changes to algorithmic
|
||||
complexity that are caused by enabling the full Debug Mode.
|
||||
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_71"></a><code class="constant">7</code></h3></div></div></div><p>
|
||||
The type of exception thrown by iostreams changed to the <code class="code">cxx11</code>
|
||||
ABI version of <code class="classname">std::ios_base::failure</code>.
|
||||
</p><p>
|
||||
Experimental C++17 support added, including most new library features.
|
||||
The meaning of <code class="classname">shared_ptr<T[]></code> changed to
|
||||
match the C++17 semantics.
|
||||
</p><p>
|
||||
<a class="xref" href="using_macros.html" title="Macros">Macros</a> added.
|
||||
</p><p>
|
||||
<code class="classname">has_trivial_default_constructor</code>,
|
||||
<code class="classname">has_trivial_copy_constructor</code> and
|
||||
<code class="classname">has_trivial_copy_assign</code> removed.
|
||||
</p><p> Profile Mode was deprecated. </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="api.rel_73"></a><code class="constant">7.3</code></h4></div></div></div><p>
|
||||
Including new C++14 or C++17 headers without a suitable <code class="option">-std</code>
|
||||
no longer causes compilation to fail via <code class="literal">#error</code>.
|
||||
Instead the header is simply empty and doesn't define anything.
|
||||
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_81"></a><code class="constant">8</code></h3></div></div></div><p>
|
||||
The exceptions thrown by iostreams can now be caught by handlers for either
|
||||
version of <code class="classname">std::ios_base::failure</code>.
|
||||
</p><p>
|
||||
Experimental implementation of the C++17 Filesystem library added.
|
||||
</p><p>
|
||||
AddressSanitizer annotations added to <code class="classname">std::vector</code>
|
||||
to detect out-of-range accesses to the unused capacity of a vector.
|
||||
</p><p>
|
||||
<code class="function">std::char_traits<char16_t>::to_int_type(u'\uFFFF')</code>
|
||||
now returns <code class="literal">0xFFFD</code>, as <code class="literal">0xFFFF</code> is
|
||||
used for <code class="function">std::char_traits<char16_t>::eof()</code>.
|
||||
</p><p>
|
||||
The extension allowing arithmetic on
|
||||
<code class="classname">std::atomic<void*></code> and types like
|
||||
<code class="classname">std::atomic<R(*)()></code> was deprecated.
|
||||
</p><p>
|
||||
The <code class="function">std::uncaught_exception</code> function was deprecated
|
||||
for C++17 mode.
|
||||
</p><p>
|
||||
The nested typedefs <span class="type">std::hash::result_type</span> and
|
||||
<span class="type">std::hash::argument_type</span> were deprecated for C++17 mode.
|
||||
</p><p>
|
||||
The deprecated iostream members <span class="type">ios_base::io_state</span>,
|
||||
<span class="type">ios_base::open_mode</span>, <span class="type">ios_base::seek_dir</span>, and
|
||||
<code class="function">basic_streambuf::stossc</code> were removed for C++17 mode.
|
||||
</p><p>
|
||||
The non-standard C++0x <code class="function">std::copy_exception</code> function
|
||||
was removed.
|
||||
</p><p>
|
||||
For <code class="option">-std=c++11</code>, <code class="option">-std=c++14</code>, and
|
||||
<code class="option">-std=c++17</code> modes the <code class="filename"><complex.h></code>
|
||||
header no longer includes the C99 <code class="filename"><complex.h></code>
|
||||
header.
|
||||
</p><p>
|
||||
For the non-default <code class="option">--enable-symvers=gnu-versioned-namespace</code>
|
||||
configuration, the shared library SONAME has been changed to
|
||||
<code class="filename">libstdc++.so.8</code>.
|
||||
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="abi.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ABI Policy and Guidelines </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Backwards Compatibility</td></tr></table></div></body></html>
|
|
@ -16,7 +16,7 @@
|
|||
Existing tests
|
||||
</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
|
||||
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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_50"><code class="constant">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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><code class="code">isspace</code> from <code class="filename"><cctype></code> is a macro
|
||||
</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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><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#backwards.second.at">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#backwards.second.eof">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.stringclear">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.ostreamform_istreamscan">
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
|
|
|
@ -116,7 +116,7 @@ manuals instead of proprietary ones. One way you can help this is to
|
|||
check the distribution terms of a manual before you buy it, and
|
||||
prefer copylefted manuals to non-copylefted ones.
|
||||
</p><p>
|
||||
[Note: We now maintain a <a class="link" href="http://www.fsf.org/licensing/doc/other-free-books.html" target="_top">web page
|
||||
[Note: We now maintain a <a class="link" href="https://www.fsf.org/licensing/doc/other-free-books.html" target="_top">web page
|
||||
that lists free books available from other publishers</a>].
|
||||
</p><p>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</p><p>Verbatim copying and distribution of this entire article are
|
||||
permitted worldwide, without royalty, in any medium, provided this
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
Existing tests
|
||||
</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
|
||||
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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_50"><code class="constant">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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><code class="code">isspace</code> from <code class="filename"><cctype></code> is a macro
|
||||
</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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><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#backwards.second.at">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#backwards.second.eof">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.stringclear">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.ostreamform_istreamscan">
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
|
|
|
@ -331,7 +331,7 @@ particular <span class="quote">“<span class="quote">info iostream</span>”</s
|
|||
against the gthr.h abstraction layer which is provided by gcc. A
|
||||
minor problem that pops up every so often is different
|
||||
interpretations of what "thread-safe" means for a
|
||||
library (not a general program). We currently use the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="_top">same
|
||||
library (not a general program). We currently use the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/thread_safety.html" target="_top">same
|
||||
definition that SGI</a> uses for their STL subset. However,
|
||||
the exception for read-only containers only applies to the STL
|
||||
components. This definition is widely-used and something similar
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="section"><a href="containers.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt><dd><dl><dt><span class="section"><a href="associative.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="section"><a href="associative.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="unordered_associative.html">Unordered Associative</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.insert_hints">Insertion Hints</a></span></dt><dt><span class="section"><a href="unordered_associative.html#containers.unordered.hash">Hash Code</a></span></dt><dd><dl><dt><span class="section"><a href="unordered_associative.html#containers.unordered.cache">Hash Code Caching Policy</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="section"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.sequences"></a>Sequences</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"></a>list</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p>
|
||||
Yes it is, at least using the <a class="xref" href="using_dual_abi.html" title="Dual ABI">Dual ABI</a>, and that's okay. This is a decision that we preserved
|
||||
when we imported SGI's STL implementation. The following is
|
||||
quoted from <a class="link" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>:
|
||||
quoted from <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>:
|
||||
</p><div class="blockquote"><blockquote class="blockquote"><p>
|
||||
The size() member function, for list and slist, takes time
|
||||
proportional to the number of elements in the list. This was a
|
||||
|
|
|
@ -391,7 +391,7 @@ test02()
|
|||
Hewlett-Packard STL. Though it inspired much work in this area, it
|
||||
has not been kept up-to-date for use with modern compilers or C++
|
||||
standard library implementations.</p></li><li class="listitem"><p><a class="link" href="http://www.stlport.org/" target="_top">STLport</a>: STLport is a free
|
||||
implementation of the C++ standard library derived from the <a class="link" href="http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
|
||||
implementation of the C++ standard library derived from the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">SGI implementation</a>, and
|
||||
ported to many other platforms. It includes a debug mode that uses a
|
||||
wrapper model (that in some ways inspired the libstdc++ debug mode
|
||||
design), although at the time of this writing the debug mode is
|
||||
|
|
|
@ -527,7 +527,7 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal
|
|||
</set><br />
|
||||
</p></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.markup"></a>Markup By Example</h4></div></div></div><p>
|
||||
Complete details on Docbook markup can be found in the
|
||||
<a class="link" href="http://tdg.docbook.org/tdg/5.0/ref-elements.html" target="_top">DocBook Element Reference</a>.
|
||||
<a class="link" href="https://tdg.docbook.org/tdg/5.0/ref-elements.html" target="_top">DocBook Element Reference</a>.
|
||||
An incomplete reference for HTML to Docbook conversion is
|
||||
detailed in the table below.
|
||||
</p><div class="table"><a id="table.docbook_cmp"></a><p class="title"><strong>Table B.4. HTML to Docbook XML Markup Comparison</strong></p><div class="table-contents"><table class="table" summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>,
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
The operation functor must be associative.
|
||||
</p><p>The <code class="code">iota</code> function wins the award for Extension With the
|
||||
Coolest Name (the name comes from Ken Iverson's APL language.) As
|
||||
described in the <a class="link" href="http://www.sgi.com/tech/stl/iota.html" target="_top">SGI
|
||||
described in the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/iota.html" target="_top">SGI
|
||||
documentation</a>, it "assigns sequentially increasing values to a range.
|
||||
That is, it assigns <code class="code">value</code> to <code class="code">*first</code>,
|
||||
<code class="code">value + 1</code> to<code class="code"> *(first + 1)</code> and so on."
|
||||
|
|
|
@ -28,12 +28,12 @@
|
|||
and sets.
|
||||
</p><p>Each of the associative containers map, multimap, set, and multiset
|
||||
have a counterpart which uses a
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/HashFunction.html" target="_top">hashing
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/HashFunction.html" target="_top">hashing
|
||||
function</a> to do the arranging, instead of a strict weak ordering
|
||||
function. The classes take as one of their template parameters a
|
||||
function object that will return the hash value; by default, an
|
||||
instantiation of
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/hash.html" target="_top">hash</a>.
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/hash.html" target="_top">hash</a>.
|
||||
You should specialize this functor for your class, or define your own,
|
||||
before trying to use one of the hashing classes.
|
||||
</p><p>The hashing classes support all the usual associative container
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
|
||||
<a class="link" href="http://www.fsf.org" target="_top">FSF</a>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library Manual</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="../index.html" title="The GNU C++ Library" /><link rel="prev" href="../index.html" title="The GNU C++ Library" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="manual"></a>The GNU C++ Library Manual</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname"></span> <span class="surname"></span></h3></div><div class="author"><h3 class="author"><span class="firstname">Paolo</span> <span class="surname">Carlini</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Phil</span> <span class="surname">Edwards</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Doug</span> <span class="surname">Gregor</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Dhruv</span> <span class="surname">Matani</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jason</span> <span class="surname">Merrill</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Mark</span> <span class="surname">Mitchell</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Nathan</span> <span class="surname">Myers</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Felix</span> <span class="surname">Natter</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Olsson</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Ami</span> <span class="surname">Tavory</span></h3></div><div class="author"><h3 class="author"><span class="firstname">Jonathan</span> <span class="surname">Wakely</span></h3></div></div></div><div><p class="copyright">Copyright © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
|
||||
<a class="link" href="https://www.fsf.org" target="_top">FSF</a>
|
||||
</p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I.
|
||||
Introduction
|
||||
|
||||
|
@ -123,7 +123,7 @@
|
|||
Existing tests
|
||||
</a></span></dt><dt><span class="section"><a href="test.html#test.exception.safety.containers">
|
||||
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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_50"><code class="constant">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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><code class="code">isspace</code> from <code class="filename"><cctype></code> is a macro
|
||||
</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><dt><span class="section"><a href="api.html#api.rel_460"><code class="constant">4.6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_470"><code class="constant">4.7</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_480"><code class="constant">4.8</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_490"><code class="constant">4.9</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_51"><code class="constant">5</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_53"><code class="constant">5.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_61"><code class="constant">6</code></a></span></dt><dt><span class="section"><a href="api.html#api.rel_71"><code class="constant">7</code></a></span></dt><dd><dl><dt><span class="section"><a href="api.html#api.rel_73"><code class="constant">7.3</code></a></span></dt></dl></dd><dt><span class="section"><a href="api.html#api.rel_81"><code class="constant">8</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#backwards.first.ios_base">No <code class="code">ios_base</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.first.cout_cin">No <code class="code">cout</code> in <code class="filename"><ostream.h></code>, no <code class="code">cin</code> in <code class="filename"><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#backwards.second.std">Namespace <code class="code">std::</code> not supported</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.iterators">Illegal iterator usage</a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.isspace"><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#backwards.second.at">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#backwards.second.eof">No <code class="code">std::char_traits<char>::eof</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.stringclear">No <code class="code">string::clear</code></a></span></dt><dt><span class="section"><a href="backwards.html#backwards.second.ostreamform_istreamscan">
|
||||
Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code>
|
||||
extensions
|
||||
|
|
|
@ -15,7 +15,7 @@ GCC RUNTIME LIBRARY EXCEPTION<br />
|
|||
<br />
|
||||
Version 3.1, 31 March 2009<br />
|
||||
<br />
|
||||
Copyright (C) 2009 <a class="link" href="http://www.fsf.org" target="_top">Free Software Foundation, Inc.</a><br />
|
||||
Copyright (C) 2009 <a class="link" href="https://www.fsf.org" target="_top">Free Software Foundation, Inc.</a><br />
|
||||
<br />
|
||||
Everyone is permitted to copy and distribute verbatim copies of this<br />
|
||||
license document, but changing it is not allowed.<br />
|
||||
|
|
|
@ -1213,7 +1213,7 @@
|
|||
</span>. </span><span class="publisher"><span class="publishername">
|
||||
In Workshop on ML
|
||||
. </span></span></p></div><div class="biblioentry"><a id="biblio.sgi_stl"></a><p>[biblio.sgi_stl] <span class="title"><em>
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/" target="_top">
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/" target="_top">
|
||||
Standard Template Library Programmer's Guide
|
||||
</a>
|
||||
</em>. </span><span class="author"><span class="firstname">
|
||||
|
|
|
@ -70,7 +70,8 @@
|
|||
</p><pre class="programlisting">
|
||||
char toLower (char c)
|
||||
{
|
||||
return std::tolower(c);
|
||||
// std::tolower(c) is undefined if c < 0 so cast to unsigned char.
|
||||
return std::tolower((unsigned char)c);
|
||||
} </pre><p>(Thanks to James Kanze for assistance and suggestions on all of this.)
|
||||
</p><p>Another common operation is trimming off excess whitespace. Much
|
||||
like transformations, this task is trivial with the use of string's
|
||||
|
|
|
@ -392,15 +392,23 @@ cat 27_io/objects/char/3_xin.in | a.out</pre></dd><dt><span class="term"><code c
|
|||
Tests that need to perform runtime checks should use the
|
||||
<code class="literal">VERIFY</code> macro, defined in the
|
||||
<code class="filename"><testsuite_hooks.h></code> header.
|
||||
This usually expands to the standard <code class="literal">assert</code> macro, but
|
||||
allows targets to define it to something different. In order to support
|
||||
the alternative expansions of <code class="literal">VERIFY</code>, before any
|
||||
use of the macro there must be a variable called <code class="varname">test</code>
|
||||
in scope, which is usually defined like so (the attribute avoids
|
||||
This expands to a custom assertion using
|
||||
<code class="function">__builtin_printf</code> and
|
||||
<code class="function">__builtin_abort</code>
|
||||
(to avoid using <code class="literal">assert</code> and being affected by
|
||||
<code class="literal">NDEBUG</code>).
|
||||
</p><p>
|
||||
Prior to GCC 7.1, <code class="literal">VERIFY</code> was defined differently.
|
||||
It usually expanded to the standard <code class="literal">assert</code> macro, but
|
||||
allowed targets to define it to something different. In order to support
|
||||
the alternative expansions of <code class="literal">VERIFY</code>, before any use
|
||||
of the macro there needed to be a variable called <code class="varname">test</code>
|
||||
in scope, which was usually defined like so (the attribute avoids
|
||||
warnings about an unused variable):
|
||||
</p><pre class="programlisting">
|
||||
bool test __attribute__((unused)) = true;
|
||||
</pre><p>
|
||||
This is no longer needed, and should not be added to new tests.
|
||||
</p><p>
|
||||
The testsuite uses the DejaGnu framework to compile and run the tests.
|
||||
Test cases are normal C++ files which contain special directives in
|
||||
|
|
|
@ -40,7 +40,7 @@ The standard places requirements on the library to ensure that no data
|
|||
races are caused by the library itself or by programs which use the
|
||||
library correctly (as described below).
|
||||
The C++11 memory model and library requirements are a more formal version
|
||||
of the <a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI STL</a> definition of thread safety, which the library used
|
||||
of the <a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI STL</a> definition of thread safety, which the library used
|
||||
prior to the 2011 standard.
|
||||
</p><p>The library strives to be thread-safe when all of the following
|
||||
conditions are met:
|
||||
|
@ -233,10 +233,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
|
|||
threaded and non-threaded code), see Chapter 17.
|
||||
</p><p>Two excellent pages to read when working with the Standard C++
|
||||
containers and threads are
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI's
|
||||
http://www.sgi.com/tech/stl/thread_safety.html</a> and
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/Allocators.html" target="_top">SGI's
|
||||
http://www.sgi.com/tech/stl/Allocators.html</a>.
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI's
|
||||
https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/thread_safety.html</a> and
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/Allocators.html" target="_top">SGI's
|
||||
https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/Allocators.html</a>.
|
||||
</p><p><span class="emphasis"><em>However, please ignore all discussions about the user-level
|
||||
configuration of the lock implementation inside the STL
|
||||
container-memory allocator on those pages. For the sake of this
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
get slightly the wrong idea. In the interest of not reinventing
|
||||
the wheel, we will refer you to the introduction to the functor
|
||||
concept written by SGI as part of their STL, in
|
||||
<a class="link" href="http://www.sgi.com/tech/stl/functors.html" target="_top">their
|
||||
http://www.sgi.com/tech/stl/functors.html</a>.
|
||||
<a class="link" href="https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/functors.html" target="_top">their
|
||||
https://web.archive.org/web/20171225062613/http://www.sgi.com/tech/stl/functors.html</a>.
|
||||
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="concept_checking.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="std_contents.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concept Checking </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Pairs</td></tr></table></div></body></html>
|
|
@ -571,6 +571,9 @@ compatible.
|
|||
<listitem><para>GCC 3.4.x: include/c++/3.4.x</para></listitem>
|
||||
<listitem><para>GCC 4.x.y: include/c++/4.x.y</para></listitem>
|
||||
<listitem><para>GCC 5.x.0: include/c++/5.x.0</para></listitem>
|
||||
<listitem><para>GCC 6.x.0: include/c++/6.x.0</para></listitem>
|
||||
<listitem><para>GCC 7.x.0: include/c++/7.x.0</para></listitem>
|
||||
<listitem><para>GCC 8.x.0: include/c++/8.x.0</para></listitem>
|
||||
</itemizedlist>
|
||||
<para/>
|
||||
</listitem>
|
||||
|
|
|
@ -705,7 +705,7 @@ now defaults to zero.
|
|||
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_50"><info><title><constant>5</constant></title></info>
|
||||
<section xml:id="api.rel_51"><info><title><constant>5</constant></title></info>
|
||||
|
||||
<para>
|
||||
ABI transition adds new implementations of several components, using the
|
||||
|
@ -717,7 +717,8 @@ now defaults to zero.
|
|||
<listitem>
|
||||
<para>
|
||||
Use of the new or old ABI can be selected per-translation unit with the
|
||||
<symbol>_GLIBCXX_USE_CXX11_ABI</symbol> macro.
|
||||
<xref linkend="manual.intro.using.macros"><symbol>_GLIBCXX_USE_CXX11_ABI</symbol>
|
||||
macro</xref>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
@ -731,6 +732,12 @@ now defaults to zero.
|
|||
data member in order to provide O(1) <function>size()</function>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
New <classname>ios_base::failure</classname> implementation inheriting
|
||||
from <classname>system_error</classname>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
|
@ -760,5 +767,132 @@ now defaults to zero.
|
|||
<classname>has_trivial_copy_assign</classname> deprecated.
|
||||
</para>
|
||||
|
||||
<section xml:id="api.rel_53"><info><title><constant>5.3</constant></title></info>
|
||||
<para> Experimental implementation of the C++ Filesystem TS added. </para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_61"><info><title><constant>6</constant></title></info>
|
||||
|
||||
<para> C++14 support completed. </para>
|
||||
|
||||
<para>
|
||||
Support for mathematical special functions (ISO/IEC 29124:2010) added.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Assertions to check function preconditions can be enabled by defining the
|
||||
<xref linkend="manual.intro.using.macros"><symbol>_GLIBCXX_ASSERTIONS</symbol>
|
||||
macro</xref>.
|
||||
The initial set of assertions are a subset of the checks enabled by
|
||||
the Debug Mode, but without the ABI changes and changes to algorithmic
|
||||
complexity that are caused by enabling the full Debug Mode.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_71"><info><title><constant>7</constant></title></info>
|
||||
|
||||
<para>
|
||||
The type of exception thrown by iostreams changed to the <code>cxx11</code>
|
||||
ABI version of <classname>std::ios_base::failure</classname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Experimental C++17 support added, including most new library features.
|
||||
The meaning of <classname>shared_ptr<T[]></classname> changed to
|
||||
match the C++17 semantics.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<xref linkend="manual.intro.using.macros"><symbol>_GLIBCXX_RELEASE</symbol>
|
||||
macro</xref> added.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<classname>has_trivial_default_constructor</classname>,
|
||||
<classname>has_trivial_copy_constructor</classname> and
|
||||
<classname>has_trivial_copy_assign</classname> removed.
|
||||
</para>
|
||||
|
||||
<para> Profile Mode was deprecated. </para>
|
||||
|
||||
<section xml:id="api.rel_73"><info><title><constant>7.3</constant></title></info>
|
||||
|
||||
<para>
|
||||
Including new C++14 or C++17 headers without a suitable <option>-std</option>
|
||||
no longer causes compilation to fail via <literal>#error</literal>.
|
||||
Instead the header is simply empty and doesn't define anything.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section xml:id="api.rel_81"><info><title><constant>8</constant></title></info>
|
||||
|
||||
<para>
|
||||
The exceptions thrown by iostreams can now be caught by handlers for either
|
||||
version of <classname>std::ios_base::failure</classname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Experimental implementation of the C++17 Filesystem library added.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
AddressSanitizer annotations added to <classname>std::vector</classname>
|
||||
to detect out-of-range accesses to the unused capacity of a vector.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<function>std::char_traits<char16_t>::to_int_type(u'\uFFFF')</function>
|
||||
now returns <literal>0xFFFD</literal>, as <literal>0xFFFF</literal> is
|
||||
used for <function>std::char_traits<char16_t>::eof()</function>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The extension allowing arithmetic on
|
||||
<classname>std::atomic<void*></classname> and types like
|
||||
<classname>std::atomic<R(*)()></classname> was deprecated.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <function>std::uncaught_exception</function> function was deprecated
|
||||
for C++17 mode.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The nested typedefs <type>std::hash::result_type</type> and
|
||||
<type>std::hash::argument_type</type> were deprecated for C++17 mode.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The deprecated iostream members <type>ios_base::io_state</type>,
|
||||
<type>ios_base::open_mode</type>, <type>ios_base::seek_dir</type>, and
|
||||
<function>basic_streambuf::stossc</function> were removed for C++17 mode.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The non-standard C++0x <function>std::copy_exception</function> function
|
||||
was removed.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For <option>-std=c++11</option>, <option>-std=c++14</option>, and
|
||||
<option>-std=c++17</option> modes the <filename><complex.h></filename>
|
||||
header no longer includes the C99 <filename><complex.h></filename>
|
||||
header.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For the non-default <option>--enable-symvers=gnu-versioned-namespace</option>
|
||||
configuration, the shared library SONAME has been changed to
|
||||
<filename>libstdc++.so.8</filename>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
<year>2015</year>
|
||||
<year>2016</year>
|
||||
<year>2017</year>
|
||||
<year>2018</year>
|
||||
<holder>
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">FSF</link>
|
||||
</holder>
|
||||
|
|
|
@ -88,7 +88,8 @@
|
|||
<programlisting>
|
||||
char toLower (char c)
|
||||
{
|
||||
return std::tolower(c);
|
||||
// std::tolower(c) is undefined if c < 0 so cast to unsigned char.
|
||||
return std::tolower((unsigned char)c);
|
||||
} </programlisting>
|
||||
<para>(Thanks to James Kanze for assistance and suggestions on all of this.)
|
||||
</para>
|
||||
|
|
|
@ -657,15 +657,25 @@ cat 27_io/objects/char/3_xin.in | a.out</programlisting>
|
|||
Tests that need to perform runtime checks should use the
|
||||
<literal>VERIFY</literal> macro, defined in the
|
||||
<filename class="headerfile"><testsuite_hooks.h></filename> header.
|
||||
This usually expands to the standard <literal>assert</literal> macro, but
|
||||
allows targets to define it to something different. In order to support
|
||||
the alternative expansions of <literal>VERIFY</literal>, before any
|
||||
use of the macro there must be a variable called <varname>test</varname>
|
||||
in scope, which is usually defined like so (the attribute avoids
|
||||
This expands to a custom assertion using
|
||||
<function>__builtin_printf</function> and
|
||||
<function>__builtin_abort</function>
|
||||
(to avoid using <literal>assert</literal> and being affected by
|
||||
<literal>NDEBUG</literal>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Prior to GCC 7.1, <literal>VERIFY</literal> was defined differently.
|
||||
It usually expanded to the standard <literal>assert</literal> macro, but
|
||||
allowed targets to define it to something different. In order to support
|
||||
the alternative expansions of <literal>VERIFY</literal>, before any use
|
||||
of the macro there needed to be a variable called <varname>test</varname>
|
||||
in scope, which was usually defined like so (the attribute avoids
|
||||
warnings about an unused variable):
|
||||
<programlisting>
|
||||
bool test __attribute__((unused)) = true;
|
||||
</programlisting>
|
||||
This is no longer needed, and should not be added to new tests.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
|
Loading…
Add table
Reference in a new issue