user.cfg.in: Also document deprecated entries.
2002-03-06 Phil Edwards <pme@gcc.gnu.org> * docs/doxygen/user.cfg.in: Also document deprecated entries. * docs/html/Makefile: Example rule to rebuild porting-howto.html. * docs/html/17_intro/howto.html: "gcc"->"GCC" changes, when referring to the collection as a whole. New section on which macros can be redefined by the user. * docs/html/19_diagnostics/howto.html: Update note for concepts. * docs/html/20_util/howto.html: Update link to SGI. * docs/html/faq/index.html: Update snapshot versions. New entry on why g++ (but not gcc) must currently predefine certain macros. * docs/html/faq/index.txt: Regenerated. * include/bits/basic_string.h (basic_string::_S_construct): Fix names in declaration. (basic_string::compare): These are no longer optional. * include/bits/ostream.tcc: Tweak closing brace placement. * include/bits/stl_algo.h: Lots of initial doxygen comment hooks. * include/std/std_sstream.h: Fix typo in comment. * include/bits/locale_facets.tcc: Remove unneeded header inclusion. * src/locale.cc: Likewise. From-SVN: r50376
This commit is contained in:
parent
d95336cf37
commit
037cfe71e0
14 changed files with 621 additions and 235 deletions
|
@ -1,3 +1,25 @@
|
||||||
|
2002-03-06 Phil Edwards <pme@gcc.gnu.org>
|
||||||
|
|
||||||
|
* docs/doxygen/user.cfg.in: Also document deprecated entries.
|
||||||
|
* docs/html/Makefile: Example rule to rebuild porting-howto.html.
|
||||||
|
* docs/html/17_intro/howto.html: "gcc"->"GCC" changes, when
|
||||||
|
referring to the collection as a whole. New section on which macros
|
||||||
|
can be redefined by the user.
|
||||||
|
* docs/html/19_diagnostics/howto.html: Update note for concepts.
|
||||||
|
* docs/html/20_util/howto.html: Update link to SGI.
|
||||||
|
* docs/html/faq/index.html: Update snapshot versions. New entry
|
||||||
|
on why g++ (but not gcc) must currently predefine certain macros.
|
||||||
|
* docs/html/faq/index.txt: Regenerated.
|
||||||
|
|
||||||
|
* include/bits/basic_string.h (basic_string::_S_construct): Fix
|
||||||
|
names in declaration.
|
||||||
|
(basic_string::compare): These are no longer optional.
|
||||||
|
* include/bits/ostream.tcc: Tweak closing brace placement.
|
||||||
|
* include/bits/stl_algo.h: Lots of initial doxygen comment hooks.
|
||||||
|
* include/std/std_sstream.h: Fix typo in comment.
|
||||||
|
* include/bits/locale_facets.tcc: Remove unneeded header inclusion.
|
||||||
|
* src/locale.cc: Likewise.
|
||||||
|
|
||||||
2002-03-06 Phil Edwards <pme@gcc.gnu.org>
|
2002-03-06 Phil Edwards <pme@gcc.gnu.org>
|
||||||
|
|
||||||
PR libstdc++/5734
|
PR libstdc++/5734
|
||||||
|
|
|
@ -703,7 +703,7 @@ INCLUDE_FILE_PATTERNS =
|
||||||
# or name=definition (no spaces). If the definition and the = are
|
# or name=definition (no spaces). If the definition and the = are
|
||||||
# omitted =1 is assumed.
|
# omitted =1 is assumed.
|
||||||
|
|
||||||
PREDEFINED =
|
PREDEFINED = _GLIBCPP_DEPRECATED
|
||||||
|
|
||||||
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
|
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
|
||||||
# this tag can be used to specify a list of macro names that should be expanded.
|
# this tag can be used to specify a list of macro names that should be expanded.
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
<li><a href="#4"><code><foo></code> vs <code><foo.h></code></a>
|
<li><a href="#4"><code><foo></code> vs <code><foo.h></code></a>
|
||||||
<li><a href="porting-howto.html">Porting HOWTO</a>
|
<li><a href="porting-howto.html">Porting HOWTO</a>
|
||||||
<li><a href="#5">Behavior specific to libstdc++-v3</a>
|
<li><a href="#5">Behavior specific to libstdc++-v3</a>
|
||||||
|
<li><a href="#6">Preprocessor macros controlling the library</a>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -54,20 +55,20 @@
|
||||||
<h2><a name="3">The Standard C++ library and multithreading</a></h2>
|
<h2><a name="3">The Standard C++ library and multithreading</a></h2>
|
||||||
<p>This section discusses issues surrounding the proper compilation
|
<p>This section discusses issues surrounding the proper compilation
|
||||||
of multithreaded applications which use the Standard C++
|
of multithreaded applications which use the Standard C++
|
||||||
library. This information is gcc-specific since the C++
|
library. This information is GCC-specific since the C++
|
||||||
standard does not address matters of multithreaded applications.
|
standard does not address matters of multithreaded applications.
|
||||||
Unless explicitly prefaced, all information in this section is
|
Unless explicitly prefaced, all information in this section is
|
||||||
current as of the gcc 3.0 release and all later point releases.
|
current as of the GCC 3.0 release and all later point releases.
|
||||||
</p>
|
</p>
|
||||||
<p>Earlier gcc releases had a somewhat different approach to
|
<p>Earlier GCC releases had a somewhat different approach to
|
||||||
threading configuration and proper compilation. Before gcc 3.0,
|
threading configuration and proper compilation. Before GCC 3.0,
|
||||||
configuration of the threading model was dictated by compiler
|
configuration of the threading model was dictated by compiler
|
||||||
command-line options and macros (both of which were somewhat
|
command-line options and macros (both of which were somewhat
|
||||||
thread-implementation and port-specific). There were no
|
thread-implementation and port-specific). There were no
|
||||||
guarantees related to being able to link code compiled with one
|
guarantees related to being able to link code compiled with one
|
||||||
set of options and macro setting with another set. For gcc 3.0,
|
set of options and macro setting with another set. For GCC 3.0,
|
||||||
configuration of the threading model used with libraries and
|
configuration of the threading model used with libraries and
|
||||||
user-code is performed when gcc is configured and built using
|
user-code is performed when GCC is configured and built using
|
||||||
the --enable-threads and --disable-threads options. The ABI is
|
the --enable-threads and --disable-threads options. The ABI is
|
||||||
stable for symbol name-mangling and limited functional
|
stable for symbol name-mangling and limited functional
|
||||||
compatibility exists between code compiled under different
|
compatibility exists between code compiled under different
|
||||||
|
@ -83,9 +84,9 @@
|
||||||
with another thread model useful on the platform. Other mixes
|
with another thread model useful on the platform. Other mixes
|
||||||
may or may not work but are not considered supported. (Thus, if
|
may or may not work but are not considered supported. (Thus, if
|
||||||
you distribute a shared C++ library in binary form only, it may
|
you distribute a shared C++ library in binary form only, it may
|
||||||
be best to compile it with a gcc configured with
|
be best to compile it with a GCC configured with
|
||||||
--enable-threads for maximal interchangeability and usefulness
|
--enable-threads for maximal interchangeability and usefulness
|
||||||
with a user population that may have built gcc with either
|
with a user population that may have built GCC with either
|
||||||
--enable-threads or --disable-threads.)
|
--enable-threads or --disable-threads.)
|
||||||
</p>
|
</p>
|
||||||
<p>When you link a multithreaded application, you will probably
|
<p>When you link a multithreaded application, you will probably
|
||||||
|
@ -267,6 +268,71 @@
|
||||||
<a href="../faq/index.html">to the FAQ</a>.
|
<a href="../faq/index.html">to the FAQ</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<h2><a name="6">Preprocessor macros controlling the library</a></h2>
|
||||||
|
<p>Some of the semantics of the libstdc++-v3 implementation are
|
||||||
|
controlled by preprocessor macros, both during build/installation and
|
||||||
|
during compilation of user code. Many of these choices are made when
|
||||||
|
the library is built and installed (actually, during
|
||||||
|
<a href="../configopts.html">the configuration step</a>, with the
|
||||||
|
various --enable/--disable choices being translated to #define/#undef).
|
||||||
|
</p>
|
||||||
|
<p>All library macros begin with <code>_GLIBCPP_</code>. The fact that
|
||||||
|
these symbols start with a leading underscore should give you a clue
|
||||||
|
that (by default) they aren't meant to be changed by the user. :-)
|
||||||
|
</p>
|
||||||
|
<p>These macros are all gathered in the file <code>c++config.h</code>,
|
||||||
|
which is generated during installation. <strong>You must assume that
|
||||||
|
these macros cannot be redefined by your own code</strong>, unless we
|
||||||
|
document otherwise here. Some of the choices control code which has
|
||||||
|
already been compiled (i.e., libstdc++.a/.so). If you explicitly
|
||||||
|
#define or #undef these macros, the <em>headers</em> may see different
|
||||||
|
code paths, but the <em>libraries</em> which you link against will not.
|
||||||
|
If you want to experiment with different values, you must change the
|
||||||
|
config headers before building/installing the library.
|
||||||
|
</p>
|
||||||
|
<p>Below are macros which, for 3.1 and later, you may change yourself,
|
||||||
|
in your own code with #define/#undef or with -D/-U compiler flags.
|
||||||
|
The default state of the symbol is listed. "Configurable"
|
||||||
|
(or "Not configurable") means that the symbol is initially
|
||||||
|
chosen (or not) based on --enable/--disable options at configure time.
|
||||||
|
<dl>
|
||||||
|
<dt><code>_GLIBCPP_DEPRECATED</code></dt>
|
||||||
|
<dd>Undefined by default. Not configurable. Turning this on enables
|
||||||
|
older ARM-style iostreams code, and other anachronisms. This may be
|
||||||
|
useful in updating old C++ programs which no longer meet the
|
||||||
|
requirements of the language.
|
||||||
|
</dd>
|
||||||
|
<!--
|
||||||
|
Can this actually be turned off and still produce a working lib? Must
|
||||||
|
check. -pme
|
||||||
|
No, it can't. Hmmm. -pme
|
||||||
|
<dt><code>_GLIBCPP_RESOLVE_LIB_DEFECTS</code></dt>
|
||||||
|
<dd>Defined by default. Not configurable. The library follows
|
||||||
|
corrections and updates from the ISO committee, see
|
||||||
|
<a href="../faq/index.html#5_2">here</a> and
|
||||||
|
<a href="../ext/howto.html#5">here</a> for more on this feature.
|
||||||
|
If you have code which depends on the first version of the standard,
|
||||||
|
you might try undefining this macro.
|
||||||
|
</dd>
|
||||||
|
-->
|
||||||
|
<dt><code>_GLIBCPP_CONCEPT_CHECKS</code></dt>
|
||||||
|
<dd>Undefined by default. Configurable. When defined, performs
|
||||||
|
compile-time checking on certain template instantiations to detect
|
||||||
|
violations of the requirements of the standard. This is described
|
||||||
|
in more detail <a href="../19_diagnostics/howto.html#3">here</a>.
|
||||||
|
</dd>
|
||||||
|
<!--
|
||||||
|
<dt><code></code></dt>
|
||||||
|
<dd>
|
||||||
|
</dd>
|
||||||
|
-->
|
||||||
|
</dl>
|
||||||
|
</p>
|
||||||
|
<p>Return <a href="#top">to top of page</a> or
|
||||||
|
<a href="../faq/index.html">to the FAQ</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ####################################################### -->
|
<!-- ####################################################### -->
|
||||||
|
|
|
@ -102,6 +102,8 @@
|
||||||
<p>For GCC 3.0 and 3.1 they are off by default. They can be enabled at
|
<p>For GCC 3.0 and 3.1 they are off by default. They can be enabled at
|
||||||
configure time with
|
configure time with
|
||||||
<a href="../configopts.html"><code>--enable-concept-checks</code></a>.
|
<a href="../configopts.html"><code>--enable-concept-checks</code></a>.
|
||||||
|
For 3.1 you can instead #define _GLIBCPP_CONCEPT_CHECKS to enable them
|
||||||
|
on a per-translation-unit basis.
|
||||||
</p>
|
</p>
|
||||||
<p>Return <a href="#top">to top of page</a> or
|
<p>Return <a href="#top">to top of page</a> or
|
||||||
<a href="../faq/index.html">to the FAQ</a>.
|
<a href="../faq/index.html">to the FAQ</a>.
|
||||||
|
|
|
@ -134,8 +134,8 @@
|
||||||
get slightly the wrong idea. In the interest of not reinventing
|
get slightly the wrong idea. In the interest of not reinventing
|
||||||
the wheel, we will refer you to the introduction to the functor
|
the wheel, we will refer you to the introduction to the functor
|
||||||
concept written by SGI as part of their STL, in
|
concept written by SGI as part of their STL, in
|
||||||
<a href="http://www.sgi.com/Technology/STL/functors.html">their
|
<a href="http://www.sgi.com/tech/stl/functors.html">their
|
||||||
http://www.sgi.com/Technology/STL/functors.html</a>.
|
http://www.sgi.com/tech/stl/functors.html</a>.
|
||||||
</p>
|
</p>
|
||||||
<p>Return <a href="#top">to top of page</a> or
|
<p>Return <a href="#top">to top of page</a> or
|
||||||
<a href="../faq/index.html">to the FAQ</a>.
|
<a href="../faq/index.html">to the FAQ</a>.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
MAKEINFO=makeinfo
|
MAKEINFO=makeinfo
|
||||||
INC=../../../gcc/doc/include
|
INC=../../../gcc/doc/include
|
||||||
|
|
||||||
all: faq/index.txt 17_intro/porting.html
|
all: faq/index.txt 17_intro/porting.html 17_intro/porting-howto.html
|
||||||
|
|
||||||
|
|
||||||
faq/index.txt: faq/index.html
|
faq/index.txt: faq/index.html
|
||||||
|
@ -11,3 +11,7 @@ faq/index.txt: faq/index.html
|
||||||
17_intro/porting.html: 17_intro/porting.texi
|
17_intro/porting.html: 17_intro/porting.texi
|
||||||
${MAKEINFO} -I ${INC} --html --no-split $< -o $@
|
${MAKEINFO} -I ${INC} --html --no-split $< -o $@
|
||||||
|
|
||||||
|
# known to work under RH; this can be cleaned up later if needed
|
||||||
|
17_intro/porting-howto.html: 17_intro/porting-howto.xml
|
||||||
|
xltproc -o $@ /usr/share/xml/docbook/xsl-stylesheets-1.48-2/html/docbook.xsl $<
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,8 @@
|
||||||
<li><a href="#3_2">[removed]</a>
|
<li><a href="#3_2">[removed]</a>
|
||||||
<li><a href="#3_3">[removed]</a>
|
<li><a href="#3_3">[removed]</a>
|
||||||
<li><a href="#3_4">I can't use 'long long' on Solaris</a>
|
<li><a href="#3_4">I can't use 'long long' on Solaris</a>
|
||||||
|
<li><a href="#3_5"><code>_XOPEN_SOURCE</code> /
|
||||||
|
<code>_GNU_SOURCE</code> / etc is always defined</a>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<li><a href="#4_0">Known Bugs and Non-Bugs</a>
|
<li><a href="#4_0">Known Bugs and Non-Bugs</a>
|
||||||
|
@ -109,7 +111,7 @@
|
||||||
library reaches stable plateaus, it is captured in a snapshot
|
library reaches stable plateaus, it is captured in a snapshot
|
||||||
and released. The current release is
|
and released. The current release is
|
||||||
<a href="http://gcc.gnu.org/libstdc++/download.html">the
|
<a href="http://gcc.gnu.org/libstdc++/download.html">the
|
||||||
thirteenth snapshot</a>. For those who want to see exactly how
|
fourteenth snapshot</a>. For those who want to see exactly how
|
||||||
far the project has come, or just want the latest
|
far the project has come, or just want the latest
|
||||||
bleeding-edge code, the up-to-date source is available over
|
bleeding-edge code, the up-to-date source is available over
|
||||||
anonymous CVS, and can even be browsed over the Web (see below).
|
anonymous CVS, and can even be browsed over the Web (see below).
|
||||||
|
@ -165,7 +167,7 @@
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h2><a name="1_4">1.4 How do I get libstdc++?</a></h2>
|
<h2><a name="1_4">1.4 How do I get libstdc++?</a></h2>
|
||||||
<p>The thirteenth (and latest) snapshot of libstdc++-v3 is
|
<p>The fourteenth (and latest) snapshot of libstdc++-v3 is
|
||||||
<a href="http://gcc.gnu.org/libstdc++/download.html">available via
|
<a href="http://gcc.gnu.org/libstdc++/download.html">available via
|
||||||
ftp</a>.
|
ftp</a>.
|
||||||
</p>
|
</p>
|
||||||
|
@ -428,6 +430,44 @@ which is no longer available, thanks deja...-->
|
||||||
<p>This has been fixed for 3.0.3 and onwards.
|
<p>This has been fixed for 3.0.3 and onwards.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<h2><a name="3_5">3.5 <code>_XOPEN_SOURCE</code> / <code>_GNU_SOURCE</code>
|
||||||
|
/ etc is always defined</a></h2>
|
||||||
|
<p>On Solaris, g++ (but not gcc) always defines the preprocessor
|
||||||
|
macro <code>_XOPEN_SOURCE</code>. On GNU/Linux, the same happens
|
||||||
|
with <code>_GNU_SOURCE</code>. (This is not an exhaustive list;
|
||||||
|
other macros and other platforms are also affected.)
|
||||||
|
</p>
|
||||||
|
<p>These macros are typically used in C library headers, guarding new
|
||||||
|
versions of functions from their older versions. The C++ standard
|
||||||
|
library includes the C standard library, but it requires the C90
|
||||||
|
version, which for backwards-compatability reasons is often not the
|
||||||
|
default for many vendors.
|
||||||
|
</p>
|
||||||
|
<p>More to the point, the C++ standard requires behavior which is only
|
||||||
|
available on certain platforms after certain symbols are defined.
|
||||||
|
Usually the issue involves I/O-related typedefs. In order to
|
||||||
|
ensure correctness, the compiler simply predefines those symbols.
|
||||||
|
</p>
|
||||||
|
<p>Note that it's not enough to #define them only when the library is
|
||||||
|
being built (during installation). Since we don't have an 'export'
|
||||||
|
keyword, much of the library exists as headers, which means that
|
||||||
|
the symbols must also be defined as your programs are parsed and
|
||||||
|
compiled.
|
||||||
|
</p>
|
||||||
|
<p>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in
|
||||||
|
the gcc config headers for your target (and try changing them to
|
||||||
|
see what happens when building complicated code). You can also run
|
||||||
|
<code>"g++ -E -dM - < /dev/null"</code> to display
|
||||||
|
a list of predefined macros for any particular installation.
|
||||||
|
</p>
|
||||||
|
<p>This has been discussed on the mailing lists
|
||||||
|
<a href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris">quite a bit</a>.
|
||||||
|
</p>
|
||||||
|
<p>This method is something of a wart. We'd like to find a cleaner
|
||||||
|
solution, but nobody yet has contributed the time.
|
||||||
|
</p>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<h1><a name="4_0">4.0 Known Bugs and Non-Bugs</a></h1>
|
<h1><a name="4_0">4.0 Known Bugs and Non-Bugs</a></h1>
|
||||||
<em>Note that this section can get rapdily outdated -- such is the
|
<em>Note that this section can get rapdily outdated -- such is the
|
||||||
|
@ -462,39 +502,13 @@ which is no longer available, thanks deja...-->
|
||||||
<!-- Yeah, I meant that "verbatim clip" thing literally... :-) -->
|
<!-- Yeah, I meant that "verbatim clip" thing literally... :-) -->
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
New in 3.0.96:
|
New in 3.0.97:
|
||||||
---
|
---
|
||||||
- more doxygen documentation.
|
- more doxygen documentation.
|
||||||
- extensions moved out of namespace std
|
- more named locale bug fixes
|
||||||
- HPUX long long support
|
- support for symbol versioning when using GNU ld >= 2.12
|
||||||
- more string optimizations
|
- wide-io
|
||||||
- support for NetBSD cross compiles
|
- tuning for executable size
|
||||||
- concept_check merge from boost
|
|
||||||
- header simplification
|
|
||||||
- named locale bug shakeout
|
|
||||||
- thread testsuite
|
|
||||||
|
|
||||||
New in 3.0.95:
|
|
||||||
---
|
|
||||||
- add S390, m68k, x86-64 support.
|
|
||||||
- doxygen documentation has been extended, including man pages.
|
|
||||||
- verbose terminate handling has been added.
|
|
||||||
- some libsupc++ tweaks
|
|
||||||
- warnings for deprecated headers now active.
|
|
||||||
- dejagnu testsuite preliminary documentation.
|
|
||||||
- dejagnu testsuite default.
|
|
||||||
- dejagnu testsuite cross compiler, multilib safe.
|
|
||||||
- long long iostreams on by default, rework of ISO C99 support.
|
|
||||||
- iterator re-write and testsuites.
|
|
||||||
- container testsuites.
|
|
||||||
- allocator revamp and testsuites.
|
|
||||||
- more concept-checking work.
|
|
||||||
- basic_string optimization and MT fixes.
|
|
||||||
- new limits implementation.
|
|
||||||
- update -fno-exceptions code, verify it works.
|
|
||||||
- full named locale support fpr all facets, choice of gnu,
|
|
||||||
ieee_1003.1-200x (POSIX 2), or generic models. Full support depends
|
|
||||||
on target OS and underlying "C" library support.
|
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -32,29 +32,30 @@
|
||||||
2. [22][removed]
|
2. [22][removed]
|
||||||
3. [23][removed]
|
3. [23][removed]
|
||||||
4. [24]I can't use 'long long' on Solaris
|
4. [24]I can't use 'long long' on Solaris
|
||||||
4. [25]Known Bugs and Non-Bugs
|
5. [25]_XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
|
||||||
1. [26]What works already?
|
4. [26]Known Bugs and Non-Bugs
|
||||||
2. [27]Bugs in gcc/g++ (not libstdc++-v3)
|
1. [27]What works already?
|
||||||
3. [28]Bugs in the C++ language/lib specification
|
2. [28]Bugs in gcc/g++ (not libstdc++-v3)
|
||||||
4. [29]Things in libstdc++ that look like bugs
|
3. [29]Bugs in the C++ language/lib specification
|
||||||
o [30]reopening a stream fails
|
4. [30]Things in libstdc++ that look like bugs
|
||||||
o [31]-Weffc++ complains too much
|
o [31]reopening a stream fails
|
||||||
o [32]"ambiguous overloads" after including an old-style
|
o [32]-Weffc++ complains too much
|
||||||
|
o [33]"ambiguous overloads" after including an old-style
|
||||||
header
|
header
|
||||||
o [33]The g++-3 headers are not ours
|
o [34]The g++-3 headers are not ours
|
||||||
o [34]compilation errors from streambuf.h
|
o [35]compilation errors from streambuf.h
|
||||||
o [35]errors about *Cconcept and constraints in the STL...
|
o [36]errors about *Cconcept and constraints in the STL...
|
||||||
5. [36]Aw, that's easy to fix!
|
5. [37]Aw, that's easy to fix!
|
||||||
5. [37]Miscellaneous
|
5. [38]Miscellaneous
|
||||||
1. [38]string::iterator is not char*; vector<T>::iterator is not
|
1. [39]string::iterator is not char*; vector<T>::iterator is not
|
||||||
T*
|
T*
|
||||||
2. [39]What's next after libstdc++-v3?
|
2. [40]What's next after libstdc++-v3?
|
||||||
3. [40]What about the STL from SGI?
|
3. [41]What about the STL from SGI?
|
||||||
4. [41]Extensions and Backward Compatibility
|
4. [42]Extensions and Backward Compatibility
|
||||||
5. [42][removed]
|
5. [43][removed]
|
||||||
6. [43]Is libstdc++-v3 thread-safe?
|
6. [44]Is libstdc++-v3 thread-safe?
|
||||||
7. [44]How do I get a copy of the ISO C++ Standard?
|
7. [45]How do I get a copy of the ISO C++ Standard?
|
||||||
8. [45]What's an ABI and why is it so messy?
|
8. [46]What's an ABI and why is it so messy?
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.0 General Information
|
1.0 General Information
|
||||||
|
@ -64,18 +65,18 @@
|
||||||
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
||||||
ISO 14882 Standard C++ library as described in chapters 17 through 27
|
ISO 14882 Standard C++ library as described in chapters 17 through 27
|
||||||
and annex D. As the library reaches stable plateaus, it is captured in
|
and annex D. As the library reaches stable plateaus, it is captured in
|
||||||
a snapshot and released. The current release is [46]the thirteenth
|
a snapshot and released. The current release is [47]the fourteenth
|
||||||
snapshot. For those who want to see exactly how far the project has
|
snapshot. For those who want to see exactly how far the project has
|
||||||
come, or just want the latest bleeding-edge code, the up-to-date
|
come, or just want the latest bleeding-edge code, the up-to-date
|
||||||
source is available over anonymous CVS, and can even be browsed over
|
source is available over anonymous CVS, and can even be browsed over
|
||||||
the Web (see below).
|
the Web (see below).
|
||||||
|
|
||||||
The older libstdc++-v2 project is no longer maintained; the code has
|
The older libstdc++-v2 project is no longer maintained; the code has
|
||||||
been completely replaced and rewritten. [47]If you are using V2, then
|
been completely replaced and rewritten. [48]If you are using V2, then
|
||||||
you need to report bugs to your system vendor, not to the V3 list.
|
you need to report bugs to your system vendor, not to the V3 list.
|
||||||
|
|
||||||
A more formal description of the V3 goals can be found in the official
|
A more formal description of the V3 goals can be found in the official
|
||||||
[48]design document.
|
[49]design document.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.2 Why should I use libstdc++?
|
1.2 Why should I use libstdc++?
|
||||||
|
@ -88,8 +89,8 @@
|
||||||
|
|
||||||
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
||||||
widely considered to be one of the leading compilers in the world. Its
|
widely considered to be one of the leading compilers in the world. Its
|
||||||
development has recently been taken over by the [49]GCC team. All of
|
development has recently been taken over by the [50]GCC team. All of
|
||||||
the rapid development and near-legendary [50]portability that are the
|
the rapid development and near-legendary [51]portability that are the
|
||||||
hallmarks of an open-source project are being applied to libstdc++.
|
hallmarks of an open-source project are being applied to libstdc++.
|
||||||
|
|
||||||
That means that all of the Standard classes and functions (such as
|
That means that all of the Standard classes and functions (such as
|
||||||
|
@ -107,16 +108,16 @@
|
||||||
|
|
||||||
Development and discussion is held on the libstdc++ mailing list.
|
Development and discussion is held on the libstdc++ mailing list.
|
||||||
Subscribing to the list, or searching the list archives, is open to
|
Subscribing to the list, or searching the list archives, is open to
|
||||||
everyone. You can read instructions for doing so on the [51]homepage.
|
everyone. You can read instructions for doing so on the [52]homepage.
|
||||||
If you have questions, ideas, code, or are just curious, sign up!
|
If you have questions, ideas, code, or are just curious, sign up!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.4 How do I get libstdc++?
|
1.4 How do I get libstdc++?
|
||||||
|
|
||||||
The thirteenth (and latest) snapshot of libstdc++-v3 is [52]available
|
The fourteenth (and latest) snapshot of libstdc++-v3 is [53]available
|
||||||
via ftp.
|
via ftp.
|
||||||
|
|
||||||
The [53]homepage has instructions for retrieving the latest CVS
|
The [54]homepage has instructions for retrieving the latest CVS
|
||||||
sources, and for browsing the CVS sources over the web.
|
sources, and for browsing the CVS sources over the web.
|
||||||
|
|
||||||
The subset commonly known as the Standard Template Library (chapters
|
The subset commonly known as the Standard Template Library (chapters
|
||||||
|
@ -132,7 +133,7 @@
|
||||||
|
|
||||||
1.6 How do I contribute to the effort?
|
1.6 How do I contribute to the effort?
|
||||||
|
|
||||||
Here is [54]a page devoted to this topic. Subscribing to the mailing
|
Here is [55]a page devoted to this topic. Subscribing to the mailing
|
||||||
list (see above, or the homepage) is a very good idea if you have
|
list (see above, or the homepage) is a very good idea if you have
|
||||||
something to contribute, or if you have spare time and want to help.
|
something to contribute, or if you have spare time and want to help.
|
||||||
Contributions don't have to be in the form of source code; anybody who
|
Contributions don't have to be in the form of source code; anybody who
|
||||||
|
@ -167,11 +168,11 @@
|
||||||
extracted into an updated utilities library, but nobody has stated
|
extracted into an updated utilities library, but nobody has stated
|
||||||
such a project yet.
|
such a project yet.
|
||||||
|
|
||||||
(The [55]Boost site houses free C++ libraries that do varying things,
|
(The [56]Boost site houses free C++ libraries that do varying things,
|
||||||
and happened to be started by members of the Standards Committee.
|
and happened to be started by members of the Standards Committee.
|
||||||
Certain "useful stuff" classes will probably migrate there.)
|
Certain "useful stuff" classes will probably migrate there.)
|
||||||
|
|
||||||
For the bold and/or desperate, the [56]GCC FAQ describes where to find
|
For the bold and/or desperate, the [57]GCC FAQ describes where to find
|
||||||
the last libg++ source.
|
the last libg++ source.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -181,16 +182,16 @@
|
||||||
remains unanswered, then just ask the mailing list. At present, you do
|
remains unanswered, then just ask the mailing list. At present, you do
|
||||||
not need to be subscribed to the list to send a message to it. More
|
not need to be subscribed to the list to send a message to it. More
|
||||||
information is available on the homepage (including how to browse the
|
information is available on the homepage (including how to browse the
|
||||||
list archives); to send to the list, use [57]libstdc++@gcc.gnu.org.
|
list archives); to send to the list, use [58]libstdc++@gcc.gnu.org.
|
||||||
|
|
||||||
If you have a question that you think should be included here, or if
|
If you have a question that you think should be included here, or if
|
||||||
you have a question about a question/answer here, contact [58]Phil
|
you have a question about a question/answer here, contact [59]Phil
|
||||||
Edwards or [59]Gabriel Dos Reis.
|
Edwards or [60]Gabriel Dos Reis.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.9 What are the license terms for libstdc++-v3?
|
1.9 What are the license terms for libstdc++-v3?
|
||||||
|
|
||||||
See [60]our license description for these and related questions.
|
See [61]our license description for these and related questions.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
2.0 Installation
|
2.0 Installation
|
||||||
|
@ -207,13 +208,13 @@
|
||||||
* The GNU Autotools are needed if you are messing with the configury
|
* The GNU Autotools are needed if you are messing with the configury
|
||||||
or makefiles.
|
or makefiles.
|
||||||
|
|
||||||
The file [61]documentation.html provides a good overview of the steps
|
The file [62]documentation.html provides a good overview of the steps
|
||||||
necessary to build, install, and use the library. Instructions for
|
necessary to build, install, and use the library. Instructions for
|
||||||
configuring the library with new flags such as --enable-threads are
|
configuring the library with new flags such as --enable-threads are
|
||||||
there also, as well as patches and instructions for working with GCC
|
there also, as well as patches and instructions for working with GCC
|
||||||
2.95.
|
2.95.
|
||||||
|
|
||||||
The top-level install.html and [62]RELEASE-NOTES files contain the
|
The top-level install.html and [63]RELEASE-NOTES files contain the
|
||||||
exact build and installation instructions. You may wish to browse
|
exact build and installation instructions. You may wish to browse
|
||||||
those files over CVSweb ahead of time to get a feel for what's
|
those files over CVSweb ahead of time to get a feel for what's
|
||||||
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
|
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
|
||||||
|
@ -230,8 +231,8 @@
|
||||||
|
|
||||||
The Concurrent Versions System is one of several revision control
|
The Concurrent Versions System is one of several revision control
|
||||||
packages. It was selected for GNU projects because it's free (speech),
|
packages. It was selected for GNU projects because it's free (speech),
|
||||||
free (beer), and very high quality. The [63]CVS entry in the GNU
|
free (beer), and very high quality. The [64]CVS entry in the GNU
|
||||||
software catalogue has a better description as well as a [64]link to
|
software catalogue has a better description as well as a [65]link to
|
||||||
the makers of CVS.
|
the makers of CVS.
|
||||||
|
|
||||||
The "anonymous client checkout" feature of CVS is similar to anonymous
|
The "anonymous client checkout" feature of CVS is similar to anonymous
|
||||||
|
@ -282,7 +283,7 @@
|
||||||
people don't like it, so here are two pseudo-solutions:
|
people don't like it, so here are two pseudo-solutions:
|
||||||
|
|
||||||
If the only functions from libstdc++.a which you need are language
|
If the only functions from libstdc++.a which you need are language
|
||||||
support functions (those listed in [65]clause 18 of the standard,
|
support functions (those listed in [66]clause 18 of the standard,
|
||||||
e.g., new and delete), then try linking against libsupc++.a (usually
|
e.g., new and delete), then try linking against libsupc++.a (usually
|
||||||
specifying -lsupc++ when calling g++ for the final link step will do
|
specifying -lsupc++ when calling g++ for the final link step will do
|
||||||
it). This library contains only those support routines, one per object
|
it). This library contains only those support routines, one per object
|
||||||
|
@ -346,6 +347,41 @@
|
||||||
commonly reported platform affected was Solaris.
|
commonly reported platform affected was Solaris.
|
||||||
|
|
||||||
This has been fixed for 3.0.3 and onwards.
|
This has been fixed for 3.0.3 and onwards.
|
||||||
|
_________________________________________________________________
|
||||||
|
|
||||||
|
3.5 _XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
|
||||||
|
|
||||||
|
On Solaris, g++ (but not gcc) always defines the preprocessor macro
|
||||||
|
_XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This
|
||||||
|
is not an exhaustive list; other macros and other platforms are also
|
||||||
|
affected.)
|
||||||
|
|
||||||
|
These macros are typically used in C library headers, guarding new
|
||||||
|
versions of functions from their older versions. The C++ standard
|
||||||
|
library includes the C standard library, but it requires the C90
|
||||||
|
version, which for backwards-compatability reasons is often not the
|
||||||
|
default for many vendors.
|
||||||
|
|
||||||
|
More to the point, the C++ standard requires behavior which is only
|
||||||
|
available on certain platforms after certain symbols are defined.
|
||||||
|
Usually the issue involves I/O-related typedefs. In order to ensure
|
||||||
|
correctness, the compiler simply predefines those symbols.
|
||||||
|
|
||||||
|
Note that it's not enough to #define them only when the library is
|
||||||
|
being built (during installation). Since we don't have an 'export'
|
||||||
|
keyword, much of the library exists as headers, which means that the
|
||||||
|
symbols must also be defined as your programs are parsed and compiled.
|
||||||
|
|
||||||
|
To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in the
|
||||||
|
gcc config headers for your target (and try changing them to see what
|
||||||
|
happens when building complicated code). You can also run "g++ -E -dM
|
||||||
|
- < /dev/null" to display a list of predefined macros for any
|
||||||
|
particular installation.
|
||||||
|
|
||||||
|
This has been discussed on the mailing lists [67]quite a bit.
|
||||||
|
|
||||||
|
This method is something of a wart. We'd like to find a cleaner
|
||||||
|
solution, but nobody yet has contributed the time.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.0 Known Bugs and Non-Bugs
|
4.0 Known Bugs and Non-Bugs
|
||||||
|
@ -359,7 +395,7 @@
|
||||||
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
||||||
being found.
|
being found.
|
||||||
|
|
||||||
Please read [66]the configuration instructions for GCC, specifically
|
Please read [68]the configuration instructions for GCC, specifically
|
||||||
the part about configuring in a separate build directory, and how
|
the part about configuring in a separate build directory, and how
|
||||||
strongly recommended it is. Building in the source directory is
|
strongly recommended it is. Building in the source directory is
|
||||||
fragile, is rarely tested, and tends to break, as in this case. This
|
fragile, is rarely tested, and tends to break, as in this case. This
|
||||||
|
@ -374,39 +410,13 @@
|
||||||
|
|
||||||
This is a verbatim clip from the "Status" section of the RELEASE-NOTES
|
This is a verbatim clip from the "Status" section of the RELEASE-NOTES
|
||||||
for the latest snapshot. For a list of fixed bugs, see that file.
|
for the latest snapshot. For a list of fixed bugs, see that file.
|
||||||
New in 3.0.96:
|
New in 3.0.97:
|
||||||
---
|
---
|
||||||
- more doxygen documentation.
|
- more doxygen documentation.
|
||||||
- extensions moved out of namespace std
|
- more named locale bug fixes
|
||||||
- HPUX long long support
|
- support for symbol versioning when using GNU ld >= 2.12
|
||||||
- more string optimizations
|
- wide-io
|
||||||
- support for NetBSD cross compiles
|
- tuning for executable size
|
||||||
- concept_check merge from boost
|
|
||||||
- header simplification
|
|
||||||
- named locale bug shakeout
|
|
||||||
- thread testsuite
|
|
||||||
|
|
||||||
New in 3.0.95:
|
|
||||||
---
|
|
||||||
- add S390, m68k, x86-64 support.
|
|
||||||
- doxygen documentation has been extended, including man pages.
|
|
||||||
- verbose terminate handling has been added.
|
|
||||||
- some libsupc++ tweaks
|
|
||||||
- warnings for deprecated headers now active.
|
|
||||||
- dejagnu testsuite preliminary documentation.
|
|
||||||
- dejagnu testsuite default.
|
|
||||||
- dejagnu testsuite cross compiler, multilib safe.
|
|
||||||
- long long iostreams on by default, rework of ISO C99 support.
|
|
||||||
- iterator re-write and testsuites.
|
|
||||||
- container testsuites.
|
|
||||||
- allocator revamp and testsuites.
|
|
||||||
- more concept-checking work.
|
|
||||||
- basic_string optimization and MT fixes.
|
|
||||||
- new limits implementation.
|
|
||||||
- update -fno-exceptions code, verify it works.
|
|
||||||
- full named locale support fpr all facets, choice of gnu,
|
|
||||||
ieee_1003.1-200x (POSIX 2), or generic models. Full support depends
|
|
||||||
on target OS and underlying "C" library support.
|
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.2 Bugs in gcc/g++ (not libstdc++-v3)
|
4.2 Bugs in gcc/g++ (not libstdc++-v3)
|
||||||
|
@ -416,30 +426,30 @@ New in 3.0.95:
|
||||||
libstdc++. If you are experiencing one of these problems, you can find
|
libstdc++. If you are experiencing one of these problems, you can find
|
||||||
more information on the libstdc++ and the GCC mailing lists.
|
more information on the libstdc++ and the GCC mailing lists.
|
||||||
|
|
||||||
Before reporting a bug, examine the [67]bugs database with the
|
Before reporting a bug, examine the [69]bugs database with the
|
||||||
category set to "libstdc++". The BUGS file in the source tree also
|
category set to "libstdc++". The BUGS file in the source tree also
|
||||||
tracks known serious problems.
|
tracks known serious problems.
|
||||||
* Debugging is problematic, due to bugs in line-number generation
|
* Debugging is problematic, due to bugs in line-number generation
|
||||||
(mostly fixed in the compiler) and gdb lagging behind the compiler
|
(mostly fixed in the compiler) and gdb lagging behind the compiler
|
||||||
(lack of personnel). We recommend configuring the compiler using
|
(lack of personnel). We recommend configuring the compiler using
|
||||||
--with-dwarf2 if the DWARF2 debugging format is not already the
|
--with-dwarf2 if the DWARF2 debugging format is not already the
|
||||||
default on your platform. Also, [68]changing your GDB settings can
|
default on your platform. Also, [70]changing your GDB settings can
|
||||||
have a profound effect on your C++ debugging experiences. :-)
|
have a profound effect on your C++ debugging experiences. :-)
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.3 Bugs in the C++ language/lib specification
|
4.3 Bugs in the C++ language/lib specification
|
||||||
|
|
||||||
Yes, unfortunately, there are some. In a [69]message to the list,
|
Yes, unfortunately, there are some. In a [71]message to the list,
|
||||||
Nathan Myers announced that he has started a list of problems in the
|
Nathan Myers announced that he has started a list of problems in the
|
||||||
ISO C++ Standard itself, especially with regard to the chapters that
|
ISO C++ Standard itself, especially with regard to the chapters that
|
||||||
concern the library. The list itself is [70]posted on his website.
|
concern the library. The list itself is [72]posted on his website.
|
||||||
Developers who are having problems interpreting the Standard may wish
|
Developers who are having problems interpreting the Standard may wish
|
||||||
to consult his notes.
|
to consult his notes.
|
||||||
|
|
||||||
For those people who are not part of the ISO Library Group (i.e.,
|
For those people who are not part of the ISO Library Group (i.e.,
|
||||||
nearly all of us needing to read this page in the first place :-), a
|
nearly all of us needing to read this page in the first place :-), a
|
||||||
public list of the library defects is occasionally published [71]here.
|
public list of the library defects is occasionally published [73]here.
|
||||||
Some of these have resulted in [72]code changes.
|
Some of these have resulted in [74]code changes.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.4 Things in libstdc++ that look like bugs
|
4.4 Things in libstdc++ that look like bugs
|
||||||
|
@ -471,7 +481,7 @@ New in 3.0.95:
|
||||||
state on the previous file. The reason is that the state flags are not
|
state on the previous file. The reason is that the state flags are not
|
||||||
cleared on a successful call to open(). The standard unfortunately did
|
cleared on a successful call to open(). The standard unfortunately did
|
||||||
not specify behavior in this case, and to everybody's great sorrow,
|
not specify behavior in this case, and to everybody's great sorrow,
|
||||||
the [73]proposed LWG resolution (see DR #22) is to leave the flags
|
the [75]proposed LWG resolution (see DR #22) is to leave the flags
|
||||||
unchanged. You must insert a call to fs.clear() between the calls to
|
unchanged. You must insert a call to fs.clear() between the calls to
|
||||||
close() and open(), and then everything will work like we all expect
|
close() and open(), and then everything will work like we all expect
|
||||||
it to work.
|
it to work.
|
||||||
|
@ -481,14 +491,14 @@ New in 3.0.95:
|
||||||
same namespace as other comparison functions (e.g., 'using' them and
|
same namespace as other comparison functions (e.g., 'using' them and
|
||||||
the <iterator> header), then you will suddenly be faced with huge
|
the <iterator> header), then you will suddenly be faced with huge
|
||||||
numbers of ambiguity errors. This was discussed on the -v3 list;
|
numbers of ambiguity errors. This was discussed on the -v3 list;
|
||||||
Nathan Myers [74]sums things up here.
|
Nathan Myers [76]sums things up here.
|
||||||
|
|
||||||
The g++-3 headers are not ours
|
The g++-3 headers are not ours
|
||||||
|
|
||||||
If you have found an extremely broken header file which is causing
|
If you have found an extremely broken header file which is causing
|
||||||
problems for you, look carefully before submitting a "high" priority
|
problems for you, look carefully before submitting a "high" priority
|
||||||
bug report (which you probably shouldn't do anyhow; see the last
|
bug report (which you probably shouldn't do anyhow; see the last
|
||||||
paragraph of the page describing [75]the GCC bug database).
|
paragraph of the page describing [77]the GCC bug database).
|
||||||
|
|
||||||
If the headers are in ${prefix}/include/g++-3, or if the installed
|
If the headers are in ${prefix}/include/g++-3, or if the installed
|
||||||
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
||||||
|
@ -498,7 +508,7 @@ New in 3.0.95:
|
||||||
|
|
||||||
Currently our header files are installed in ${prefix}/include/g++-v3
|
Currently our header files are installed in ${prefix}/include/g++-v3
|
||||||
(see the 'v'?). This may change with the next release of GCC, as it
|
(see the 'v'?). This may change with the next release of GCC, as it
|
||||||
may be too confusing, but [76]the question has not yet been decided.
|
may be too confusing, but [78]the question has not yet been decided.
|
||||||
|
|
||||||
glibc If you're on a GNU/Linux system and have just upgraded to glibc
|
glibc If you're on a GNU/Linux system and have just upgraded to glibc
|
||||||
2.2, but are still using gcc 2.95.2, then you should have read the
|
2.2, but are still using gcc 2.95.2, then you should have read the
|
||||||
|
@ -511,7 +521,7 @@ type has changed in glibc 2.2. The patch is at
|
||||||
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
|
|
||||||
|
|
||||||
Note that 2.95.x shipped with the [77]old v2 library which is no
|
Note that 2.95.x shipped with the [79]old v2 library which is no
|
||||||
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
||||||
requires a separate patch for libstdc++-v3.
|
requires a separate patch for libstdc++-v3.
|
||||||
|
|
||||||
|
@ -524,23 +534,23 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
visibility, or you just plain forgot, etc).
|
visibility, or you just plain forgot, etc).
|
||||||
|
|
||||||
More information, including how to optionally enable/disable the
|
More information, including how to optionally enable/disable the
|
||||||
checks, is available [78]here.
|
checks, is available [80]here.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.5 Aw, that's easy to fix!
|
4.5 Aw, that's easy to fix!
|
||||||
|
|
||||||
If you have found a bug in the library and you think you have a
|
If you have found a bug in the library and you think you have a
|
||||||
working fix, then send it in! The main GCC site has a page on
|
working fix, then send it in! The main GCC site has a page on
|
||||||
[79]submitting patches that covers the procedure, but for libstdc++
|
[81]submitting patches that covers the procedure, but for libstdc++
|
||||||
you should also send the patch to our mailing list in addition to the
|
you should also send the patch to our mailing list in addition to the
|
||||||
GCC patches mailing list. The libstdc++ [80]contributors' page also
|
GCC patches mailing list. The libstdc++ [82]contributors' page also
|
||||||
talks about how to submit patches.
|
talks about how to submit patches.
|
||||||
|
|
||||||
In addition to the description, the patch, and the ChangeLog entry, it
|
In addition to the description, the patch, and the ChangeLog entry, it
|
||||||
is a Good Thing if you can additionally create a small test program to
|
is a Good Thing if you can additionally create a small test program to
|
||||||
test for the presence of the bug that your patch fixes. Bugs have a
|
test for the presence of the bug that your patch fixes. Bugs have a
|
||||||
way of being reintroduced; if an old bug creeps back in, it will be
|
way of being reintroduced; if an old bug creeps back in, it will be
|
||||||
caught immediately by the [81]testsuite -- but only if such a test
|
caught immediately by the [83]testsuite -- but only if such a test
|
||||||
exists.
|
exists.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -574,7 +584,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
libstdc++. Some of that is already happening, see 4.2. Some of
|
libstdc++. Some of that is already happening, see 4.2. Some of
|
||||||
those changes are being predicted by the library maintainers, and
|
those changes are being predicted by the library maintainers, and
|
||||||
we add code to the library based on what the current proposed
|
we add code to the library based on what the current proposed
|
||||||
resolution specifies. Those additions are listed in [82]the
|
resolution specifies. Those additions are listed in [84]the
|
||||||
extensions page.
|
extensions page.
|
||||||
2. Performance tuning. Lots of performance tuning. This too is
|
2. Performance tuning. Lots of performance tuning. This too is
|
||||||
already underway for post-3.0 releases, starting with memory
|
already underway for post-3.0 releases, starting with memory
|
||||||
|
@ -590,13 +600,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
||||||
safety, for instance) will of course be a continuing task.
|
safety, for instance) will of course be a continuing task.
|
||||||
|
|
||||||
[83]This question about the next libstdc++ prompted some brief but
|
[85]This question about the next libstdc++ prompted some brief but
|
||||||
interesting [84]speculation.
|
interesting [86]speculation.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.3 What about the STL from SGI?
|
5.3 What about the STL from SGI?
|
||||||
|
|
||||||
The [85]STL from SGI, version 3.3, was the most recent merge of the
|
The [87]STL from SGI, version 3.3, was the most recent merge of the
|
||||||
STL codebase. The code in libstdc++ contains many fixes and changes,
|
STL codebase. The code in libstdc++ contains many fixes and changes,
|
||||||
and it is very likely that the SGI code is no longer under active
|
and it is very likely that the SGI code is no longer under active
|
||||||
development. We expect that no future merges will take place.
|
development. We expect that no future merges will take place.
|
||||||
|
@ -617,7 +627,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
#include <ext/hash_map>
|
#include <ext/hash_map>
|
||||||
|
|
||||||
|
|
||||||
Extensions to the library have [86]their own page.
|
Extensions to the library have [88]their own page.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.5 [removed]
|
5.5 [removed]
|
||||||
|
@ -666,8 +676,8 @@ a
|
||||||
otherwise documented as safe, do not assume that two threads may
|
otherwise documented as safe, do not assume that two threads may
|
||||||
access a shared standard library object at the same time.
|
access a shared standard library object at the same time.
|
||||||
|
|
||||||
See chapters [87]17 (library introduction), [88]23 (containers), and
|
See chapters [89]17 (library introduction), [90]23 (containers), and
|
||||||
[89]27 (I/O) for more information.
|
[91]27 (I/O) for more information.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.7 How do I get a copy of the ISO C++ Standard?
|
5.7 How do I get a copy of the ISO C++ Standard?
|
||||||
|
@ -678,11 +688,11 @@ a
|
||||||
their two-meeting commitment for voting rights, may get a copy of the
|
their two-meeting commitment for voting rights, may get a copy of the
|
||||||
standard from their respective national standards organization. In the
|
standard from their respective national standards organization. In the
|
||||||
USA, this national standards organization is ANSI and their website is
|
USA, this national standards organization is ANSI and their website is
|
||||||
right [90]here. (And if you've already registered with them, clicking
|
right [92]here. (And if you've already registered with them, clicking
|
||||||
this link will take you to directly to the place where you can [91]buy
|
this link will take you to directly to the place where you can [93]buy
|
||||||
the standard on-line.
|
the standard on-line.
|
||||||
|
|
||||||
Who is your country's member body? Visit the [92]ISO homepage and find
|
Who is your country's member body? Visit the [94]ISO homepage and find
|
||||||
out!
|
out!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -733,8 +743,8 @@ a
|
||||||
encompasses the standard library.
|
encompasses the standard library.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
See [93]license.html for copying conditions. Comments and suggestions
|
See [95]license.html for copying conditions. Comments and suggestions
|
||||||
are welcome, and may be sent to [94]the libstdc++ mailing list.
|
are welcome, and may be sent to [96]the libstdc++ mailing list.
|
||||||
|
|
||||||
References
|
References
|
||||||
|
|
||||||
|
@ -762,73 +772,75 @@ References
|
||||||
22. ../faq/index.html#3_2
|
22. ../faq/index.html#3_2
|
||||||
23. ../faq/index.html#3_3
|
23. ../faq/index.html#3_3
|
||||||
24. ../faq/index.html#3_4
|
24. ../faq/index.html#3_4
|
||||||
25. ../faq/index.html#4_0
|
25. ../faq/index.html#3_5
|
||||||
26. ../faq/index.html#4_1
|
26. ../faq/index.html#4_0
|
||||||
27. ../faq/index.html#4_2
|
27. ../faq/index.html#4_1
|
||||||
28. ../faq/index.html#4_3
|
28. ../faq/index.html#4_2
|
||||||
29. ../faq/index.html#4_4
|
29. ../faq/index.html#4_3
|
||||||
30. ../faq/index.html#4_4_iostreamclear
|
30. ../faq/index.html#4_4
|
||||||
31. ../faq/index.html#4_4_Weff
|
31. ../faq/index.html#4_4_iostreamclear
|
||||||
32. ../faq/index.html#4_4_rel_ops
|
32. ../faq/index.html#4_4_Weff
|
||||||
33. ../faq/index.html#4_4_interface
|
33. ../faq/index.html#4_4_rel_ops
|
||||||
34. ../faq/index.html#4_4_glibc
|
34. ../faq/index.html#4_4_interface
|
||||||
35. ../faq/index.html#4_4_checks
|
35. ../faq/index.html#4_4_glibc
|
||||||
36. ../faq/index.html#4_5
|
36. ../faq/index.html#4_4_checks
|
||||||
37. ../faq/index.html#5_0
|
37. ../faq/index.html#4_5
|
||||||
38. ../faq/index.html#5_1
|
38. ../faq/index.html#5_0
|
||||||
39. ../faq/index.html#5_2
|
39. ../faq/index.html#5_1
|
||||||
40. ../faq/index.html#5_3
|
40. ../faq/index.html#5_2
|
||||||
41. ../faq/index.html#5_4
|
41. ../faq/index.html#5_3
|
||||||
42. ../faq/index.html#5_5
|
42. ../faq/index.html#5_4
|
||||||
43. ../faq/index.html#5_6
|
43. ../faq/index.html#5_5
|
||||||
44. ../faq/index.html#5_7
|
44. ../faq/index.html#5_6
|
||||||
45. ../faq/index.html#5_8
|
45. ../faq/index.html#5_7
|
||||||
46. http://gcc.gnu.org/libstdc++/download.html
|
46. ../faq/index.html#5_8
|
||||||
47. ../faq/index.html#4_4_interface
|
47. http://gcc.gnu.org/libstdc++/download.html
|
||||||
48. ../17_intro/DESIGN
|
48. ../faq/index.html#4_4_interface
|
||||||
49. http://gcc.gnu.org/
|
49. ../17_intro/DESIGN
|
||||||
50. http://gcc.gnu.org/gcc-2.95/buildstat.html
|
50. http://gcc.gnu.org/
|
||||||
51. http://gcc.gnu.org/libstdc++/
|
51. http://gcc.gnu.org/gcc-2.95/buildstat.html
|
||||||
52. http://gcc.gnu.org/libstdc++/download.html
|
52. http://gcc.gnu.org/libstdc++/
|
||||||
53. http://gcc.gnu.org/libstdc++/
|
53. http://gcc.gnu.org/libstdc++/download.html
|
||||||
54. ../17_intro/contribute.html
|
54. http://gcc.gnu.org/libstdc++/
|
||||||
55. http://www.boost.org/
|
55. ../17_intro/contribute.html
|
||||||
56. http://gcc.gnu.org/fom_serv/cache/33.html
|
56. http://www.boost.org/
|
||||||
57. mailto:libstdc++@gcc.gnu.org
|
57. http://gcc.gnu.org/fom_serv/cache/33.html
|
||||||
58. mailto:pme@gcc.gnu.org
|
58. mailto:libstdc++@gcc.gnu.org
|
||||||
59. mailto:gdr@gcc.gnu.org
|
59. mailto:pme@gcc.gnu.org
|
||||||
60. ../17_intro/license.html
|
60. mailto:gdr@gcc.gnu.org
|
||||||
61. ../documentation.html
|
61. ../17_intro/license.html
|
||||||
62. ../17_intro/RELEASE-NOTES
|
62. ../documentation.html
|
||||||
63. http://www.gnu.org/software/cvs/cvs.html
|
63. ../17_intro/RELEASE-NOTES
|
||||||
64. http://www.cvshome.org/
|
64. http://www.gnu.org/software/cvs/cvs.html
|
||||||
65. ../18_support/howto.html
|
65. http://www.cvshome.org/
|
||||||
66. http://gcc.gnu.org/install/configure.html
|
66. ../18_support/howto.html
|
||||||
67. http://gcc.gnu.org/bugs.html
|
67. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
|
||||||
68. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
|
68. http://gcc.gnu.org/install/configure.html
|
||||||
69. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
|
69. http://gcc.gnu.org/bugs.html
|
||||||
70. http://www.cantrip.org/draft-bugs.txt
|
70. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
|
||||||
71. http://anubis.dkuug.dk/jtc1/sc22/wg21/
|
71. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
|
||||||
72. ../faq/index.html#5_2
|
72. http://www.cantrip.org/draft-bugs.txt
|
||||||
73. ../ext/howto.html#5
|
73. http://anubis.dkuug.dk/jtc1/sc22/wg21/
|
||||||
74. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
|
74. ../faq/index.html#5_2
|
||||||
75. http://gcc.gnu.org/gnatswrite.html
|
75. ../ext/howto.html#5
|
||||||
76. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
|
76. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
|
||||||
77. ../faq/index.html#4_4_interface
|
77. http://gcc.gnu.org/gnatswrite.html
|
||||||
78. ../19_diagnostics/howto.html#3
|
78. http://gcc.gnu.org/ml/gcc/2000-10/msg00732.html
|
||||||
79. http://gcc.gnu.org/contribute.html
|
79. ../faq/index.html#4_4_interface
|
||||||
80. ../17_intro/contribute.html
|
80. ../19_diagnostics/howto.html#3
|
||||||
81. ../faq/index.html#2_4
|
81. http://gcc.gnu.org/contribute.html
|
||||||
82. ../ext/howto.html#5
|
82. ../17_intro/contribute.html
|
||||||
83. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
83. ../faq/index.html#2_4
|
||||||
84. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
84. ../ext/howto.html#5
|
||||||
85. http://www.sgi.com/Technology/STL/
|
85. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
||||||
86. ../ext/howto.html
|
86. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
||||||
87. ../17_intro/howto.html#3
|
87. http://www.sgi.com/Technology/STL/
|
||||||
88. ../23_containers/howto.html#3
|
88. ../ext/howto.html
|
||||||
89. ../27_io/howto.html#9
|
89. ../17_intro/howto.html#3
|
||||||
90. http://www.ansi.org/
|
90. ../23_containers/howto.html#3
|
||||||
91. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
|
91. ../27_io/howto.html#9
|
||||||
92. http://www.iso.ch/
|
92. http://www.ansi.org/
|
||||||
93. ../17_intro/license.html
|
93. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
|
||||||
94. mailto:libstdc++@gcc.gnu.org
|
94. http://www.iso.ch/
|
||||||
|
95. ../17_intro/license.html
|
||||||
|
96. mailto:libstdc++@gcc.gnu.org
|
||||||
|
|
|
@ -731,7 +731,7 @@ namespace std
|
||||||
// string::iterator, _CharT*, etc.
|
// string::iterator, _CharT*, etc.
|
||||||
template<class _FwdIter>
|
template<class _FwdIter>
|
||||||
static _CharT*
|
static _CharT*
|
||||||
_S_construct(_FwdIter __end, _FwdIter __beg, const _Alloc& __a,
|
_S_construct(_FwdIter __beg, _FwdIter __end, const _Alloc& __a,
|
||||||
forward_iterator_tag);
|
forward_iterator_tag);
|
||||||
|
|
||||||
static _CharT*
|
static _CharT*
|
||||||
|
@ -879,7 +879,7 @@ namespace std
|
||||||
int
|
int
|
||||||
compare(const _CharT* __s) const;
|
compare(const _CharT* __s) const;
|
||||||
|
|
||||||
#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS
|
// _GLIBCPP_RESOLVE_LIB_DEFECTS
|
||||||
// 5. String::compare specification questionable
|
// 5. String::compare specification questionable
|
||||||
int
|
int
|
||||||
compare(size_type __pos, size_type __n1, const _CharT* __s) const;
|
compare(size_type __pos, size_type __n1, const _CharT* __s) const;
|
||||||
|
@ -887,7 +887,6 @@ namespace std
|
||||||
int
|
int
|
||||||
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
compare(size_type __pos, size_type __n1, const _CharT* __s,
|
||||||
size_type __n2) const;
|
size_type __n2) const;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#include <cmath> // For ceil
|
#include <cmath> // For ceil
|
||||||
#include <cctype> // For isspace
|
#include <cctype> // For isspace
|
||||||
#include <limits> // For numeric_limits
|
#include <limits> // For numeric_limits
|
||||||
#include <memory> // For auto_ptr
|
|
||||||
#include <bits/streambuf_iterator.h>
|
#include <bits/streambuf_iterator.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <typeinfo> // For bad_cast.
|
#include <typeinfo> // For bad_cast.
|
||||||
|
|
|
@ -464,8 +464,8 @@ namespace std
|
||||||
// 129. Need error indication from seekp() and seekg()
|
// 129. Need error indication from seekp() and seekg()
|
||||||
if (__err == pos_type(off_type(-1)))
|
if (__err == pos_type(off_type(-1)))
|
||||||
this->setstate(ios_base::failbit);
|
this->setstate(ios_base::failbit);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,8 +144,7 @@ namespace std
|
||||||
* @return @p f.
|
* @return @p f.
|
||||||
*
|
*
|
||||||
* Applies the function object @p f to each element in the range
|
* Applies the function object @p f to each element in the range
|
||||||
* @p [first,last).
|
* @p [first,last). @p f must not modify the order of the sequence.
|
||||||
* @p f must not modify its argument.
|
|
||||||
* If @p f has a return value it is ignored.
|
* If @p f has a return value it is ignored.
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _Function>
|
template<typename _InputIter, typename _Function>
|
||||||
|
@ -1388,8 +1387,12 @@ __result, __binary_pred, _IterType());
|
||||||
return __result;
|
return __result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This is a helper function for the rotate algorithm specialized on RAIs.
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the rotate algorithm specialized on RAIs.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _EuclideanRingElement>
|
template<typename _EuclideanRingElement>
|
||||||
_EuclideanRingElement
|
_EuclideanRingElement
|
||||||
__gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
|
__gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
|
||||||
|
@ -1402,6 +1405,11 @@ __result, __binary_pred, _IterType());
|
||||||
return __m;
|
return __m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the rotate algorithm.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _ForwardIter>
|
template<typename _ForwardIter>
|
||||||
void
|
void
|
||||||
__rotate(_ForwardIter __first,
|
__rotate(_ForwardIter __first,
|
||||||
|
@ -1430,6 +1438,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the rotate algorithm.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _BidirectionalIter>
|
template<typename _BidirectionalIter>
|
||||||
void
|
void
|
||||||
__rotate(_BidirectionalIter __first,
|
__rotate(_BidirectionalIter __first,
|
||||||
|
@ -1458,6 +1471,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the rotate algorithm.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
__rotate(_RandomAccessIter __first,
|
__rotate(_RandomAccessIter __first,
|
||||||
|
@ -1519,6 +1537,15 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param middle A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _ForwardIter>
|
template<typename _ForwardIter>
|
||||||
inline void
|
inline void
|
||||||
rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last)
|
rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last)
|
||||||
|
@ -1530,6 +1557,16 @@ __result, __binary_pred, _IterType());
|
||||||
__rotate(__first, __middle, __last, _IterType());
|
__rotate(__first, __middle, __last, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param middle A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @param result An output iterator.
|
||||||
|
* @return TODO
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _OutputIter>
|
template<typename _ForwardIter, typename _OutputIter>
|
||||||
_OutputIter
|
_OutputIter
|
||||||
rotate_copy(_ForwardIter __first, _ForwardIter __middle,
|
rotate_copy(_ForwardIter __first, _ForwardIter __middle,
|
||||||
|
@ -1543,9 +1580,16 @@ __result, __binary_pred, _IterType());
|
||||||
return copy(__first, __middle, copy(__middle, __last, __result));
|
return copy(__first, __middle, copy(__middle, __last, __result));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return a random number in the range [0, __n). This function encapsulates
|
|
||||||
// whether we're using rand (part of the standard C library) or lrand48
|
/**
|
||||||
// (not standard, but a much better choice whenever it's available).
|
* @maint
|
||||||
|
* Return a random number in the range [0, __n). This function encapsulates
|
||||||
|
* whether we're using rand (part of the standard C library) or lrand48
|
||||||
|
* (not standard, but a much better choice whenever it's available).
|
||||||
|
*
|
||||||
|
* XXX There is no corresponding encapsulation fn to seed the generator.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _Distance>
|
template<typename _Distance>
|
||||||
inline _Distance
|
inline _Distance
|
||||||
__random_number(_Distance __n)
|
__random_number(_Distance __n)
|
||||||
|
@ -1557,8 +1601,15 @@ __result, __binary_pred, _IterType());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 25.2.11 random_shuffle().
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
inline void
|
inline void
|
||||||
random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last)
|
random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1572,6 +1623,15 @@ __result, __binary_pred, _IterType());
|
||||||
iter_swap(__i, __first + __random_number((__i - __first) + 1));
|
iter_swap(__i, __first + __random_number((__i - __first) + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @param rand The RNG functor or function.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _RandomNumberGenerator>
|
template<typename _RandomAccessIter, typename _RandomNumberGenerator>
|
||||||
void
|
void
|
||||||
random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
|
random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1586,8 +1646,12 @@ __result, __binary_pred, _IterType());
|
||||||
iter_swap(__i, __first + __rand((__i - __first) + 1));
|
iter_swap(__i, __first + __rand((__i - __first) + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
// partition, stable_partition, and their auxiliary functions
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate>
|
template<typename _ForwardIter, typename _Predicate>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
__partition(_ForwardIter __first, _ForwardIter __last,
|
__partition(_ForwardIter __first, _ForwardIter __last,
|
||||||
|
@ -1610,6 +1674,11 @@ __result, __binary_pred, _IterType());
|
||||||
return __first;
|
return __first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _BidirectionalIter, typename _Predicate>
|
template<typename _BidirectionalIter, typename _Predicate>
|
||||||
_BidirectionalIter
|
_BidirectionalIter
|
||||||
__partition(_BidirectionalIter __first, _BidirectionalIter __last,
|
__partition(_BidirectionalIter __first, _BidirectionalIter __last,
|
||||||
|
@ -1637,6 +1706,15 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @param pred A predicate functor.
|
||||||
|
* @return TODO
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate>
|
template<typename _ForwardIter, typename _Predicate>
|
||||||
inline _ForwardIter
|
inline _ForwardIter
|
||||||
partition(_ForwardIter __first, _ForwardIter __last,
|
partition(_ForwardIter __first, _ForwardIter __last,
|
||||||
|
@ -1651,6 +1729,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate, typename _Distance>
|
template<typename _ForwardIter, typename _Predicate, typename _Distance>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
__inplace_stable_partition(_ForwardIter __first, _ForwardIter __last,
|
__inplace_stable_partition(_ForwardIter __first, _ForwardIter __last,
|
||||||
|
@ -1671,6 +1754,11 @@ __result, __binary_pred, _IterType());
|
||||||
return __begin;
|
return __begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _Pointer, typename _Predicate,
|
template<typename _ForwardIter, typename _Pointer, typename _Predicate,
|
||||||
typename _Distance>
|
typename _Distance>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
|
@ -1711,6 +1799,15 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first A forward iterator.
|
||||||
|
* @param last A forward iterator.
|
||||||
|
* @param pred A predicate functor.
|
||||||
|
* @return TODO
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate>
|
template<typename _ForwardIter, typename _Predicate>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
stable_partition(_ForwardIter __first, _ForwardIter __last,
|
stable_partition(_ForwardIter __first, _ForwardIter __last,
|
||||||
|
@ -1739,6 +1836,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp>
|
template<typename _RandomAccessIter, typename _Tp>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
__unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last,
|
__unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1757,6 +1859,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function...
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
__unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last,
|
__unguarded_partition(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1775,10 +1882,20 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* @doctodo
|
||||||
|
* This controls some aspect of the sort routines.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
extern const int __stl_threshold;
|
extern const int __stl_threshold;
|
||||||
|
|
||||||
// sort() and its auxiliary functions.
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp>
|
template<typename _RandomAccessIter, typename _Tp>
|
||||||
void
|
void
|
||||||
__unguarded_linear_insert(_RandomAccessIter __last, _Tp __val)
|
__unguarded_linear_insert(_RandomAccessIter __last, _Tp __val)
|
||||||
|
@ -1793,6 +1910,11 @@ __result, __binary_pred, _IterType());
|
||||||
*__last = __val;
|
*__last = __val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
||||||
void
|
void
|
||||||
__unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, _Compare __comp)
|
__unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, _Compare __comp)
|
||||||
|
@ -1807,6 +1929,11 @@ __result, __binary_pred, _IterType());
|
||||||
*__last = __val;
|
*__last = __val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
__insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
__insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1825,6 +1952,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
__insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
__insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1844,6 +1976,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
inline void
|
inline void
|
||||||
__unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
__unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1854,6 +1991,11 @@ __result, __binary_pred, _IterType());
|
||||||
__unguarded_linear_insert(__i, _ValueType(*__i));
|
__unguarded_linear_insert(__i, _ValueType(*__i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
inline void
|
inline void
|
||||||
__unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
__unguarded_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1865,6 +2007,11 @@ __result, __binary_pred, _IterType());
|
||||||
__unguarded_linear_insert(__i, _ValueType(*__i), __comp);
|
__unguarded_linear_insert(__i, _ValueType(*__i), __comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
__final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
__final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1877,6 +2024,11 @@ __result, __binary_pred, _IterType());
|
||||||
__insertion_sort(__first, __last);
|
__insertion_sort(__first, __last);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
__final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
__final_insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1890,6 +2042,11 @@ __result, __binary_pred, _IterType());
|
||||||
__insertion_sort(__first, __last, __comp);
|
__insertion_sort(__first, __last, __comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _Size>
|
template<typename _Size>
|
||||||
inline _Size
|
inline _Size
|
||||||
__lg(_Size __n)
|
__lg(_Size __n)
|
||||||
|
@ -1899,6 +2056,11 @@ __result, __binary_pred, _IterType());
|
||||||
return __k;
|
return __k;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Size>
|
template<typename _RandomAccessIter, typename _Size>
|
||||||
void
|
void
|
||||||
__introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last,
|
__introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1922,6 +2084,11 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the sort routine.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Size, typename _Compare>
|
template<typename _RandomAccessIter, typename _Size, typename _Compare>
|
||||||
void
|
void
|
||||||
__introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last,
|
__introsort_loop(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -1946,6 +2113,14 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
inline void
|
inline void
|
||||||
sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1963,6 +2138,15 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @param comp A comparison functor.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
inline void
|
inline void
|
||||||
sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp)
|
sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp)
|
||||||
|
@ -1980,8 +2164,12 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// stable_sort() and its auxiliary functions.
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the stable sorting routines.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
__inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
__inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -1998,6 +2186,11 @@ __result, __binary_pred, _IterType());
|
||||||
__last - __middle);
|
__last - __middle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @maint
|
||||||
|
* This is a helper function for the stable sorting routines.
|
||||||
|
* @endmaint
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
__inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
__inplace_stable_sort(_RandomAccessIter __first, _RandomAccessIter __last,
|
||||||
|
@ -2171,6 +2364,14 @@ __result, __binary_pred, _IterType());
|
||||||
__comp);
|
__comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
inline void
|
inline void
|
||||||
stable_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
stable_sort(_RandomAccessIter __first, _RandomAccessIter __last)
|
||||||
|
@ -2190,6 +2391,15 @@ __result, __binary_pred, _IterType());
|
||||||
__stable_sort_adaptive(__first, __last, buf.begin(), _DistanceType(buf.size()));
|
__stable_sort_adaptive(__first, __last, buf.begin(), _DistanceType(buf.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @param comp A comparison functor.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
inline void
|
inline void
|
||||||
stable_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp)
|
stable_sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp)
|
||||||
|
@ -2211,6 +2421,15 @@ __result, __binary_pred, _IterType());
|
||||||
__comp);
|
__comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param middle Another iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
partial_sort(_RandomAccessIter __first,
|
partial_sort(_RandomAccessIter __first,
|
||||||
|
@ -2231,6 +2450,16 @@ __result, __binary_pred, _IterType());
|
||||||
sort_heap(__first, __middle);
|
sort_heap(__first, __middle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param middle Another iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @param comp A comparison functor.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
partial_sort(_RandomAccessIter __first,
|
partial_sort(_RandomAccessIter __first,
|
||||||
|
@ -2253,6 +2482,16 @@ __result, __binary_pred, _IterType());
|
||||||
sort_heap(__first, __middle, __comp);
|
sort_heap(__first, __middle, __comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An input iterator.
|
||||||
|
* @param last Another input iterator.
|
||||||
|
* @param result_first A random-access iterator.
|
||||||
|
* @param result_last Another random-access iterator.
|
||||||
|
* @return TODO
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _InputIter, typename _RandomAccessIter>
|
template<typename _InputIter, typename _RandomAccessIter>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
partial_sort_copy(_InputIter __first, _InputIter __last,
|
partial_sort_copy(_InputIter __first, _InputIter __last,
|
||||||
|
@ -2288,6 +2527,17 @@ __result, __binary_pred, _IterType());
|
||||||
return __result_real_last;
|
return __result_real_last;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An input iterator.
|
||||||
|
* @param last Another input iterator.
|
||||||
|
* @param result_first A random-access iterator.
|
||||||
|
* @param result_last Another random-access iterator.
|
||||||
|
* @param comp A comparison functor.
|
||||||
|
* @return TODO
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _InputIter, typename _RandomAccessIter, typename _Compare>
|
template<typename _InputIter, typename _RandomAccessIter, typename _Compare>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
partial_sort_copy(_InputIter __first, _InputIter __last,
|
partial_sort_copy(_InputIter __first, _InputIter __last,
|
||||||
|
@ -2326,6 +2576,15 @@ __result, __binary_pred, _IterType());
|
||||||
return __result_real_last;
|
return __result_real_last;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param nth Another iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
nth_element(_RandomAccessIter __first,
|
nth_element(_RandomAccessIter __first,
|
||||||
|
@ -2352,6 +2611,16 @@ __result, __binary_pred, _IterType());
|
||||||
__insertion_sort(__first, __last);
|
__insertion_sort(__first, __last);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief TODO
|
||||||
|
* @param first An iterator.
|
||||||
|
* @param nth Another iterator.
|
||||||
|
* @param last Another iterator.
|
||||||
|
* @param comp A comparison functor.
|
||||||
|
* @return Nothing.
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
nth_element(_RandomAccessIter __first,
|
nth_element(_RandomAccessIter __first,
|
||||||
|
|
|
@ -124,7 +124,7 @@ namespace std
|
||||||
// NB: Start ostringstream buffers at 512 bytes. This is an
|
// NB: Start ostringstream buffers at 512 bytes. This is an
|
||||||
// experimental value (pronounced "arbitrary" in some of the
|
// experimental value (pronounced "arbitrary" in some of the
|
||||||
// hipper english-speaking countries), and can be changed to
|
// hipper english-speaking countries), and can be changed to
|
||||||
// suite particular needs.
|
// suit particular needs.
|
||||||
_M_buf_size_opt = 512;
|
_M_buf_size_opt = 512;
|
||||||
_M_mode = __mode;
|
_M_mode = __mode;
|
||||||
if (_M_mode & (ios_base::ate | ios_base::app))
|
if (_M_mode & (ios_base::ate | ios_base::app))
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory> // for auto_ptr
|
|
||||||
#ifdef _GLIBCPP_USE_WCHAR_T
|
#ifdef _GLIBCPP_USE_WCHAR_T
|
||||||
# include <cwctype> // for towupper, etc.
|
# include <cwctype> // for towupper, etc.
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue