@@ -14,7 +14,7 @@
</p></div></div></div><hr /></div><p>
The GNU C++ library sources have been specially formatted so that
with the proper invocation of another tool (Doxygen), a set of
- indexed reference material can generated from the sources files
+ indexed reference material can be generated from the source files
themselves. The resultant documentation is referred to as the API
documentation, and is useful for examining the signatures of public
member functions for the library classes, finding out what is in a
@@ -121,7 +121,7 @@
Why should I use libstdc++?
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-why"></a></td><td align="left" valign="top"><p>
The completion of the initial ISO C++ standardization effort gave the C++
- community a powerful set of reuseable tools in the form of the C++
+ community a powerful set of reusable tools in the form of the C++
Standard Library. However, for several years C++ implementations were
(as the Draft Standard used to say) <span class="quote">“<span class="quote">incomplet and
incorrekt</span>�</span>, and many suffered from limitations of the compilers
@@ -420,7 +420,7 @@
C++ compiler.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.solaris_long_long"></a><a id="q-solaris_long_long"></a><p><strong>4.2.</strong></p></td><td align="left" valign="top"><p>
No '<span class="type">long long</span>' type on Solaris?
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-solaris_long_long"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
By default we try to support the C99 <span class="type">long long</span> type.
This requires that certain functions from your C library be present.
</p><p>
@@ -465,13 +465,13 @@
solution, but nobody yet has contributed the time.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.darwin_ctype"></a><a id="q-darwin_ctype"></a><p><strong>4.4.</strong></p></td><td align="left" valign="top"><p>
Mac OS X <code class="filename">ctype.h</code> is broken! How can I fix it?
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-darwin_ctype"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
This was a long-standing bug in the OS X support. Fortunately, the
<a class="link" href="https://gcc.gnu.org/ml/gcc/2002-03/msg00817.html" target="_top">patch</a>
was quite simple, and well-known.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.threads_i386"></a><a id="q-threads_i386"></a><p><strong>4.5.</strong></p></td><td align="left" valign="top"><p>
Threading is broken on i386?
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>Support for atomic integer operations was broken on i386
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-threads_i386"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>Support for atomic integer operations was broken on i386
platforms. The assembly code accidentally used opcodes that are
only available on the i486 and later. So if you configured GCC
to target, for example, i386-linux, but actually used the programs
@@ -480,7 +480,7 @@
</p><p>This is fixed in 3.2.2.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.atomic_mips"></a><a id="q-atomic_mips"></a><p><strong>4.6.</strong></p></td><td align="left" valign="top"><p>
MIPS atomic operations
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-atomic_mips"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
The atomic locking routines for MIPS targets requires MIPS II
and later. A patch went in just after the 3.3 release to
make mips* use the generic implementation instead. You can also
@@ -501,7 +501,7 @@
GCC installation instructions.)
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.freebsd_wchar"></a><a id="q-freebsd_wchar"></a><p><strong>4.8.</strong></p></td><td align="left" valign="top"><p>
Can't use <span class="type">wchar_t</span>/<code class="classname">wstring</code> on FreeBSD
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-freebsd_wchar"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
Older versions of FreeBSD's C library do not have sufficient
support for wide character functions, and as a result the
libstdc++ configury decides that <span class="type">wchar_t</span> support should be
@@ -587,7 +587,7 @@
Aw, that's easy to fix!
</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.stream_reopening_fails"></a><a id="q-stream_reopening_fails"></a><p><strong>6.1.</strong></p></td><td align="left" valign="top"><p>
Reopening a stream fails
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-stream_reopening_fails"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-stream_reopening_fails"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
Prior to GCC 4.0 this was one of the most-reported non-bug reports.
Executing a sequence like this would fail:
</p><pre class="programlisting">
@@ -630,7 +630,7 @@
without other drawbacks, send us a patch.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.ambiguous_overloads"></a><a id="q-ambiguous_overloads"></a><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p>
Ambiguous overloads after including an old-style header
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
Another problem is the <code class="literal">rel_ops</code> namespace and the template
comparison operator functions contained therein. If they become
visible in the same namespace as other comparison functions
@@ -643,7 +643,7 @@
types have been fixed for 3.1.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.v2_headers"></a><a id="q-v2_headers"></a><p><strong>6.4.</strong></p></td><td align="left" valign="top"><p>
The g++-3 headers are <span class="emphasis"><em>not ours</em></span>
- </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-v2_headers"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer be relevant.</p></div><p>
+ </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-v2_headers"></a></td><td align="left" valign="top"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This answer is old and probably no longer relevant.</p></div><p>
If you are using headers in
<code class="filename">${prefix}/include/g++-3</code>, or if
the installed library's name looks like
@@ -11,7 +11,7 @@
The C++ Standard Library has many include files, types defined in
those include files, specific named functions, and other
behavior. The text of these behaviors, as written in source include
- files, is called the Application Programing Interface, or API.
+ files, is called the Application Programming Interface, or API.
</p><p>
Furthermore, C++ source that is compiled into object files is
transformed by the compiler: it arranges objects with specific
@@ -103,7 +103,7 @@ compatible.
example, filename <code class="filename">libstdc++.so.5.0.4</code>
corresponds to a <code class="constant">DT_SONAME</code> of
<code class="constant">libstdc++.so.5</code>. Binaries with equivalent
- <code class="constant">DT_SONAME</code>s are forward-compatibile: in
+ <code class="constant">DT_SONAME</code>s are forward-compatible: in
the table below, releases incompatible with the previous
one are explicitly noted.
If a particular release is not listed, its libstdc++.so binary
@@ -383,7 +383,7 @@ exceptional symbols are allowed to be visible.</p></dd><dt><span class="term"><c
<code class="code">GLIBCXX</code>, select items are allowed to be visible.</p></dd><dt><span class="term"><code class="code">namespace __gnu_internal</code></span></dt><dd><p> Defaults to not exported, no items are allowed to be visible.</p></dd><dt><span class="term"><code class="code">namespace __cxxabiv1</code>, aliased to <code class="code"> namespace abi</code></span></dt><dd><p> Defaults to not exporting any symbols in label
<code class="code">CXXABI</code>, select items are allowed to be visible.</p></dd></dl></div><p>
</p></li><li class="listitem"><p>Freezing the API</p><p>Disallowed changes, as above, are not made on a stable release
-branch. Enforcement tends to be less strict with GNU extensions that
+branch. Enforcement tends to be less strict with GNU extensions than
standard includes.</p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="abi.testing"></a>Testing</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="abi.testing.single"></a>Single ABI Testing</h4></div></div></div><p>
Testing for GNU C++ ABI changes is composed of two distinct
areas: testing the C++ compiler (g++) for compiler changes, and
@@ -87,7 +87,7 @@ Debug mode first appears.
</p><p>
Precompiled header support <acronym class="acronym">PCH</acronym> support.
</p><p>
-Macro guard for changed, from <code class="literal">_GLIBCPP_</code> to <code class="literal">_GLIBCXX_</code>.
+Macro guard changed, from <code class="literal">_GLIBCPP_</code> to <code class="literal">_GLIBCXX_</code>.
</p><p>
Extension <code class="filename"><ext/stdio_sync_filebuf.h></code> added.
</p><p>
@@ -141,7 +141,7 @@ Backward include edit.
<code class="filename"><auto_ptr.h></code> and <code class="filename"><binders.h></code>
</p></li></ul></div><p>
Header dependency streamlining.
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="filename"><algorithm></code> no longer includes <code class="filename"><climits></code>, <code class="filename"><cstring></code>, or <code class="filename"><iosfwd></code> </p></li><li class="listitem"><p><code class="filename"><bitset></code> no longer includes <code class="filename"><istream></code> or <code class="filename"><ostream></code>, adds <code class="filename"><iosfwd></code> </p></li><li class="listitem"><p><code class="filename"><functional></code> no longer includes <code class="filename"><cstddef></code></p></li><li class="listitem"><p><code class="filename"><iomanip></code> no longer includes <code class="filename"><istream></code>, <code class="filename"><istream></code>, or <code class="filename"><functional></code>, adds <code class="filename"><ioswd></code> </p></li><li class="listitem"><p><code class="filename"><numeric></code> no longer includes <code class="filename"><iterator></code></p></li><li class="listitem"><p><code class="filename"><string></code> no longer includes <code class="filename"><algorithm></code> or <code class="filename"><memory></code></p></li><li class="listitem"><p><code class="filename"><valarray></code> no longer includes <code class="filename"><numeric></code> or <code class="filename"><cstdlib></code></p></li><li class="listitem"><p><code class="filename"><tr1/hashtable></code> no longer includes <code class="filename"><memory></code> or <code class="filename"><functional></code></p></li><li class="listitem"><p><code class="filename"><tr1/memory></code> no longer includes <code class="filename"><algorithm></code></p></li><li class="listitem"><p><code class="filename"><tr1/random></code> no longer includes <code class="filename"><algorithm></code> or <code class="filename"><fstream></code></p></li></ul></div><p>
+</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="filename"><algorithm></code> no longer includes <code class="filename"><climits></code>, <code class="filename"><cstring></code>, or <code class="filename"><iosfwd></code> </p></li><li class="listitem"><p><code class="filename"><bitset></code> no longer includes <code class="filename"><istream></code> or <code class="filename"><ostream></code>, adds <code class="filename"><iosfwd></code> </p></li><li class="listitem"><p><code class="filename"><functional></code> no longer includes <code class="filename"><cstddef></code></p></li><li class="listitem"><p><code class="filename"><iomanip></code> no longer includes <code class="filename"><istream></code>, <code class="filename"><ostream></code>, or <code class="filename"><functional></code>, adds <code class="filename"><iosfwd></code> </p></li><li class="listitem"><p><code class="filename"><numeric></code> no longer includes <code class="filename"><iterator></code></p></li><li class="listitem"><p><code class="filename"><string></code> no longer includes <code class="filename"><algorithm></code> or <code class="filename"><memory></code></p></li><li class="listitem"><p><code class="filename"><valarray></code> no longer includes <code class="filename"><numeric></code> or <code class="filename"><cstdlib></code></p></li><li class="listitem"><p><code class="filename"><tr1/hashtable></code> no longer includes <code class="filename"><memory></code> or <code class="filename"><functional></code></p></li><li class="listitem"><p><code class="filename"><tr1/memory></code> no longer includes <code class="filename"><algorithm></code></p></li><li class="listitem"><p><code class="filename"><tr1/random></code> no longer includes <code class="filename"><algorithm></code> or <code class="filename"><fstream></code></p></li></ul></div><p>
Debug mode for <code class="filename"><unordered_map></code> and <code class="filename"><unordered_set></code>.
</p><p>
Parallel mode first appears.
@@ -173,7 +173,7 @@ in the build directory starts the build process. The <code class="literal">all</
AC_LC_MESSAGES
libtool bits
</pre><p>
- Things which we don't seem to use directly, but just has to be
+ Things which we don't seem to use directly, but just have to be
present otherwise stuff magically goes wonky.
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="build_hacking.configure.enable"></a><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</h4></div></div></div><p>
All the <code class="literal">GLIBCXX_ENABLE_FOO</code> macros use a common
@@ -274,7 +274,7 @@ in the build directory starts the build process. The <code class="literal">all</
and an error message.
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="build_hacking.configure.version"></a>Shared Library Versioning</h4></div></div></div><p>
The <code class="filename">libstdc++.so</code> shared library must
-be carefully managed to maintain binary compatible with older versions
+be carefully managed to maintain binary compatibility with older versions
of the library. This ensures a new version of the library is still usable by
programs that were linked against an older version.
</p><p>
@@ -362,7 +362,7 @@ directory. Be sure to generate the baseline from a clean build using
unmodified sources, or you will incorporate your local changes into the
baseline file.
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.make"></a>Make</h3></div></div></div><p>
- The build process has to make all of object files needed for
+ The build process has to make all of the object files needed for
static or shared libraries, but first it has to generate some
include files. The general order is as follows:
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
@@ -449,7 +449,7 @@ baseline file.
make src
</p><p>
Generates needed compatibility objects for shared and static
- libraries. Shared-only code is seggregated at compile-time via
+ libraries. Shared-only code is segregated at compile-time via
the macro <code class="literal">_GLIBCXX_SHARED</code>.
</p><p>
Then, collects all the generated convenience libraries that weren't
@@ -59,7 +59,7 @@
</p></li></ul></div><p>
For <code class="code">multimap</code> and <code class="code">multiset</code>, the
restrictions are slightly looser: <span class="quote">“<span class="quote">greater than</span>�</span>
- should be replaced by <span class="quote">“<span class="quote">not less than</span>�</span>and <span class="quote">“<span class="quote">less
+ should be replaced by <span class="quote">“<span class="quote">not less than</span>�</span> and <span class="quote">“<span class="quote">less
than</span>�</span> should be replaced by <span class="quote">“<span class="quote">not greater
than.</span>�</span> (Why not replace greater with
greater-than-or-equal-to? You probably could in your head, but
@@ -104,8 +104,8 @@ else return false.</p></li></ol></div><p>
which is 8-bytes, or 2 x sizeof(size_t).
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="bitmap.impl.max_wasted"></a>Maximum Wasted Percentage</h3></div></div></div><p>
This has nothing to do with the algorithm per-se,
- only with some vales that must be chosen correctly to ensure that the
- allocator performs well in a real word scenario, and maintains a good
+ only with some values that must be chosen correctly to ensure that the
+ allocator performs well in a real world scenario, and maintains a good
balance between the memory consumption and the allocation/deallocation
speed.
</p><p>
@@ -248,7 +248,7 @@ Block a bitmap as well?
have nothing to do with the memory that is given to the user. As
I have earlier mentioned, a 1 in the bitmap's bit field
indicates free, while a 0 indicates allocated. This lets us
- check 32 bits at a time to check whether there is at lease one
+ check 32 bits at a time to check whether there is at least one
free block in those 32 blocks by testing for equality with
(0). Now, the allocate function will given a memory block find
the corresponding bit in the bitmap, and will reset it (i.e.,
@@ -263,19 +263,19 @@ Block a bitmap as well?
</p><p>
Now, when the first request for allocation of a single object
comes along, the first block in address order is returned. And
- since the bit-maps in the reverse order to that of the address
+ since the bit-maps are in the reverse order to that of the address
order, the last bit (LSB if the bit-map is considered as a
binary word of 64-bits) is re-set to 0.
</p><p>
The bit-map now looks like this:
1111111111111111111111111111111111111111111111111111111111111110
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="bitmap.impl.locality"></a>Locality</h3></div></div></div><p>
- Another issue would be whether to keep the all bitmaps in a
+ Another issue would be whether to keep all the bitmaps in a
separate area in memory, or to keep them near the actual blocks
that will be given out or allocated for the client. After some
testing, I've decided to keep these bitmaps close to the actual
blocks. This will help in 2 ways.
- </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Constant time access for the bitmap themselves, since no kind of
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Constant time access for the bitmaps themselves, since no kind of
look up will be needed to find the correct bitmap list or its
equivalent.</p></li><li class="listitem"><p>And also this would preserve the cache as far as possible.</p></li></ol></div><p>
So in effect, this kind of an allocator might prove beneficial from a
@@ -52,7 +52,7 @@
</span></dt><dd><p>The return type is the <span class="emphasis"><em>previous</em></span> state of synchronization.
</p></dd><dt><a id="manual.bugs.dr50"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#50" target="_top">50</a>:
<span class="bold"><strong>Copy constructor and assignment operator of ios_base</strong></span>
- </span></dt><dd><p>These members functions are declared <code class="code">private</code> and are
+ </span></dt><dd><p>These member functions are declared <code class="code">private</code> and are
thus inaccessible. Specifying the correct semantics of
"copying stream state" was deemed too complicated.
</p></dd><dt><a id="manual.bugs.dr60"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#60" target="_top">60</a>:
@@ -80,7 +80,7 @@
<code class="code">max_size()</code> rather than <code class="code">npos</code>.
</p></dd><dt><a id="manual.bugs.dr90"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#90" target="_top">90</a>:
<span class="bold"><strong>Incorrect description of operator>> for strings</strong></span>
- </span></dt><dd><p>The effect contain <code class="code">isspace(c,getloc())</code> which must be
+ </span></dt><dd><p>The effect contains <code class="code">isspace(c,getloc())</code> which must be
replaced by <code class="code">isspace(c,is.getloc())</code>.
</p></dd><dt><a id="manual.bugs.dr91"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#91" target="_top">91</a>:
<span class="bold"><strong>Description of operator>> and getline() for string<>
@@ -309,7 +309,7 @@
</span></dt><dd><p>In C++11 mode, remove the pow(float,int), etc., signatures.
</p></dd><dt><a id="manual.bugs.dr581"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#581" target="_top">581</a>:
<span class="bold"><strong><code class="code">flush()</code> not unformatted function</strong></span>
- </span></dt><dd><p>Change it to be a unformatted output function (i.e. construct a sentry and catch exceptions).
+ </span></dt><dd><p>Change it to be an unformatted output function (i.e. construct a sentry and catch exceptions).
</p></dd><dt><a id="manual.bugs.dr586"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#586" target="_top">586</a>:
<span class="bold"><strong>string inserter not a formatted function</strong></span>
</span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions).
@@ -478,7 +478,7 @@
Make <code class="code">common_type<></code> empty.
</p></dd><dt><a id="manual.bugs.dr2415"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2415" target="_top">2415</a>:
<span class="bold"><strong>Inconsistency between <code class="code">unique_ptr</code> and <code class="code">shared_ptr</code></strong></span>
- </span></dt><dd><p>Create empty an <code class="code">shared_ptr</code> from an empty
+ </span></dt><dd><p>Create an empty <code class="code">shared_ptr</code> from an empty
<code class="code">unique_ptr</code>.
</p></dd><dt><a id="manual.bugs.dr2418"></a><span class="term"><a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2418" target="_top">2418</a>:
<span class="bold"><strong><code class="code">apply</code> does not work with member pointers</strong></span>
@@ -184,7 +184,7 @@
"GDB features for C++" </a> in the GDB documentation. Also
recommended: the other parts of this manual.
</p><p>
- These settings can either be switched on in at the GDB command line,
+ These settings can either be switched on at the GDB command line,
or put into a <code class="filename">.gdbinit</code> file to establish default
debugging characteristics, like so:
</p><pre class="programlisting">
@@ -15,7 +15,7 @@
valid. A program that is not valid C++ (e.g., invokes undefined
behavior) is not required to behave similarly, although the debug
mode will abort with a diagnostic when it detects undefined
- behavior.</p></li><li class="listitem"><p><span class="emphasis"><em>Performance</em></span>: the additional of the libstdc++ debug mode
+ behavior.</p></li><li class="listitem"><p><span class="emphasis"><em>Performance</em></span>: the addition of the libstdc++ debug mode
must not affect the performance of the library when it is compiled
in release mode. Performance of the libstdc++ debug mode is
secondary (and, in fact, will be worse than the release
@@ -181,7 +181,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp>
either the debug-mode assertion
macro <code class="code">_GLIBCXX_DEBUG_ASSERT</code> , its pedantic
cousin <code class="code">_GLIBCXX_DEBUG_PEDASSERT</code>, or the assertion
- check macro that supports more advance formulation of error
+ check macro that supports more advanced formulation of error
messages, <code class="code">_GLIBCXX_DEBUG_VERIFY</code>. These macros are
documented more thoroughly in the debug mode source code.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="debug_mode.design.methods.coexistence"></a>Release- and debug-mode coexistence</h4></div></div></div><p>The libstdc++ debug mode is the first debug mode we know of that
is able to provide the "Per-use recompilation" (4) guarantee, that
@@ -316,7 +316,7 @@ test02()
solutions, with justifications for our rejection of each.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>Completely separate debug/release libraries</em></span>: This is by
far the simplest implementation option, where we do not allow any
coexistence of debug- and release-compiled translation units in a
- program. This solution has an extreme negative affect on usability,
+ program. This solution has an extreme negative effect on usability,
because it is quite likely that some libraries an application
depends on cannot be recompiled easily. This would not meet
our <span class="emphasis"><em>usability</em></span> or <span class="emphasis"><em>minimize recompilation</em></span> criteria
@@ -357,7 +357,7 @@ test02()
debug- and release-compiled code cannot be mixed unsafely, it ensures that
debug- and release-compiled code cannot be mixed at all. For
instance, the program would have two <code class="code">std::cout</code>
- objects! This solution would fails the <span class="emphasis"><em>minimize
+ objects! This solution would fail the <span class="emphasis"><em>minimize
recompilation</em></span> requirement, because we would only be able to
support option (1) or (2).</p></li><li class="listitem"><p><span class="emphasis"><em>Extension: use link name</em></span>: This option
involves complicated re-naming between debug-mode and release-mode
@@ -138,7 +138,7 @@
variable in the configuration file <code class="filename">texmf.cnf</code> may
need to be increased by a minimum factor of two. Alternatively, using
<strong class="userinput"><code>LATEX_CMD=lualatex</code></strong> might allow the docs to be
- build without running out of memory.
+ built without running out of memory.
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.rules"></a>Generating the Doxygen Files</h4></div></div></div><p>
The following Makefile rules run Doxygen to generate HTML
docs, XML docs, XML docs as a single file, PDF docs, and the
@@ -387,7 +387,7 @@
</p><p>
</p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p>
</p><p>
- Generated files are output into separate sub-directores of
+ Generated files are output into separate sub-directories of
<code class="filename">doc/docbook/</code> in the
build directory, based on the output format. For instance, the
HTML docs will be in <code class="filename">doc/docbook/html</code>.
@@ -449,7 +449,7 @@ make <code class="literal">XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwal
incorrect.
</p></li></ul></div><p>
If the error at hand is not obvious after examination, or if one
- encounters the inscruitable <span class="quote">“<span class="quote">Incomplete
+ encounters the inscrutable <span class="quote">“<span class="quote">Incomplete
\ifmmode</span>�</span> error, a fall-back strategy is to start
commenting out parts of the XML document (regardless of what
this does to over-all document validity). Start by
@@ -50,9 +50,9 @@
<code class="function">operator new</code> and <code class="function">operator delete</code>
but with an additional parameter of type <span class="type">std::align_val_t</span>.
These new overloads are not interchangeable with the versions without
- an aligment parameter, so if memory was allocated by an overload of
+ an alignment parameter, so if memory was allocated by an overload of
<code class="function">operator new</code> taking an alignment parameter,
- then it must be decallocated by the corresponding overload of
+ then it must be deallocated by the corresponding overload of
<code class="function">operator delete</code> that takes an alignment parameter.
</p><p>
Apart from the non-allocating forms, the default versions of the array
@@ -84,7 +84,7 @@
and the corresponding <code class="function">operator delete</code> functions.
To support types with extended alignment you may also need to replace
<code class="function">operator new(size_t, align_val_t)</code> and
- <code class="function">operator delete(void*, align_val_t)</code>
+ <code class="function">operator delete(void*, align_val_t)</code> and
<code class="function">operator delete(void*, size_t, align_val_t)</code>
(which will then be used by the nothrow and array forms for
extended alignments).
@@ -37,7 +37,7 @@ Two functions and one type form the base of atomic support.
</p><p>The type <code class="code">_Atomic_word</code> is a signed integral type
supporting atomic operations.
</p><p>
-The two functions functions are:
+The two functions are:
</p><pre class="programlisting">
_Atomic_word
__exchange_and_add_dispatch(volatile _Atomic_word*, int);
@@ -33,7 +33,7 @@ If builtins are possible for int-sized integral types,
non-ancient x86 hardware, <code class="code">-march=native</code> usually does the
trick.</p><p> For hosts without compiler intrinsics, but with capable
hardware, hand-crafted assembly is selected. This is the case for the following hosts:
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>cris</p></li><li class="listitem"><p>hppa</p></li><li class="listitem"><p>i386</p></li><li class="listitem"><p>i486</p></li><li class="listitem"><p>m48k</p></li><li class="listitem"><p>mips</p></li><li class="listitem"><p>sparc</p></li></ul></div><p>And for the rest, a simulated atomic lock via pthreads.
+</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>cris</p></li><li class="listitem"><p>hppa</p></li><li class="listitem"><p>i386</p></li><li class="listitem"><p>i486</p></li><li class="listitem"><p>m68k</p></li><li class="listitem"><p>mips</p></li><li class="listitem"><p>sparc</p></li></ul></div><p>And for the rest, a simulated atomic lock via pthreads.
</p><p>Detailed information about compiler intrinsics for atomic operations can be found in the GCC <a class="link" href="https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" target="_top"> documentation</a>.
</p><p> More details on the library fallbacks from the porting <a class="link" href="internals.html#internals.thread_safety" title="Thread Safety">section</a>.
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.thread"></a>Thread Abstraction</h3></div></div></div><p>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract
@@ -1,7 +1,7 @@
<?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>Deprecated</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><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="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="prev" href="ext_containers.html" title="Chapter 23. HP/SGI Extensions" /><link rel="next" href="ext_utilities.html" title="Chapter 24. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 23. HP/SGI Extensions</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated</h2></div></div></div><p>
The SGI hashing classes <code class="classname">hash_set</code> and
- <code class="classname">hash_set</code> have been deprecated by the
+ <code class="classname">hash_map</code> have been deprecated by the
unordered_set, unordered_multiset, unordered_map,
unordered_multimap containers in TR1 and C++11, and
may be removed in future releases.
@@ -40,7 +40,7 @@
functions, as well as some extra constructors specifying the number
of buckets, etc.
</p><p>Why would you want to use a hashing class instead of the
- <span class="quote">“<span class="quote">normal</span>�</span>implementations? Matt Austern writes:
+ <span class="quote">“<span class="quote">normal</span>�</span> implementations? Matt Austern writes:
</p><div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>[W]ith a well chosen hash function, hash tables
generally provide much better average-case performance than
@@ -14,7 +14,7 @@ The two required specializations are implemented as follows:
ctype<char>
</code>
</p><p>
-This is simple specialization. Implementing this was a piece of cake.
+This is a simple specialization. Implementing this was a piece of cake.
</p><p>
<code class="code">
ctype<wchar_t>
@@ -22,8 +22,8 @@ ctype<wchar_t>
</p><p>
This specialization, by specifying all the template parameters, pretty
much ties the hands of implementors. As such, the implementation is
-straightforward, involving <code class="function">mcsrtombs</code> for the
-conversions between <span class="type">char</span> to <span class="type">wchar_t</span> and
+straightforward, involving <code class="function">mbsrtowcs</code> for the
+conversions between <span class="type">char</span> and <span class="type">wchar_t</span> and
<code class="function">wcsrtombs</code> for conversions between <span class="type">wchar_t</span>
and <span class="type">char</span>.
</p><p>
@@ -37,7 +37,7 @@ characters.
Overlap between codecvt/ctype: narrow/widen
</p></li><li class="listitem"><p>
<span class="type">mask</span> typedef in <code class="classname">codecvt_base</code>,
- argument types in <span class="type">codecvt</span>. what is know about this type?
+ argument types in <span class="type">codecvt</span>. what is known about this type?
</p></li><li class="listitem"><p>
Why mask* argument in codecvt?
</p></li><li class="listitem"><p>
@@ -215,7 +215,7 @@ mechanism may be required.
Conversion descriptors for both directions of encoding. (i.e., both
UCS-2 to UTF-8 and UTF-8 to UCS-2.)
</p></li><li class="listitem"><p>
- Something to indicate if the conversion requested if valid.
+ Something to indicate if the conversion requested is valid.
</p></li><li class="listitem"><p>
Something to represent if the conversion descriptors are valid.
</p></li><li class="listitem"><p>
@@ -599,7 +599,7 @@ model.
necessary. To avoid any unpleasantness, all bits of the "C" mask
(i.e. <code class="code">LC_ALL</code>) are set before retrieving messages.
</p><p>
- Making the message catalogs can be initially tricky, but become
+ Making the message catalogs can be initially tricky, but becomes
quite simple with practice. For complete info, see the gettext
documentation. Here's an idea of what is required:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
@@ -30,7 +30,7 @@
</p><p>Why a <span class="emphasis"><em>pointer</em></span> to streambuf and not just a streambuf? Well,
the [io]streams hold pointers (or references, depending on the
implementation) to their buffers, not the actual
- buffers. This allows polymorphic behavior on the chapter of the buffers
+ buffers. This allows polymorphic behavior on the part of the buffers
as well as the streams themselves. The pointer is easily retrieved
using the <code class="code">rdbuf()</code> member function. Therefore, the easiest
way to copy the file is:
@@ -69,7 +69,7 @@
under Windows won't accidentally get mapped to a '\n' character, etc.
Binary mode is not supposed to suddenly give you a bitstream, and
if it is doing so in your program then you've discovered a bug in
- your vendor's compiler (or some other chapter of the C++ implementation,
+ your vendor's compiler (or some other part of the C++ implementation,
possibly the runtime system).
</p><p>Second, using <code class="code"><<</code> to write and <code class="code">>></code> to
read isn't going to work with the standard file stream classes, even
@@ -45,7 +45,7 @@ classes.
been a prime concern from the beginning.)
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.end"></a>One Past the End</h3></div></div></div><p>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
- </p><p>Beginners usually have a little trouble understand the whole
+ </p><p>Beginners usually have a little trouble understanding the whole
'past-the-end' thing, until they remember their early algebra classes
(see, they <span class="emphasis"><em>told</em></span> you that stuff would come in handy!) and
the concept of half-open ranges.
@@ -90,7 +90,7 @@ classes.
| | dereference 'end'.
beginning end
-</pre><p>See? Everything between the boundary markers is chapter of the array.
+</pre><p>See? Everything between the boundary markers is part of the array.
Simple.
</p><p>Now think back to your junior-high school algebra course, when you
were learning how to draw graphs. Remember that a graph terminating
@@ -380,7 +380,7 @@ global C locale is modified if a named C++ locale object is set as the
global locale" (emphasis Paolo), that is:
</p><pre class="programlisting">std::locale::global(std::locale(""));</pre><p>affects the C functions as if the following call was made:</p><pre class="programlisting">std::setlocale(LC_ALL, "");</pre><p>
On the other hand, there is *no* vice versa, that is, calling
- setlocale has *no* whatsoever on the C++ locale mechanism, in
+ setlocale has *no* effect whatsoever on the C++ locale mechanism, in
particular on the working of locale(""), which constructs the locale
object from the environment of the running program, that is, in
practice, the set of LC_ALL, LANG, etc. variable of the shell.
@@ -179,7 +179,7 @@
system's environment before running the program. If your program
crashes with <code class="constant">GLIBCXX_FORCE_NEW</code> in the
environment, it likely means that you linked against objects
- built against the older library (objects which might still using the
+ built against the older library (objects which might still be using the
cached allocations...).
</p></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.using"></a>Using a Specific Allocator</h4></div></div></div><p>
You can specify different memory management schemes on a
@@ -202,9 +202,9 @@
extension allocators: say a simple one like
<code class="classname">new_allocator</code>.
</p><p>
- Since C++11 the minimal interface require for an allocator is
+ Since C++11 the minimal interface required for an allocator is
much smaller, as <code class="classname">std::allocator_traits</code>
- can provide default for much of the interface.
+ can provide defaults for much of the interface.
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.ext"></a>Extension Allocators</h4></div></div></div><p>
Several other allocators are provided as part of this
implementation. The location of the extension allocators and their
@@ -316,7 +316,7 @@
AP is not meant to be a supersmart solution to all resource
leaks everywhere. Neither is it meant to be an effective form
of garbage collection (although it can help, a little bit).
- And it can <span class="emphasis"><em>not</em></span>be used for arrays!
+ And it can <span class="emphasis"><em>not</em></span> be used for arrays!
</p><p>
<acronym class="acronym">AP</acronym> is meant to prevent nasty leaks in the
presence of exceptions. That's <span class="emphasis"><em>all</em></span>. This
@@ -22,7 +22,7 @@ What's the use? Well, when a deallocation occurs we can now look at
the thread id and find out if it was allocated by another thread id
and decrease the used counter of that thread instead, thus keeping the
free and used counters correct. And keeping the free and used counters
-corrects is very important since the relationship between these two
+correct is very important since the relationship between these two
variables decides if memory should be returned to the global pool or
not when a deallocation occurs.
</p><p>
@@ -92,8 +92,8 @@ deallocation made the used counter of the allocating thread is
decreased and the freelist of the deallocation thread gets longer and
longer. But the calculation made in deallocate() will limit the length
of the freelist in the deallocation thread to _S_freelist_headroom %
-of it's used counter. In this case, when the freelist (given that the
-_S_freelist_headroom is at it's default value of 10%) exceeds 52
+of its used counter. In this case, when the freelist (given that the
+_S_freelist_headroom is at its default value of 10%) exceeds 52
(516/10) blocks will be returned to the global pool where the
allocating thread may pick them up and reuse them.
</p><p>
@@ -111,7 +111,7 @@ The _S_initialize() function:
- Initialize the free and used counters of each bin_record:
- bin_record->free = An array of size_t. This keeps track of the number
of blocks on a specific thread's freelist in each bin. I.e., if a thread
- has 12 32-byte blocks on it's freelists and allocates one of these, this
+ has 12 32-byte blocks on its freelists and allocates one of these, this
counter would be decreased to 11.
- bin_record->used = An array of size_t. This keeps track of the number
@@ -172,7 +172,7 @@ There exists one global instance of the class <code class="classname">_Settings<
i. e. it is a singleton. It can be read and written by calling
<code class="code">__gnu_parallel::_Settings::get</code> and
<code class="code">__gnu_parallel::_Settings::set</code>, respectively.
-Please note that the first call return a const object, so direct manipulation
+Please note that the first call returns a const object, so direct manipulation
is forbidden.
See <a class="link" href="https://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">
<code class="filename"><parallel/settings.h></code></a>
@@ -193,7 +193,7 @@ int main()
return 0;
}
-</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.design.impl"></a>Implementation Namespaces</h3></div></div></div><p> One namespace contain versions of code that are always
+</pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.design.impl"></a>Implementation Namespaces</h3></div></div></div><p> One namespace contains versions of code that are always
explicitly sequential:
<code class="code">__gnu_serial</code>.
</p><p> Two namespaces contain the parallel mode:
@@ -5,6 +5,6 @@ Also, the order of execution is not guaranteed for some functions, of course.
Therefore, user-defined functors should not have any concurrent side effects.
</p><p> Since the current GCC OpenMP implementation does not support
OpenMP parallel regions in concurrent threads,
-it is not possible to call parallel STL algorithm in
+it is not possible to call a parallel STL algorithm in
concurrent threads, either.
It might work with other compilers, though.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="parallel_mode_using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 19. Parallel Mode </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html>
\ No newline at end of file
@@ -15,7 +15,7 @@
</p><pre class="screen">
<strong class="userinput"><code>make check-performance-parallel</code></strong>
</pre><p>
- The result file for performance testing are in the
+ The result file for performance testing is in the
<code class="filename">testsuite</code> directory, in the file
<code class="filename">libstdc++_performance.sum</code>. In addition, the
policy-based containers have their own visualizations, which have
@@ -72,7 +72,7 @@ ln -s libiconv-1.16 libiconv
libiconv using the <code class="option">--enable-static</code> configure
option to get the static library.
</p></li></ul></div><p>
- If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt
+ If GCC 3.1.0 or later is being used on GNU/Linux, an attempt
will be made to use "C" library functionality necessary for
C++ named locale support, e.g. the <code class="function">newlocale</code>
and <code class="function">uselocale</code> functions.
@@ -480,7 +480,7 @@
<br />
      Don't use names in the same scope that differ only in the prefix,<br />
      e.g. _S_top and _M_top. See <a class="link" href="source_code_style.html#coding_style.bad_identifiers" title="Bad Identifiers">BADNAMES</a> for a list of forbidden names.<br />
-      (The most tempting of these seem to be and "_T" and "_N".)<br />
+      (The most tempting of these seem to be "_T" and "_N".)<br />
<br />
      Names must never have "__" internally; it would confuse name<br />
      unmanglers on some targets. Also, never use "__[0-9]", same reason.<br />
@@ -8,7 +8,7 @@
    The Library<br />
    -----------<br />
<br />
-    This paper is covers two major areas:<br />
+    This paper covers two major areas:<br />
<br />
    - Features and policies not mentioned in the standard that<br />
    the quality of the library implementation depends on, including<br />
@@ -42,10 +42,10 @@
    When these hooks are not used, any time and code expended to<br />
    support that flexibility is wasted.<br />
<br />
-    - Templates are often described as causing to "code bloat". In<br />
+    - Templates are often described as causing "code bloat". In<br />
    practice, this refers (when it refers to anything real) to several<br />
    independent processes. First, when a class template is manually<br />
-    instantiated in its entirely, current compilers place the definitions<br />
+    instantiated in its entirety, current compilers place the definitions<br />
    for all members in a single object file, so that a program linking<br />
    to one member gets definitions of all. Second, template functions<br />
    which do not actually depend on the template argument are, under<br />
@@ -564,7 +564,7 @@
    pointers and iterators, and that must be fixed before safer iterators<br />
    can be introduced.<br />
<br />
-    Some of the functions in <cstring> are different from the C version.<br />
+    Some of the functions in <cstring> are different from the C version,<br />
    generally overloaded on const and non-const argument pointers. For<br />
    example, in <cstring> strchr is overloaded. The functions isupper<br />
    etc. in <cctype> typically implemented as macros in C are functions<br />
@@ -820,7 +820,7 @@
    interesting problem. It is possible to define an inline std::fprintf()<br />
    implemented in terms of the 'extern "C"' vfprintf(), but there is no<br />
    standard vfscanf() to use to implement std::fscanf(). It appears that<br />
-    vfscanf but be re-implemented in C++ for targets where no vfscanf<br />
+    vfscanf must be re-implemented in C++ for targets where no vfscanf<br />
    extension has been defined. This is interesting in that it seems<br />
    to be the only significant case in the C library where this kind of<br />
    rewriting is necessary. (Of course Glibc provides the vfscanf()<br />
@@ -137,7 +137,7 @@ mainline GCC, not in any particular release.
data is already in the stdio buffer, the data may be completely safe!
</p><p><span class="emphasis"><em>27.6.1.1.2 [lib.istream::sentry]</em></span>,
<span class="emphasis"><em>27.6.2.3 [lib.ostream::sentry]</em></span> The I/O sentry ctor
- and dtor can perform additional work than the minimum required. We are
+ and dtor can perform more work than the minimum required. We are
not currently taking advantage of this yet.
</p><p><span class="emphasis"><em>27.7.1.3 [lib.stringbuf.virtuals]/16</em></span>,
<span class="emphasis"><em>27.8.1.4 [lib.filebuf.virtuals]/10</em></span>
@@ -206,7 +206,7 @@ mainline GCC, not in any particular release.
<span class="emphasis"><em>26</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Numerics</em></span>
- </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.1</td><td align="left">Requirements</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.2</td><td align="left">Header <code class="code"><random></code> synopsis</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engine class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptor class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4.4</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distribution class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2</td><td align="left">Uniform distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3</td><td align="left">Bernoulli distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4</td><td align="left">Poisson distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5</td><td align="left">Normal distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6</td><td align="left">Sampling distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code"><valarray></code> synopsis</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.6</td><td align="left">The <code class="code">gslice</code> class</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.10</td><td align="left"><code class="code">valarray</code> range access</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.7.1</td><td align="left">Header <code class="code"><numeric></code> synopsis</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.2</td><td align="left">Accumulate></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.3</td><td align="left">Inner product</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.4</td><td align="left">Partial sum</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.5</td><td align="left">Adjacent difference</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.6</td><td align="left">Iota</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">
+ </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.1</td><td align="left">Requirements</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.2</td><td align="left">Header <code class="code"><random></code> synopsis</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engine class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptor class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.4.4</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distribution class templates</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2</td><td align="left">Uniform distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3</td><td align="left">Bernoulli distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4</td><td align="left">Poisson distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5</td><td align="left">Normal distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.5.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6</td><td align="left">Sampling distributions</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.5.8.6.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code"><valarray></code> synopsis</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.6</td><td align="left">The <code class="code">gslice</code> class</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.6.10</td><td align="left"><code class="code">valarray</code> range access</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left">Â </td><td align="left">Â </td></tr><tr><td align="left">26.7.1</td><td align="left">Header <code class="code"><numeric></code> synopsis</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.2</td><td align="left">Accumulate</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.3</td><td align="left">Inner product</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.4</td><td align="left">Partial sum</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.5</td><td align="left">Adjacent difference</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.7.6</td><td align="left">Iota</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">
<span class="emphasis"><em>27</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Input/output library</em></span>
@@ -978,7 +978,7 @@ since C++14 and the implementation is complete.
<span class="emphasis"><em>30</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Input/output library</em></span>
- </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left">Â </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left">Â </td></tr><tr><td align="left">30.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.10</td><td align="left">File systemss</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.11</td><td align="left">C library files</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">
+ </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left">Â </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left">Â </td></tr><tr><td align="left">30.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.10</td><td align="left">File systems</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">30.11</td><td align="left">C library files</td><td align="left">Y</td><td align="left">Â </td></tr><tr><td align="left">
<span class="emphasis"><em>31</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Regular expressions</em></span>
@@ -1119,7 +1119,7 @@ since C++14 and the implementation is complete.
</p><p>
<span class="emphasis"><em>29.4.1 [cfenv.syn]</em></span>
The effects of the <code class="filename"><cfenv></code> functions
- depends on whether the <code class="code">FENV_ACCESS</code> pragma is supported,
+ depend on whether the <code class="code">FENV_ACCESS</code> pragma is supported,
and on the C library that provides the header.
</p><p>
<span class="emphasis"><em>29.6.9 [c.math.rand]</em></span>
@@ -1185,7 +1185,7 @@ since C++14 and the implementation is complete.
(or <code class="code">_wopendir</code>/<code class="code">_wreaddir</code> on Windows).
</p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="iso.2017.par2ts"></a>Parallelism 2 TS</h5></div></div></div><p>
<span class="emphasis"><em>9.3 [parallel.simd.abi]</em></span>
- <code class="code">max_fixed_size<T></code> is 32, except when targetting
+ <code class="code">max_fixed_size<T></code> is 32, except when targeting
AVX512BW and <code class="code">sizeof(T)</code> is 1.
</p><p>
When targeting 32-bit x86,
@@ -1446,7 +1446,7 @@ or any notes about the implementation.
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201811L</code> </td></tr><tr><td align="left"> Input Range Adaptors </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf" target="_top">
P1035R7 </a>
- </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201907L</code> </td></tr><tr><td align="left"> <code class="code">ranges</code> compare algorithm are over-constrained </td><td align="left">
+ </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201907L</code> </td></tr><tr><td align="left"> <code class="code">ranges</code> compare algorithms are over-constrained </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html" target="_top">
P1716R3 </a>
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_ranges >= 201911L</code> </td></tr><tr><td align="left"> Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </td><td align="left">
@@ -77,7 +77,7 @@
</p><pre class="programlisting">
output << "a line of text" << endl;
output << some_data_variable << endl;
- output << "another line of text" << endl; </pre><p>The proper thing to do in this case to just write the data out
+ output << "another line of text" << endl; </pre><p>The proper thing to do in this case is to just write the data out
and let the libraries and the system worry about the buffering.
If you need a newline, just write a newline:
</p><pre class="programlisting">
@@ -78,7 +78,7 @@
</p><p>
Since C++11 the wrapper can be replaced with a lambda expression,
which can perform the conversion to <code class="code">unsigned char</code> and
- also ensure the single-argument form of <code class="code">std::lower</code> is used:
+ also ensure the single-argument form of <code class="code">std::tolower</code> is used:
</p><pre class="programlisting">
std::transform (s.begin(), s.end(), capital_s.begin(),
[](unsigned char c) { return std::tolower(c); });
@@ -125,7 +125,7 @@
case-insensitive comparisons are not as easy as they seem, and
why creating a class is the <span class="emphasis"><em>wrong</em></span> way to go
about it in production code. (The GotW answer mentions one of
- the principle difficulties; his article mentions more.)
+ the principal difficulties; his article mentions more.)
</p><p>Basically, this is "easy" only if you ignore some things,
things which may be too important to your program to ignore. (I chose
to ignore them when originally writing this entry, and am surprised
@@ -179,7 +179,7 @@
built-in types.
</p><p>If you want to use your own special character class, then you have
<a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html" target="_top">a lot
- of work to do</a>, especially if you with to use i18n features
+ of work to do</a>, especially if you wish to use i18n features
(facets require traits information but don't have a traits argument).
</p><p>Another example of how to specialize char_traits was given <a class="link" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html" target="_top">on the
mailing list</a> and at a later date was put into the file <code class="code">
@@ -304,7 +304,7 @@ stringtok(Container &container, string const &in,
stringstream classes. These are the bridge between the iostream
hierarchy and the string class, and they operate with regular
streams seamlessly because they inherit from the iostream
- hierarchy. An quick example:
+ hierarchy. A quick example:
</p><pre class="programlisting">
#include <iostream>
#include <string>
@@ -696,7 +696,7 @@ only default variables.
</p><p>
For example, take the test
functor <code class="classname">rand_reg_test</code> in
- in <code class="filename">testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc</code>. This uses <code class="classname">container_rand_regression_test</code> in
+ <code class="filename">testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc</code>. This uses <code class="classname">container_rand_regression_test</code> in
<code class="filename">testsuite/util/regression/rand/assoc/container_rand_regression_test.h</code>.
</p><p>
@@ -739,7 +739,7 @@ C++11 Requirements Test Sequence Descriptions
made through the container's <span class="type">allocator_type</span>,
which should be sufficient for container data
structures. Included in these tests are member functions
- are <span class="type">iterator</span> and <span class="type">const_iterator</span>
+ <span class="type">iterator</span> and <span class="type">const_iterator</span>
operations, <code class="function">pop_front</code>, <code class="function">pop_back</code>, <code class="function">push_front</code>, <code class="function">push_back</code>, <code class="function">insert</code>, <code class="function">erase</code>, <code class="function">swap</code>, <code class="function">clear</code>,
and <code class="function">rehash</code>. The container in question is
instantiated with two instrumented template arguments,
@@ -759,7 +759,7 @@ C++11 Requirements Test Sequence Descriptions
that container is constructed and all member functions
required to not throw exceptions are exercised. Included in
these tests are member functions
- are <span class="type">iterator</span> and <span class="type">const_iterator</span> operations, <code class="function">erase</code>, <code class="function">pop_front</code>, <code class="function">pop_back</code>, <code class="function">swap</code>,
+ <span class="type">iterator</span> and <span class="type">const_iterator</span> operations, <code class="function">erase</code>, <code class="function">pop_front</code>, <code class="function">pop_back</code>, <code class="function">swap</code>,
and <code class="function">clear</code>. The container in question is
instantiated with two instrumented template arguments,
with <code class="classname">__gnu_cxx::throw_allocator_random</code>
@@ -784,7 +784,7 @@ C++11 Requirements Test Sequence Descriptions
the container's last known good state using such parameters
as size, contents, and iterator references. Included in these
tests are member functions
- are <code class="function">push_front</code>, <code class="function">push_back</code>, <code class="function">insert</code>,
+ <code class="function">push_front</code>, <code class="function">push_back</code>, <code class="function">insert</code>,
and <code class="function">rehash</code>. The container in question is
instantiated with two instrumented template arguments,
with <code class="classname">__gnu_cxx::throw_allocator_limit</code>
@@ -793,7 +793,7 @@ C++11 Requirements Test Sequence Descriptions
the value type. This allows the test to loop through
conditional throw points.
</p><p>
- The general form demonstrated in
+ The general form is demonstrated in
<code class="filename">testsuite/23_containers/list/requirements/exception/propagation_coherent.cc
</code>. The instantiating test object is <code class="classname">__gnu_test::propagation_coherent</code> and is detailed in <code class="filename">testsuite/util/exception/safety.h</code>.
</p></li></ul></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.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="abi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Porting to New Hardware or Operating Systems </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> ABI Policy and Guidelines</td></tr></table></div></body></html>
\ No newline at end of file
@@ -42,7 +42,7 @@
To mitigate this, a <code class="code">time_zone</code> can be expanded for a
particular time range at the start
of the program (and after each reload), by iterating over the
- <code class="code">sys_info</code> dequence, as in the example below.
+ <code class="code">sys_info</code> sequence, as in the example below.
</p><pre class="programlisting">
void
expand_zone(const std::chrono::time_zone* tz,
@@ -61,9 +61,9 @@
(by <code class="code">std::chrono::locate_zone</code>) IANA zone name
determined as follows (for platforms other than AIX and Windows):
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
- On system supporting <code class="code">readlink</code>, suffix components of the
+ On systems supporting <code class="code">readlink</code>, suffix components of the
path of the file linked by <code class="code">/etc/localtime</code>. The suffixes
- are matched in the other of increasing length, starting from the final
+ are matched in the order of increasing length, starting from the final
component, until the match is found in the time zone database.
Any repeated slashes (<code class="code">//</code>) are eliminated.
</li><li class="listitem">
@@ -91,7 +91,7 @@
If <code class="code">TimeZoneKeyName</code> corresponds to multiple IANA zones,
a 2-letter country code is used, retrieved by applying <code class="code">GetGeoInfoW</code>
on the result of <code class="code">GetUserGeoID(GEOCLASS_NATION)</code>.
- If determining the country code fails, or no entry exits for a given code,
+ If determining the country code fails, or no entry exists for a given code,
the first mapping entry (<code class="code">001</code>) is returned.
</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="zone.db.sources"></a>data sources</h3></div></div></div><p>
Depending on the build configuration (see
@@ -105,14 +105,14 @@
By default, <span class="emphasis"><em>zoneinfo_dir</em></span> is set to the
system-specific default directory (if a suitable dir is known for target),
usually <code class="code">/usr/share/zoneinfo</code>. If no such directory
- exits, or it does not contain the required files in the correct format,
+ exists, or it does not contain the required files in the correct format,
embedded static data is used as fallback.
</p><p>
In addition to <code class="code">--with-libstdcxx-zoneinfo=</code> configure option
(used during GCC build), the path of <span class="emphasis"><em>zoneinfo_dir</em></span>
can be overridden by the application by providing a definition of the
- <code class="code">__gnu_cxx::zoneinfo_dir_overrride()</code> function. The
- returned path should be directory that contains <code class="code">tzdata.zi</code>
+ <code class="code">__gnu_cxx::zoneinfo_dir_override()</code> function. The
+ returned path should be a directory that contains <code class="code">tzdata.zi</code>
and <code class="code">leapseconds</code> files in the
<a class="link" href="https://man7.org/linux/man-pages/man8/zic.8.html#FILES" target="_top">
<code class="code">zic</code> format</a>.
@@ -154,7 +154,7 @@
(e.g. due to memory constraints), entries
may be removed from <code class="code">tzdb_list</code> using <code class="code">tzdb_list::erase_after</code>.
When using this function, you are responsible for ensuring that the application
- no longer is no longer using any <code class="code">time_zone*</code> to a removed database.
+ is no longer using any <code class="code">time_zone*</code> to a removed database.
If you erase a <code class="code">tzdb</code> while some part of the application is still
using it (or one of its <code class="code">time_zone</code> objects) you will create
a dangling pointer, leading to undefined behaviour.
@@ -6,7 +6,7 @@
Here is how the hinting works in the libstdc++ implementation of unordered
containers, and the rationale behind this behavior.
</p><p>
- In the following text, the phrase <span class="emphasis"><em>equivalent to</em></span> refer
+ In the following text, the phrase <span class="emphasis"><em>equivalent to</em></span> refers
to the result of the invocation of the equal predicate imposed on the
container by its <code class="code">key_equal</code> object, which defaults to (basically)
<span class="quote">“<span class="quote">==</span>�</span>.
@@ -22,7 +22,7 @@
In the case of <code class="code">std::unordered_set</code> and
<code class="code">std::unordered_map</code> you need to look through all bucket's
elements for an equivalent one. If there is none the insertion can be
- achieved, otherwise the insertion fails. As we always need to loop though
+ achieved, otherwise the insertion fails. As we always need to loop through
all bucket's elements, the hint doesn't tell us if the element is already
present, and we don't have any constraint on where the new element is to
be inserted, the hint won't be of any help and will then be ignored.
@@ -3,7 +3,7 @@
of multithreaded applications which use the Standard C++
library. This information is GCC-specific since the C++
standard does not address matters of multithreaded applications.
- </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.prereq"></a>Prerequisites</h3></div></div></div><p>All normal disclaimers aside, multithreaded C++ application are
+ </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.prereq"></a>Prerequisites</h3></div></div></div><p>All normal disclaimers aside, multithreaded C++ applications are
only supported when libstdc++ and all user code was built with
compilers which report (via <code class="code"> gcc/g++ -v </code>) the same thread
model and that model is not <span class="emphasis"><em>single</em></span>. As long as your
@@ -103,7 +103,7 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
object_a.mutate ();
} </pre><p>All library types are safe to use in a multithreaded program
if objects are not shared between threads or as
- long each thread carefully locks out access by any other
+ long as each thread carefully locks out access by any other
thread while it modifies any object visible to another thread.
Unless otherwise documented, the only exceptions to these rules
are atomic operations on the types in
@@ -265,8 +265,8 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
(<span class="emphasis"><em>For most clients...</em></span>), which points out that
locking must nearly always be done outside the container, by
client code (that'd be you, not us). There is a notable
- exceptions to this rule. Allocators called while a container or
- element is constructed uses an internal lock obtained and
+ exception to this rule. Allocators called while a container or
+ element is constructed use an internal lock obtained and
released solely within libstdc++ code (in fact, this is the
reason STL requires any knowledge of the thread configuration).
</p><p>For implementing a container which does its own locking, it is
@@ -32,7 +32,7 @@
<code class="filename">type_traits</code>
</p></li></ul></div><p>
As of GCC 13, libstdc++ implements P1642, which brings in many more
- headers, as well a quite a few ones not covered by the paper.
+ headers, as well as quite a few ones not covered by the paper.
In general, if a feature does not require traditionally libc-provided
facilities, or dynamic memory allocation, it's enabled in the
@@ -67,7 +67,7 @@
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.linkage.dynamic"></a>Finding Dynamic or Shared Libraries</h3></div></div></div><p>
If the only library built is the static library
(<code class="filename">libstdc++.a</code>), or if
- specifying static linking, this section is can be skipped. But
+ specifying static linking, this section can be skipped. But
if building or using a shared library
(<code class="filename">libstdc++.so</code>), then
additional location information will need to be provided.
@@ -21,7 +21,7 @@ exception neutrality and exception safety.
Please note that using exceptions in combination with templates
imposes an additional requirement for exception
safety. Instantiating types are required to have destructors that
- do no throw.
+ do not throw.
</p><p>
Using the layered approach from Abrahams, can classify library
components as providing set levels of safety. These will be called
@@ -39,7 +39,7 @@ exception neutrality and exception safety.
Two. Don't leak resources when exceptions are thrown. This is
also referred to as the <span class="quote">“<span class="quote">basic</span>�</span> exception safety guarantee.
</p><p>
- This applicable throughout the standard library.
+ This is applicable throughout the standard library.
</p></li><li class="listitem"><p>
Three. Commit-or-rollback semantics. This is
referred to as <span class="quote">“<span class="quote">strong</span>�</span> exception safety guarantee.
@@ -56,9 +56,9 @@ exception neutrality and exception safety.
propagating exceptions should not be swallowed in
gratuitous <code class="literal">catch(...)</code> blocks. Instead,
matching <code class="literal">try</code> and <code class="literal">catch</code>
- blocks should have specific catch handlers and allow un-handed
+ blocks should have specific catch handlers and allow unhandled
exception objects to propagate. If a
- terminating <code class="literal">catch(...)</code> blocks exist then it
+ terminating <code class="literal">catch(...)</code> block exists then it
should end with a <code class="literal">throw</code> to re-throw the current
exception.
</p><p>
@@ -186,7 +186,7 @@ exception neutrality and exception safety.
configuration of the C++ compiler. On recent hardware with GNU
system software of the same age, the combined code and data size
overhead for enabling exception handling is around 7%. Of course,
- if code size is of singular concern than using the appropriate
+ if code size is of singular concern then using the appropriate
optimizer setting with exception handling enabled
(ie, <code class="literal">-Os -fexceptions</code>) may save up to twice
that, and preserve error checking.
@@ -84,14 +84,14 @@ compilation errors, but will not define anything.
</p><p></p><div class="table"><a id="table.cxx26_headers"></a><p class="title"><strong>Table 3.12. C++ 2026 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 2026 Library Headers" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">text_encoding</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
<a class="xref" href="using_headers.html#table.filesystemts_headers" title="Table 3.13. File System TS Header">Table 3.13, “File System TS Header�</a>,
-shows the additional include file define by the
+shows the additional include file defined by the
File System Technical Specification, ISO/IEC TS 18822:2015.
This is available in C++11 and later compilation modes.
Including this header in earlier modes will not result in
compilation errors, but will not define anything.
</p><p></p><div class="table"><a id="table.filesystemts_headers"></a><p class="title"><strong>Table 3.13. File System TS Header</strong></p><div class="table-contents"><table class="table" summary="File System TS Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">experimental/filesystem</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
<a class="xref" href="using_headers.html#table.libfundts_headers" title="Table 3.14. Library Fundamentals TS Headers">Table 3.14, “Library Fundamentals TS Headers�</a>,
-shows the additional include files define by the C++ Extensions for
+shows the additional include files defined by the C++ Extensions for
Library Fundamentals Technical Specification, ISO/IEC TS 19568:2015,
ISO/IEC TS 19568:2017, and ISO/IEC TS 19568:2024.
These are available in C++14 and later compilation modes, except for
@@ -101,7 +101,7 @@ Including these headers in earlier modes will not result in
compilation errors, but will not define anything.
</p><p></p><div class="table"><a id="table.libfundts_headers"></a><p class="title"><strong>Table 3.14. Library Fundamentals TS Headers</strong></p><div class="table-contents"><table class="table" summary="Library Fundamentals TS Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">experimental/algorithm</code></td><td align="left"><code class="filename">experimental/any</code></td><td align="left"><code class="filename">experimental/array</code></td><td align="left"><code class="filename">experimental/chrono</code></td><td align="left"><code class="filename">experimental/deque</code></td></tr><tr><td align="left"><code class="filename">experimental/forward_list</code></td><td align="left"><code class="filename">experimental/functional</code></td><td align="left"><code class="filename">experimental/iterator</code></td><td align="left"><code class="filename">experimental/list</code></td><td align="left"><code class="filename">experimental/map</code></td></tr><tr><td align="left"><code class="filename">experimental/memory</code></td><td align="left"><code class="filename">experimental/memory_resource</code></td><td align="left"><code class="filename">experimental/numeric</code></td><td align="left"><code class="filename">experimental/optional</code></td><td align="left"><code class="filename">experimental/propagate_const</code></td></tr><tr><td align="left"><code class="filename">experimental/random</code></td><td align="left"><code class="filename">experimental/ratio</code></td><td align="left"><code class="filename">experimental/regex</code></td><td align="left"><code class="filename">experimental/scope</code></td><td align="left"><code class="filename">experimental/set</code></td></tr><tr><td align="left"><code class="filename">experimental/source_location</code></td><td align="left"><code class="filename">experimental/string</code></td><td align="left"><code class="filename">experimental/string_view</code></td><td align="left"><code class="filename">experimental/system_error</code></td><td align="left"><code class="filename">experimental/tuple</code></td></tr><tr><td align="left"><code class="filename">experimental/type_traits</code></td><td align="left"><code class="filename">experimental/unordered_map</code></td><td align="left"><code class="filename">experimental/unordered_set</code></td><td align="left"><code class="filename">experimental/utility</code></td><td align="left"><code class="filename">experimental/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
<a class="xref" href="using_headers.html#table.networkingts_headers" title="Table 3.15. Networking TS Headers">Table 3.15, “Networking TS Headers�</a>,
-shows the additional include files define by the
+shows the additional include files defined by the
Networking Technical Specification, ISO/IEC TS 19216:2018.
These are available in C++14 and later compilation modes.
Including these headers in earlier modes will not result in
@@ -59,7 +59,7 @@
from the API. This macro is dependent on the version of the
standard being tracked, and as a result may give different results for
different <code class="code">-std</code> options. This may
- be useful in updating old C++ code which no longer meet the
+ be useful in updating old C++ code which no longer meets the
requirements of the language, or for checking current code
against new language standards.
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_USE_CXX11_ABI</code></span></dt><dd><p>
@@ -70,7 +70,7 @@
When defined to a non-zero value the library headers will use the
new C++11-conforming ABI introduced in GCC 5, rather than the older
ABI introduced in GCC 3.4. This changes the definition of several
- class templates, including <code class="classname">std:string</code>,
+ class templates, including <code class="classname">std::string</code>,
<code class="classname">std::list</code> and some locale facets.
For more details see <a class="xref" href="using_dual_abi.html" title="Dual ABI">Dual ABI</a>.
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_CONCEPT_CHECKS</code></span></dt><dd><p>
@@ -55,7 +55,7 @@ namespace gtk
As an added bonus,
<code class="code">std::string</code> does not get imported into
the global namespace. Additionally, a more elaborate arrangement can be made for backwards compatibility and portability, whereby the
- <code class="code">using</code>-declarations can wrapped in macros that
+ <code class="code">using</code>-declarations can be wrapped in macros that
are set based on autoconf-tests to either "" or i.e. <code class="code">using
std::string;</code> (depending on whether the system has
libstdc++ in <code class="code">std::</code> or not). (ideas from
@@ -32,7 +32,7 @@
<para>
The GNU C++ library sources have been specially formatted so that
with the proper invocation of another tool (Doxygen), a set of
- indexed reference material can generated from the sources files
+ indexed reference material can be generated from the source files
themselves. The resultant documentation is referred to as the API
documentation, and is useful for examining the signatures of public
member functions for the library classes, finding out what is in a
@@ -70,7 +70,7 @@
<author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
<para>
- Referenced counted string, C++1998 implementation status.
+ Reference counted string, C++1998 implementation status.
</para>
</personblurb></author>
@@ -53,7 +53,7 @@
<answer xml:id="a-why">
<para>
The completion of the initial ISO C++ standardization effort gave the C++
- community a powerful set of reuseable tools in the form of the C++
+ community a powerful set of reusable tools in the form of the C++
Standard Library. However, for several years C++ implementations were
(as the Draft Standard used to say) <quote>incomplet and
incorrekt</quote>, and many suffered from limitations of the compilers
@@ -527,7 +527,7 @@
</question>
<answer xml:id="a-solaris_long_long">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
By default we try to support the C99 <type>long long</type> type.
@@ -603,7 +603,7 @@
</question>
<answer xml:id="a-darwin_ctype">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
This was a long-standing bug in the OS X support. Fortunately, the
@@ -622,7 +622,7 @@
</question>
<answer xml:id="a-threads_i386">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>Support for atomic integer operations was broken on i386
platforms. The assembly code accidentally used opcodes that are
@@ -645,7 +645,7 @@
</question>
<answer xml:id="a-atomic_mips">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
The atomic locking routines for MIPS targets requires MIPS II
@@ -690,7 +690,7 @@
</question>
<answer xml:id="a-freebsd_wchar">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
Older versions of FreeBSD's C library do not have sufficient
@@ -809,7 +809,7 @@
</question>
<answer xml:id="a-stream_reopening_fails">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
Prior to GCC 4.0 this was one of the most-reported non-bug reports.
@@ -878,7 +878,7 @@
</question>
<answer xml:id="a-ambiguous_overloads">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
Another problem is the <literal>rel_ops</literal> namespace and the template
@@ -903,7 +903,7 @@
</question>
<answer xml:id="a-v2_headers">
<note>
- <para>This answer is old and probably no longer be relevant.</para>
+ <para>This answer is old and probably no longer relevant.</para>
</note>
<para>
If you are using headers in
@@ -31,7 +31,7 @@
The C++ Standard Library has many include files, types defined in
those include files, specific named functions, and other
behavior. The text of these behaviors, as written in source include
- files, is called the Application Programing Interface, or API.
+ files, is called the Application Programming Interface, or API.
</para>
<para>
@@ -220,7 +220,7 @@ compatible.
example, filename <filename>libstdc++.so.5.0.4</filename>
corresponds to a <constant>DT_SONAME</constant> of
<constant>libstdc++.so.5</constant>. Binaries with equivalent
- <constant>DT_SONAME</constant>s are forward-compatibile: in
+ <constant>DT_SONAME</constant>s are forward-compatible: in
the table below, releases incompatible with the previous
one are explicitly noted.
If a particular release is not listed, its libstdc++.so binary
@@ -915,7 +915,7 @@ exceptional symbols are allowed to be visible.</para></listitem>
<listitem><para>Freezing the API</para>
<para>Disallowed changes, as above, are not made on a stable release
-branch. Enforcement tends to be less strict with GNU extensions that
+branch. Enforcement tends to be less strict with GNU extensions than
standard includes.</para>
</listitem>
</orderedlist>
@@ -273,7 +273,7 @@
system's environment before running the program. If your program
crashes with <constant>GLIBCXX_FORCE_NEW</constant> in the
environment, it likely means that you linked against objects
- built against the older library (objects which might still using the
+ built against the older library (objects which might still be using the
cached allocations...).
</para>
@@ -318,9 +318,9 @@
</para>
<para>
- Since C++11 the minimal interface require for an allocator is
+ Since C++11 the minimal interface required for an allocator is
much smaller, as <classname>std::allocator_traits</classname>
- can provide default for much of the interface.
+ can provide defaults for much of the interface.
</para>
@@ -899,7 +899,7 @@ indicate a place that may require attention for multi-thread safety.
Don't use names in the same scope that differ only in the prefix,
e.g. _S_top and _M_top. See <link linkend="coding_style.bad_identifiers">BADNAMES</link> for a list of forbidden names.
- (The most tempting of these seem to be and "_T" and "_N".)
+ (The most tempting of these seem to be "_T" and "_N".)
Names must never have "__" internally; it would confuse name
unmanglers on some targets. Also, never use "__[0-9]", same reason.
@@ -1051,7 +1051,7 @@ indicate a place that may require attention for multi-thread safety.
The Library
-----------
- This paper is covers two major areas:
+ This paper covers two major areas:
- Features and policies not mentioned in the standard that
the quality of the library implementation depends on, including
@@ -1085,10 +1085,10 @@ indicate a place that may require attention for multi-thread safety.
When these hooks are not used, any time and code expended to
support that flexibility is wasted.
- - Templates are often described as causing to "code bloat". In
+ - Templates are often described as causing "code bloat". In
practice, this refers (when it refers to anything real) to several
independent processes. First, when a class template is manually
- instantiated in its entirely, current compilers place the definitions
+ instantiated in its entirety, current compilers place the definitions
for all members in a single object file, so that a program linking
to one member gets definitions of all. Second, template functions
which do not actually depend on the template argument are, under
@@ -1607,7 +1607,7 @@ indicate a place that may require attention for multi-thread safety.
pointers and iterators, and that must be fixed before safer iterators
can be introduced.
- Some of the functions in <cstring> are different from the C version.
+ Some of the functions in <cstring> are different from the C version,
generally overloaded on const and non-const argument pointers. For
example, in <cstring> strchr is overloaded. The functions isupper
etc. in <cctype> typically implemented as macros in C are functions
@@ -1863,7 +1863,7 @@ indicate a place that may require attention for multi-thread safety.
interesting problem. It is possible to define an inline std::fprintf()
implemented in terms of the 'extern "C"' vfprintf(), but there is no
standard vfscanf() to use to implement std::fscanf(). It appears that
- vfscanf but be re-implemented in C++ for targets where no vfscanf
+ vfscanf must be re-implemented in C++ for targets where no vfscanf
extension has been defined. This is interesting in that it seems
to be the only significant case in the C library where this kind of
rewriting is necessary. (Of course Glibc provides the vfscanf()
@@ -29,7 +29,7 @@
AP is not meant to be a supersmart solution to all resource
leaks everywhere. Neither is it meant to be an effective form
of garbage collection (although it can help, a little bit).
- And it can <emphasis>not</emphasis>be used for arrays!
+ And it can <emphasis>not</emphasis> be used for arrays!
</para>
<para>
<acronym>AP</acronym> is meant to prevent nasty leaks in the
@@ -225,8 +225,8 @@ else return false.</para></listitem>
<para>
This has nothing to do with the algorithm per-se,
- only with some vales that must be chosen correctly to ensure that the
- allocator performs well in a real word scenario, and maintains a good
+ only with some values that must be chosen correctly to ensure that the
+ allocator performs well in a real world scenario, and maintains a good
balance between the memory consumption and the allocation/deallocation
speed.
</para>
@@ -464,7 +464,7 @@ Block a bitmap as well?
have nothing to do with the memory that is given to the user. As
I have earlier mentioned, a 1 in the bitmap's bit field
indicates free, while a 0 indicates allocated. This lets us
- check 32 bits at a time to check whether there is at lease one
+ check 32 bits at a time to check whether there is at least one
free block in those 32 blocks by testing for equality with
(0). Now, the allocate function will given a memory block find
the corresponding bit in the bitmap, and will reset it (i.e.,
@@ -482,7 +482,7 @@ Block a bitmap as well?
<para>
Now, when the first request for allocation of a single object
comes along, the first block in address order is returned. And
- since the bit-maps in the reverse order to that of the address
+ since the bit-maps are in the reverse order to that of the address
order, the last bit (LSB if the bit-map is considered as a
binary word of 64-bits) is re-set to 0.
</para>
@@ -497,7 +497,7 @@ Block a bitmap as well?
<section xml:id="bitmap.impl.locality" xreflabel="Locality"><info><title>Locality</title></info>
<para>
- Another issue would be whether to keep the all bitmaps in a
+ Another issue would be whether to keep all the bitmaps in a
separate area in memory, or to keep them near the actual blocks
that will be given out or allocated for the client. After some
testing, I've decided to keep these bitmaps close to the actual
@@ -505,7 +505,7 @@ Block a bitmap as well?
</para>
<orderedlist>
- <listitem><para>Constant time access for the bitmap themselves, since no kind of
+ <listitem><para>Constant time access for the bitmaps themselves, since no kind of
look up will be needed to find the correct bitmap list or its
equivalent.</para></listitem>
<listitem><para>And also this would preserve the cache as far as possible.</para></listitem>
@@ -250,7 +250,7 @@ in the build directory starts the build process. The <literal>all</literal> targ
libtool bits
</programlisting>
<para>
- Things which we don't seem to use directly, but just has to be
+ Things which we don't seem to use directly, but just have to be
present otherwise stuff magically goes wonky.
</para>
@@ -404,7 +404,7 @@ in the build directory starts the build process. The <literal>all</literal> targ
<para>
The <filename class="library">libstdc++.so</filename> shared library must
-be carefully managed to maintain binary compatible with older versions
+be carefully managed to maintain binary compatibility with older versions
of the library. This ensures a new version of the library is still usable by
programs that were linked against an older version.
</para>
@@ -527,7 +527,7 @@ baseline file.
<section xml:id="build_hacking.make"><info><title>Make</title></info>
<para>
- The build process has to make all of object files needed for
+ The build process has to make all of the object files needed for
static or shared libraries, but first it has to generate some
include files. The general order is as follows:
</para>
@@ -662,7 +662,7 @@ baseline file.
</para>
<para>
Generates needed compatibility objects for shared and static
- libraries. Shared-only code is seggregated at compile-time via
+ libraries. Shared-only code is segregated at compile-time via
the macro <literal>_GLIBCXX_SHARED</literal>.
</para>
@@ -226,7 +226,7 @@ mechanism may be required.
</para></listitem>
<listitem><para>
- Something to indicate if the conversion requested if valid.
+ Something to indicate if the conversion requested is valid.
</para></listitem>
<listitem><para>
@@ -87,7 +87,7 @@ supporting atomic operations.
</para>
<para>
-The two functions functions are:
+The two functions are:
</para>
<programlisting>
@@ -259,7 +259,7 @@ hardware, hand-crafted assembly is selected. This is the case for the following
<listitem><para>hppa</para></listitem>
<listitem><para>i386</para></listitem>
<listitem><para>i486</para></listitem>
- <listitem><para>m48k</para></listitem>
+ <listitem><para>m68k</para></listitem>
<listitem><para>mips</para></listitem>
<listitem><para>sparc</para></listitem>
</itemizedlist>
@@ -156,7 +156,7 @@
<para>
For <code>multimap</code> and <code>multiset</code>, the
restrictions are slightly looser: <quote>greater than</quote>
- should be replaced by <quote>not less than</quote>and <quote>less
+ should be replaced by <quote>not less than</quote> and <quote>less
than</quote> should be replaced by <quote>not greater
than.</quote> (Why not replace greater with
greater-than-or-equal-to? You probably could in your head, but
@@ -343,7 +343,7 @@
containers, and the rationale behind this behavior.
</para>
<para>
- In the following text, the phrase <emphasis>equivalent to</emphasis> refer
+ In the following text, the phrase <emphasis>equivalent to</emphasis> refers
to the result of the invocation of the equal predicate imposed on the
container by its <code>key_equal</code> object, which defaults to (basically)
<quote>==</quote>.
@@ -361,7 +361,7 @@
In the case of <code>std::unordered_set</code> and
<code>std::unordered_map</code> you need to look through all bucket's
elements for an equivalent one. If there is none the insertion can be
- achieved, otherwise the insertion fails. As we always need to loop though
+ achieved, otherwise the insertion fails. As we always need to loop through
all bucket's elements, the hint doesn't tell us if the element is already
present, and we don't have any constraint on where the new element is to
be inserted, the hint won't be of any help and will then be ignored.
@@ -34,7 +34,7 @@ ctype<char>
</code>
</para>
<para>
-This is simple specialization. Implementing this was a piece of cake.
+This is a simple specialization. Implementing this was a piece of cake.
</para>
<para>
@@ -45,8 +45,8 @@ ctype<wchar_t>
<para>
This specialization, by specifying all the template parameters, pretty
much ties the hands of implementors. As such, the implementation is
-straightforward, involving <function>mcsrtombs</function> for the
-conversions between <type>char</type> to <type>wchar_t</type> and
+straightforward, involving <function>mbsrtowcs</function> for the
+conversions between <type>char</type> and <type>wchar_t</type> and
<function>wcsrtombs</function> for conversions between <type>wchar_t</type>
and <type>char</type>.
</para>
@@ -81,7 +81,7 @@ characters.
<listitem>
<para>
<type>mask</type> typedef in <classname>codecvt_base</classname>,
- argument types in <type>codecvt</type>. what is know about this type?
+ argument types in <type>codecvt</type>. what is known about this type?
</para></listitem>
<listitem>
@@ -276,7 +276,7 @@
</para>
<para>
- These settings can either be switched on in at the GDB command line,
+ These settings can either be switched on at the GDB command line,
or put into a <filename>.gdbinit</filename> file to establish default
debugging characteristics, like so:
</para>
@@ -370,7 +370,7 @@ That alias is deprecated and may be removed in a future release.
mode will abort with a diagnostic when it detects undefined
behavior.</para></listitem>
- <listitem><para><emphasis>Performance</emphasis>: the additional of the libstdc++ debug mode
+ <listitem><para><emphasis>Performance</emphasis>: the addition of the libstdc++ debug mode
must not affect the performance of the library when it is compiled
in release mode. Performance of the libstdc++ debug mode is
secondary (and, in fact, will be worse than the release
@@ -593,7 +593,7 @@ template<typename _Tp, typename _Allocator = allocator<_Tp>
either the debug-mode assertion
macro <code>_GLIBCXX_DEBUG_ASSERT</code> , its pedantic
cousin <code>_GLIBCXX_DEBUG_PEDASSERT</code>, or the assertion
- check macro that supports more advance formulation of error
+ check macro that supports more advanced formulation of error
messages, <code>_GLIBCXX_DEBUG_VERIFY</code>. These macros are
documented more thoroughly in the debug mode source code.</para>
</section>
@@ -782,7 +782,7 @@ test02()
<listitem><para><emphasis>Completely separate debug/release libraries</emphasis>: This is by
far the simplest implementation option, where we do not allow any
coexistence of debug- and release-compiled translation units in a
- program. This solution has an extreme negative affect on usability,
+ program. This solution has an extreme negative effect on usability,
because it is quite likely that some libraries an application
depends on cannot be recompiled easily. This would not meet
our <emphasis>usability</emphasis> or <emphasis>minimize recompilation</emphasis> criteria
@@ -833,7 +833,7 @@ test02()
debug- and release-compiled code cannot be mixed unsafely, it ensures that
debug- and release-compiled code cannot be mixed at all. For
instance, the program would have two <code>std::cout</code>
- objects! This solution would fails the <emphasis>minimize
+ objects! This solution would fail the <emphasis>minimize
recompilation</emphasis> requirement, because we would only be able to
support option (1) or (2).</para></listitem>
@@ -289,7 +289,7 @@
variable in the configuration file <filename>texmf.cnf</filename> may
need to be increased by a minimum factor of two. Alternatively, using
<userinput>LATEX_CMD=lualatex</userinput> might allow the docs to be
- build without running out of memory.
+ built without running out of memory.
</para>
</section>
@@ -822,7 +822,7 @@
</para>
<para>
- Generated files are output into separate sub-directores of
+ Generated files are output into separate sub-directories of
<filename class="directory">doc/docbook/</filename> in the
build directory, based on the output format. For instance, the
HTML docs will be in <filename
@@ -927,7 +927,7 @@ make <literal>XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh"</literal>
<para>
If the error at hand is not obvious after examination, or if one
- encounters the inscruitable <quote>Incomplete
+ encounters the inscrutable <quote>Incomplete
\ifmmode</quote> error, a fall-back strategy is to start
commenting out parts of the XML document (regardless of what
this does to over-all document validity). Start by
@@ -271,7 +271,7 @@ Precompiled header support <acronym>PCH</acronym> support.
</para>
<para>
-Macro guard for changed, from <literal>_GLIBCPP_</literal> to <literal>_GLIBCXX_</literal>.
+Macro guard changed, from <literal>_GLIBCPP_</literal> to <literal>_GLIBCXX_</literal>.
</para>
<para>
@@ -418,7 +418,7 @@ Header dependency streamlining.
<listitem><para><filename class="headerfile"><algorithm></filename> no longer includes <filename class="headerfile"><climits></filename>, <filename class="headerfile"><cstring></filename>, or <filename class="headerfile"><iosfwd></filename> </para></listitem>
<listitem><para><filename class="headerfile"><bitset></filename> no longer includes <filename class="headerfile"><istream></filename> or <filename class="headerfile"><ostream></filename>, adds <filename class="headerfile"><iosfwd></filename> </para></listitem>
<listitem><para><filename class="headerfile"><functional></filename> no longer includes <filename class="headerfile"><cstddef></filename></para></listitem>
- <listitem><para><filename class="headerfile"><iomanip></filename> no longer includes <filename class="headerfile"><istream></filename>, <filename class="headerfile"><istream></filename>, or <filename class="headerfile"><functional></filename>, adds <filename class="headerfile"><ioswd></filename> </para></listitem>
+ <listitem><para><filename class="headerfile"><iomanip></filename> no longer includes <filename class="headerfile"><istream></filename>, <filename class="headerfile"><ostream></filename>, or <filename class="headerfile"><functional></filename>, adds <filename class="headerfile"><iosfwd></filename> </para></listitem>
<listitem><para><filename class="headerfile"><numeric></filename> no longer includes <filename class="headerfile"><iterator></filename></para></listitem>
<listitem><para><filename class="headerfile"><string></filename> no longer includes <filename class="headerfile"><algorithm></filename> or <filename class="headerfile"><memory></filename></para></listitem>
@@ -195,7 +195,7 @@ extensions, be aware of two things:
<para>
The SGI hashing classes <classname>hash_set</classname> and
- <classname>hash_set</classname> have been deprecated by the
+ <classname>hash_map</classname> have been deprecated by the
unordered_set, unordered_multiset, unordered_map,
unordered_multimap containers in TR1 and C++11, and
may be removed in future releases.
@@ -241,7 +241,7 @@ extensions, be aware of two things:
of buckets, etc.
</para>
<para>Why would you want to use a hashing class instead of the
- <quote>normal</quote>implementations? Matt Austern writes:
+ <quote>normal</quote> implementations? Matt Austern writes:
</para>
<blockquote>
<para>
@@ -1,5 +1,5 @@
<section xmlns="http://docbook.org/ns/docbook" version="5.0"
- xml:id="appendix.porting.internals" xreflabel="Portin Internals">
+ xml:id="appendix.porting.internals" xreflabel="Porting Internals">
<?dbhtml filename="internals.html"?>
<info><title>Porting to New Hardware or Operating Systems</title>
@@ -292,7 +292,7 @@ requirements of the license of GCC.
<varlistentry xml:id="manual.bugs.dr50"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#50">50</link>:
<emphasis role="bold">Copy constructor and assignment operator of ios_base</emphasis>
</term>
- <listitem><para>These members functions are declared <code>private</code> and are
+ <listitem><para>These member functions are declared <code>private</code> and are
thus inaccessible. Specifying the correct semantics of
"copying stream state" was deemed too complicated.
</para></listitem></varlistentry>
@@ -341,7 +341,7 @@ requirements of the license of GCC.
<varlistentry xml:id="manual.bugs.dr90"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#90">90</link>:
<emphasis role="bold">Incorrect description of operator>> for strings</emphasis>
</term>
- <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
+ <listitem><para>The effect contains <code>isspace(c,getloc())</code> which must be
replaced by <code>isspace(c,is.getloc())</code>.
</para></listitem></varlistentry>
@@ -750,7 +750,7 @@ requirements of the license of GCC.
<varlistentry xml:id="manual.bugs.dr581"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#581">581</link>:
<emphasis role="bold"><code>flush()</code> not unformatted function</emphasis>
</term>
- <listitem><para>Change it to be a unformatted output function (i.e. construct a sentry and catch exceptions).
+ <listitem><para>Change it to be an unformatted output function (i.e. construct a sentry and catch exceptions).
</para></listitem></varlistentry>
<varlistentry xml:id="manual.bugs.dr586"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#586">586</link>:
@@ -1075,7 +1075,7 @@ requirements of the license of GCC.
<varlistentry xml:id="manual.bugs.dr2415"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2415">2415</link>:
<emphasis role="bold">Inconsistency between <code>unique_ptr</code> and <code>shared_ptr</code></emphasis>
</term>
- <listitem><para>Create empty an <code>shared_ptr</code> from an empty
+ <listitem><para>Create an empty <code>shared_ptr</code> from an empty
<code>unique_ptr</code>.
</para></listitem></varlistentry>
@@ -274,7 +274,7 @@
output << "a line of text" << endl;
output << some_data_variable << endl;
output << "another line of text" << endl; </programlisting>
- <para>The proper thing to do in this case to just write the data out
+ <para>The proper thing to do in this case is to just write the data out
and let the libraries and the system worry about the buffering.
If you need a newline, just write a newline:
</para>
@@ -435,7 +435,7 @@
<para>Why a <emphasis>pointer</emphasis> to streambuf and not just a streambuf? Well,
the [io]streams hold pointers (or references, depending on the
implementation) to their buffers, not the actual
- buffers. This allows polymorphic behavior on the chapter of the buffers
+ buffers. This allows polymorphic behavior on the part of the buffers
as well as the streams themselves. The pointer is easily retrieved
using the <code>rdbuf()</code> member function. Therefore, the easiest
way to copy the file is:
@@ -487,7 +487,7 @@
under Windows won't accidentally get mapped to a '\n' character, etc.
Binary mode is not supposed to suddenly give you a bitstream, and
if it is doing so in your program then you've discovered a bug in
- your vendor's compiler (or some other chapter of the C++ implementation,
+ your vendor's compiler (or some other part of the C++ implementation,
possibly the runtime system).
</para>
<para>Second, using <code><<</code> to write and <code>>></code> to
@@ -71,7 +71,7 @@ classes.
<para>This starts off sounding complicated, but is actually very easy,
especially towards the end. Trust me.
</para>
- <para>Beginners usually have a little trouble understand the whole
+ <para>Beginners usually have a little trouble understanding the whole
'past-the-end' thing, until they remember their early algebra classes
(see, they <emphasis>told</emphasis> you that stuff would come in handy!) and
the concept of half-open ranges.
@@ -132,7 +132,7 @@ classes.
beginning end
</programlisting>
- <para>See? Everything between the boundary markers is chapter of the array.
+ <para>See? Everything between the boundary markers is part of the array.
Simple.
</para>
<para>Now think back to your junior-high school algebra course, when you
@@ -458,7 +458,7 @@ global locale" (emphasis Paolo), that is:
<para>
On the other hand, there is *no* vice versa, that is, calling
- setlocale has *no* whatsoever on the C++ locale mechanism, in
+ setlocale has *no* effect whatsoever on the C++ locale mechanism, in
particular on the working of locale(""), which constructs the locale
object from the environment of the running program, that is, in
practice, the set of LC_ALL, LANG, etc. variable of the shell.
@@ -240,7 +240,7 @@ model.
</para>
<para>
- Making the message catalogs can be initially tricky, but become
+ Making the message catalogs can be initially tricky, but becomes
quite simple with practice. For complete info, see the gettext
documentation. Here's an idea of what is required:
</para>
@@ -253,7 +253,7 @@ The _S_initialize() function:
- Initialize the free and used counters of each bin_record:
- bin_record->free = An array of size_t. This keeps track of the number
of blocks on a specific thread's freelist in each bin. I.e., if a thread
- has 12 32-byte blocks on it's freelists and allocates one of these, this
+ has 12 32-byte blocks on its freelists and allocates one of these, this
counter would be decreased to 11.
- bin_record->used = An array of size_t. This keeps track of the number
@@ -444,7 +444,7 @@ What's the use? Well, when a deallocation occurs we can now look at
the thread id and find out if it was allocated by another thread id
and decrease the used counter of that thread instead, thus keeping the
free and used counters correct. And keeping the free and used counters
-corrects is very important since the relationship between these two
+correct is very important since the relationship between these two
variables decides if memory should be returned to the global pool or
not when a deallocation occurs.
</para>
@@ -536,8 +536,8 @@ deallocation made the used counter of the allocating thread is
decreased and the freelist of the deallocation thread gets longer and
longer. But the calculation made in deallocate() will limit the length
of the freelist in the deallocation thread to _S_freelist_headroom %
-of it's used counter. In this case, when the freelist (given that the
-_S_freelist_headroom is at it's default value of 10%) exceeds 52
+of its used counter. In this case, when the freelist (given that the
+_S_freelist_headroom is at its default value of 10%) exceeds 52
(516/10) blocks will be returned to the global pool where the
allocating thread may pick them up and reuse them.
</para>
@@ -101,7 +101,7 @@ Therefore, user-defined functors should not have any concurrent side effects.
<para> Since the current GCC OpenMP implementation does not support
OpenMP parallel regions in concurrent threads,
-it is not possible to call parallel STL algorithm in
+it is not possible to call a parallel STL algorithm in
concurrent threads, either.
It might work with other compilers, though.</para>
@@ -737,7 +737,7 @@ There exists one global instance of the class <classname>_Settings</classname>,
i. e. it is a singleton. It can be read and written by calling
<code>__gnu_parallel::_Settings::get</code> and
<code>__gnu_parallel::_Settings::set</code>, respectively.
-Please note that the first call return a const object, so direct manipulation
+Please note that the first call returns a const object, so direct manipulation
is forbidden.
See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">
<filename class="headerfile"><parallel/settings.h></filename></link>
@@ -771,7 +771,7 @@ int main()
<section xml:id="parallel_mode.design.impl" xreflabel="Impl"><info><title>Implementation Namespaces</title></info>
-<para> One namespace contain versions of code that are always
+<para> One namespace contains versions of code that are always
explicitly sequential:
<code>__gnu_serial</code>.
</para>
@@ -833,7 +833,7 @@ the generated source documentation.
</screen>
<para>
- The result file for performance testing are in the
+ The result file for performance testing is in the
<filename class="directory">testsuite</filename> directory, in the file
<filename>libstdc++_performance.sum</filename>. In addition, the
policy-based containers have their own visualizations, which have
@@ -98,7 +98,7 @@ ln -s libiconv-1.16 libiconv
<listitem>
<para>
- If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt
+ If GCC 3.1.0 or later is being used on GNU/Linux, an attempt
will be made to use "C" library functionality necessary for
C++ named locale support, e.g. the <function>newlocale</function>
and <function>uselocale</function> functions.
@@ -105,7 +105,7 @@
<author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb>
<para>
- Referenced counted string, C++1998 implementation status.
+ Reference counted string, C++1998 implementation status.
</para>
</personblurb></author>
@@ -1148,7 +1148,7 @@ mainline GCC, not in any particular release.
</para>
<para><emphasis>27.6.1.1.2 [lib.istream::sentry]</emphasis>,
<emphasis>27.6.2.3 [lib.ostream::sentry]</emphasis> The I/O sentry ctor
- and dtor can perform additional work than the minimum required. We are
+ and dtor can perform more work than the minimum required. We are
not currently taking advantage of this yet.
</para>
<para><emphasis>27.7.1.3 [lib.stringbuf.virtuals]/16</emphasis>,
@@ -1994,7 +1994,7 @@ mainline GCC, not in any particular release.
</row>
<row>
<entry>26.7.2</entry>
- <entry>Accumulate></entry>
+ <entry>Accumulate</entry>
<entry>Y</entry>
<entry/>
</row>
@@ -2181,7 +2181,7 @@ since C++14 and the implementation is complete.
</row>
<row>
<entry>30.10</entry>
- <entry>File systemss</entry>
+ <entry>File systems</entry>
<entry>Y</entry>
<entry/>
</row>
@@ -2992,7 +2992,7 @@ since C++14 and the implementation is complete.
<para>
<emphasis>29.4.1 [cfenv.syn]</emphasis>
The effects of the <filename><cfenv></filename> functions
- depends on whether the <code>FENV_ACCESS</code> pragma is supported,
+ depend on whether the <code>FENV_ACCESS</code> pragma is supported,
and on the C library that provides the header.
</para>
@@ -3084,7 +3084,7 @@ since C++14 and the implementation is complete.
<para>
<emphasis>9.3 [parallel.simd.abi]</emphasis>
- <code>max_fixed_size<T></code> is 32, except when targetting
+ <code>max_fixed_size<T></code> is 32, except when targeting
AVX512BW and <code>sizeof(T)</code> is 1.
</para>
@@ -510,7 +510,7 @@ or any notes about the implementation.
</row>
<row>
- <entry> <code>ranges</code> compare algorithm are over-constrained </entry>
+ <entry> <code>ranges</code> compare algorithms are over-constrained </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html">
P1716R3 </link>
@@ -98,7 +98,7 @@
<para>
Since C++11 the wrapper can be replaced with a lambda expression,
which can perform the conversion to <code>unsigned char</code> and
- also ensure the single-argument form of <code>std::lower</code> is used:
+ also ensure the single-argument form of <code>std::tolower</code> is used:
</para>
<programlisting>
std::transform (s.begin(), s.end(), capital_s.begin(),
@@ -161,7 +161,7 @@
case-insensitive comparisons are not as easy as they seem, and
why creating a class is the <emphasis>wrong</emphasis> way to go
about it in production code. (The GotW answer mentions one of
- the principle difficulties; his article mentions more.)
+ the principal difficulties; his article mentions more.)
</para>
<para>Basically, this is "easy" only if you ignore some things,
things which may be too important to your program to ignore. (I chose
@@ -233,7 +233,7 @@
</para>
<para>If you want to use your own special character class, then you have
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot
- of work to do</link>, especially if you with to use i18n features
+ of work to do</link>, especially if you wish to use i18n features
(facets require traits information but don't have a traits argument).
</para>
<para>Another example of how to specialize char_traits was given <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the
@@ -409,7 +409,7 @@ stringtok(Container &container, string const &in,
stringstream classes. These are the bridge between the iostream
hierarchy and the string class, and they operate with regular
streams seamlessly because they inherit from the iostream
- hierarchy. An quick example:
+ hierarchy. A quick example:
</para>
<programlisting>
#include <iostream>
@@ -272,9 +272,9 @@
<function>operator new</function> and <function>operator delete</function>
but with an additional parameter of type <type>std::align_val_t</type>.
These new overloads are not interchangeable with the versions without
- an aligment parameter, so if memory was allocated by an overload of
+ an alignment parameter, so if memory was allocated by an overload of
<function>operator new</function> taking an alignment parameter,
- then it must be decallocated by the corresponding overload of
+ then it must be deallocated by the corresponding overload of
<function>operator delete</function> that takes an alignment parameter.
</para>
<para>
@@ -308,7 +308,7 @@
and the corresponding <function>operator delete</function> functions.
To support types with extended alignment you may also need to replace
<function>operator new(size_t, align_val_t)</function> and
- <function>operator delete(void*, align_val_t)</function>
+ <function>operator delete(void*, align_val_t)</function> and
<function>operator delete(void*, size_t, align_val_t)</function>
(which will then be used by the nothrow and array forms for
extended alignments).
@@ -1172,7 +1172,7 @@ only default variables.
<para>
For example, take the test
functor <classname>rand_reg_test</classname> in
- in <filename>testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc</filename>. This uses <classname>container_rand_regression_test</classname> in
+ <filename>testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc</filename>. This uses <classname>container_rand_regression_test</classname> in
<filename>testsuite/util/regression/rand/assoc/container_rand_regression_test.h</filename>.
</para>
@@ -1240,7 +1240,7 @@ C++11 Requirements Test Sequence Descriptions
made through the container's <type>allocator_type</type>,
which should be sufficient for container data
structures. Included in these tests are member functions
- are <type>iterator</type> and <type>const_iterator</type>
+ <type>iterator</type> and <type>const_iterator</type>
operations, <function>pop_front</function>, <function>pop_back</function>, <function>push_front</function>, <function>push_back</function>, <function>insert</function>, <function>erase</function>, <function>swap</function>, <function>clear</function>,
and <function>rehash</function>. The container in question is
instantiated with two instrumented template arguments,
@@ -1269,7 +1269,7 @@ C++11 Requirements Test Sequence Descriptions
that container is constructed and all member functions
required to not throw exceptions are exercised. Included in
these tests are member functions
- are <type>iterator</type> and <type>const_iterator</type> operations, <function>erase</function>, <function>pop_front</function>, <function>pop_back</function>, <function>swap</function>,
+ <type>iterator</type> and <type>const_iterator</type> operations, <function>erase</function>, <function>pop_front</function>, <function>pop_back</function>, <function>swap</function>,
and <function>clear</function>. The container in question is
instantiated with two instrumented template arguments,
with <classname>__gnu_cxx::throw_allocator_random</classname>
@@ -1302,7 +1302,7 @@ C++11 Requirements Test Sequence Descriptions
the container's last known good state using such parameters
as size, contents, and iterator references. Included in these
tests are member functions
- are <function>push_front</function>, <function>push_back</function>, <function>insert</function>,
+ <function>push_front</function>, <function>push_back</function>, <function>insert</function>,
and <function>rehash</function>. The container in question is
instantiated with two instrumented template arguments,
with <classname>__gnu_cxx::throw_allocator_limit</classname>
@@ -1313,7 +1313,7 @@ C++11 Requirements Test Sequence Descriptions
</para>
<para>
- The general form demonstrated in
+ The general form is demonstrated in
<filename>testsuite/23_containers/list/requirements/exception/propagation_coherent.cc
</filename>. The instantiating test object is <classname>__gnu_test::propagation_coherent</classname> and is detailed in <filename>testsuite/util/exception/safety.h</filename>.
</para>
@@ -61,7 +61,7 @@
To mitigate this, a <code>time_zone</code> can be expanded for a
particular time range at the start
of the program (and after each reload), by iterating over the
- <code>sys_info</code> dequence, as in the example below.
+ <code>sys_info</code> sequence, as in the example below.
</para>
<programlisting>
void
@@ -88,9 +88,9 @@
</para>
<itemizedlist>
<listitem>
- On system supporting <code>readlink</code>, suffix components of the
+ On systems supporting <code>readlink</code>, suffix components of the
path of the file linked by <code>/etc/localtime</code>. The suffixes
- are matched in the other of increasing length, starting from the final
+ are matched in the order of increasing length, starting from the final
component, until the match is found in the time zone database.
Any repeated slashes (<code>//</code>) are eliminated.
</listitem>
@@ -131,7 +131,7 @@
If <code>TimeZoneKeyName</code> corresponds to multiple IANA zones,
a 2-letter country code is used, retrieved by applying <code>GetGeoInfoW</code>
on the result of <code>GetUserGeoID(GEOCLASS_NATION)</code>.
- If determining the country code fails, or no entry exits for a given code,
+ If determining the country code fails, or no entry exists for a given code,
the first mapping entry (<code>001</code>) is returned.
</listitem>
</itemizedlist>
@@ -152,7 +152,7 @@
By default, <emphasis>zoneinfo_dir</emphasis> is set to the
system-specific default directory (if a suitable dir is known for target),
usually <code>/usr/share/zoneinfo</code>. If no such directory
- exits, or it does not contain the required files in the correct format,
+ exists, or it does not contain the required files in the correct format,
embedded static data is used as fallback.
</para>
@@ -160,8 +160,8 @@
In addition to <code>--with-libstdcxx-zoneinfo=</code> configure option
(used during GCC build), the path of <emphasis>zoneinfo_dir</emphasis>
can be overridden by the application by providing a definition of the
- <code>__gnu_cxx::zoneinfo_dir_overrride()</code> function. The
- returned path should be directory that contains <code>tzdata.zi</code>
+ <code>__gnu_cxx::zoneinfo_dir_override()</code> function. The
+ returned path should be a directory that contains <code>tzdata.zi</code>
and <code>leapseconds</code> files in the
<link xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:href="https://man7.org/linux/man-pages/man8/zic.8.html#FILES">
@@ -218,7 +218,7 @@
(e.g. due to memory constraints), entries
may be removed from <code>tzdb_list</code> using <code>tzdb_list::erase_after</code>.
When using this function, you are responsible for ensuring that the application
- no longer is no longer using any <code>time_zone*</code> to a removed database.
+ is no longer using any <code>time_zone*</code> to a removed database.
If you erase a <code>tzdb</code> while some part of the application is still
using it (or one of its <code>time_zone</code> objects) you will create
a dangling pointer, leading to undefined behaviour.
@@ -605,7 +605,7 @@ Unless specified otherwise below, they are also available in later modes
<para>
<xref linkend="table.filesystemts_headers"/>,
-shows the additional include file define by the
+shows the additional include file defined by the
File System Technical Specification, ISO/IEC TS 18822:2015.
This is available in C++11 and later compilation modes.
Including this header in earlier modes will not result in
@@ -629,7 +629,7 @@ compilation errors, but will not define anything.
<para>
<xref linkend="table.libfundts_headers"/>,
-shows the additional include files define by the C++ Extensions for
+shows the additional include files defined by the C++ Extensions for
Library Fundamentals Technical Specification, ISO/IEC TS 19568:2015,
ISO/IEC TS 19568:2017, and ISO/IEC TS 19568:2024.
These are available in C++14 and later compilation modes, except for
@@ -699,7 +699,7 @@ compilation errors, but will not define anything.
<para>
<xref linkend="table.networkingts_headers"/>,
-shows the additional include files define by the
+shows the additional include files defined by the
Networking Technical Specification, ISO/IEC TS 19216:2018.
These are available in C++14 and later compilation modes.
Including these headers in earlier modes will not result in
@@ -1212,7 +1212,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
from the API. This macro is dependent on the version of the
standard being tracked, and as a result may give different results for
different <code>-std</code> options. This may
- be useful in updating old C++ code which no longer meet the
+ be useful in updating old C++ code which no longer meets the
requirements of the language, or for checking current code
against new language standards.
</para>
@@ -1228,7 +1228,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
When defined to a non-zero value the library headers will use the
new C++11-conforming ABI introduced in GCC 5, rather than the older
ABI introduced in GCC 3.4. This changes the definition of several
- class templates, including <classname>std:string</classname>,
+ class templates, including <classname>std::string</classname>,
<classname>std::list</classname> and some locale facets.
For more details see <xref linkend="manual.intro.using.abi"/>.
</para>
@@ -1661,7 +1661,7 @@ namespace gtk
As an added bonus,
<code>std::string</code> does not get imported into
the global namespace. Additionally, a more elaborate arrangement can be made for backwards compatibility and portability, whereby the
- <code>using</code>-declarations can wrapped in macros that
+ <code>using</code>-declarations can be wrapped in macros that
are set based on autoconf-tests to either "" or i.e. <code>using
std::string;</code> (depending on whether the system has
libstdc++ in <code>std::</code> or not). (ideas from
@@ -1766,7 +1766,7 @@ namespace gtk
<para>
As of GCC 13, libstdc++ implements P1642, which brings in many more
- headers, as well a quite a few ones not covered by the paper.
+ headers, as well as quite a few ones not covered by the paper.
In general, if a feature does not require traditionally libc-provided
facilities, or dynamic memory allocation, it's enabled in the
@@ -1827,7 +1827,7 @@ namespace gtk
<para>
If the only library built is the static library
(<filename class="libraryfile">libstdc++.a</filename>), or if
- specifying static linking, this section is can be skipped. But
+ specifying static linking, this section can be skipped. But
if building or using a shared library
(<filename class="libraryfile">libstdc++.so</filename>), then
additional location information will need to be provided.
@@ -1973,7 +1973,7 @@ A quick read of the relevant part of the GCC
<section xml:id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"><info><title>Prerequisites</title></info>
- <para>All normal disclaimers aside, multithreaded C++ application are
+ <para>All normal disclaimers aside, multithreaded C++ applications are
only supported when libstdc++ and all user code was built with
compilers which report (via <code> gcc/g++ -v </code>) the same thread
model and that model is not <emphasis>single</emphasis>. As long as your
@@ -2111,7 +2111,7 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
<para>All library types are safe to use in a multithreaded program
if objects are not shared between threads or as
- long each thread carefully locks out access by any other
+ long as each thread carefully locks out access by any other
thread while it modifies any object visible to another thread.
Unless otherwise documented, the only exceptions to these rules
are atomic operations on the types in
@@ -2329,8 +2329,8 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
(<emphasis>For most clients...</emphasis>), which points out that
locking must nearly always be done outside the container, by
client code (that'd be you, not us). There is a notable
- exceptions to this rule. Allocators called while a container or
- element is constructed uses an internal lock obtained and
+ exception to this rule. Allocators called while a container or
+ element is constructed use an internal lock obtained and
released solely within libstdc++ code (in fact, this is the
reason STL requires any knowledge of the thread configuration).
</para>
@@ -50,7 +50,7 @@ exception neutrality and exception safety.
Please note that using exceptions in combination with templates
imposes an additional requirement for exception
safety. Instantiating types are required to have destructors that
- do no throw.
+ do not throw.
</para>
<para>
@@ -83,7 +83,7 @@ exception neutrality and exception safety.
</para>
<para>
- This applicable throughout the standard library.
+ This is applicable throughout the standard library.
</para>
</listitem>
@@ -117,9 +117,9 @@ exception neutrality and exception safety.
propagating exceptions should not be swallowed in
gratuitous <literal>catch(...)</literal> blocks. Instead,
matching <literal>try</literal> and <literal>catch</literal>
- blocks should have specific catch handlers and allow un-handed
+ blocks should have specific catch handlers and allow unhandled
exception objects to propagate. If a
- terminating <literal>catch(...)</literal> blocks exist then it
+ terminating <literal>catch(...)</literal> block exists then it
should end with a <literal>throw</literal> to re-throw the current
exception.
</para>
@@ -306,7 +306,7 @@ exception neutrality and exception safety.
configuration of the C++ compiler. On recent hardware with GNU
system software of the same age, the combined code and data size
overhead for enabling exception handling is around 7%. Of course,
- if code size is of singular concern than using the appropriate
+ if code size is of singular concern then using the appropriate
optimizer setting with exception handling enabled
(ie, <literal>-Os -fexceptions</literal>) may save up to twice
that, and preserve error checking.