aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@gcc.gnu.org>2009-04-16 02:04:15 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2009-04-16 02:04:15 +0000
commit9434ad538492ba9fb8b40f58b903f6241882d506 (patch)
tree27fda33f57052d84a422d0f8757bdc89820fd310
parent26113de4fcd7d569cc72274cd29dc36cfd560267 (diff)
downloadgcc-9434ad538492ba9fb8b40f58b903f6241882d506.zip
gcc-9434ad538492ba9fb8b40f58b903f6241882d506.tar.gz
gcc-9434ad538492ba9fb8b40f58b903f6241882d506.tar.bz2
html: Regenerate, remove un-needed.
2009-04-15 Benjamin Kosnik <bkoz@redhat.com> * doc/html: Regenerate, remove un-needed. From-SVN: r146145
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apas02.html91
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apas03.html585
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apas04.html227
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apas05.html857
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apd.html41
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apds02.html129
-rw-r--r--libstdc++-v3/doc/html/manual/bk01apds03.html32
-rw-r--r--libstdc++-v3/doc/html/manual/bk01ape.html393
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch01.html6131
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html40
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html330
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch02.html98
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html9
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html101
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html61
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html70
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html219
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html6
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch04.html40
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch05.html66
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch06.html45
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html76
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt03ch07.html16
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt04ch09.html9
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt04ch10.html39
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt04ch11.html346
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt04ch12.html4
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt06ch14.html422
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt06ch15.html74
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt07ch16.html37
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html16
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt07ch17.html84
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html105
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt07ch18.html60
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt10ch21.html19
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt10ch22.html26
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt10ch23.html18
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch24.html113
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch25.html57
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch26.html34
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch27.html49
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt11ch28.html8
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch29.html37
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch32.html394
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch33.html6
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch34.html38
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch35.html20
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch36.html17
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch37.html11
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch38.html48
-rw-r--r--libstdc++-v3/doc/html/manual/bk01pt12ch39.html71
-rw-r--r--libstdc++-v3/doc/html/manual/concurrency.html88
52 files changed, 0 insertions, 11913 deletions
diff --git a/libstdc++-v3/doc/html/manual/bk01apas02.html b/libstdc++-v3/doc/html/manual/bk01apas02.html
deleted file mode 100644
index 26f6eb7..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apas02.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<?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>Directory Layout and Source Conventions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="next" href="bk01apas03.html" title="Coding Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Directory Layout and Source Conventions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.organization"></a>Directory Layout and Source Conventions</h2></div></div></div><p>
- The unpacked source directory of libstdc++ contains the files
- needed to create the GNU C++ Library.
- </p><div class="literallayout"><p><br />
-It has subdirectories:<br />
-<br />
-  doc<br />
-    Files in HTML and text format that document usage, quirks of the<br />
-    implementation, and contributor checklists.<br />
-<br />
-  include<br />
-    All header files for the C++ library are within this directory,<br />
-    modulo specific runtime-related files that are in the libsupc++<br />
-    directory.<br />
-<br />
-    include/std<br />
-      Files meant to be found by #include &lt;name&gt; directives in<br />
-      standard-conforming user programs.  <br />
-<br />
-    include/c<br />
-      Headers intended to directly include standard C headers. <br />
-      [NB: this can be enabled via --enable-cheaders=c]<br />
-<br />
-    include/c_global <br />
-      Headers intended to include standard C headers in<br />
-      the global namespace, and put select names into the std::<br />
-      namespace.  [NB: this is the default, and is the same as<br />
-      --enable-cheaders=c_global]<br />
-<br />
-    include/c_std <br />
-      Headers intended to include standard C headers<br />
-      already in namespace std, and put select names into the std::<br />
-      namespace.  [NB: this is the same as --enable-cheaders=c_std]<br />
-<br />
-    include/bits<br />
-      Files included by standard headers and by other files in<br />
-      the bits directory. <br />
-<br />
-    include/backward<br />
-      Headers provided for backward compatibility, such as &lt;iostream.h&gt;.<br />
-      They are not used in this library.<br />
-<br />
-    include/ext<br />
-      Headers that define extensions to the standard library.  No<br />
-      standard header refers to any of them.<br />
-<br />
-  scripts<br />
-    Scripts that are used during the configure, build, make, or test<br />
-    process.<br />
-<br />
-  src<br />
-    Files that are used in constructing the library, but are not<br />
-    installed.<br />
-<br />
-  testsuites/[backward, demangle, ext, performance, thread, 17_* to 27_*]<br />
-    Test programs are here, and may be used to begin to exercise the <br />
-    library.  Support for "make check" and "make check-install" is<br />
-    complete, and runs through all the subdirectories here when this<br />
-    command is issued from the build directory.  Please note that<br />
-    "make check" requires DejaGNU 1.4 or later to be installed.  Please<br />
-    note that "make check-script" calls the script mkcheck, which<br />
-    requires bash, and which may need the paths to bash adjusted to<br />
-    work properly, as /bin/bash is assumed.<br />
-<br />
-Other subdirectories contain variant versions of certain files<br />
-that are meant to be copied or linked by the configure script.<br />
-Currently these are:<br />
-<br />
-  config/abi<br />
-  config/cpu<br />
-  config/io<br />
-  config/locale<br />
-  config/os<br />
-<br />
-In addition, a subdirectory holds the convenience library libsupc++.<br />
-<br />
-  libsupc++<br />
-    Contains the runtime library for C++, including exception<br />
-    handling and memory allocation and deallocation, RTTI, terminate<br />
-    handlers, etc.<br />
-<br />
-Note that glibc also has a bits/ subdirectory.  We will either<br />
-need to be careful not to collide with names in its bits/<br />
-directory; or rename bits to (e.g.) cppbits/.<br />
-<br />
-In files throughout the system, lines marked with an "XXX" indicate<br />
-a bug or incompletely-implemented feature.  Lines marked "XXX MT"<br />
-indicate a place that may require attention for multi-thread safety.<br />
-  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_contributing.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix A. Contributing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Coding Style</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas03.html b/libstdc++-v3/doc/html/manual/bk01apas03.html
deleted file mode 100644
index 947c964..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apas03.html
+++ /dev/null
@@ -1,585 +0,0 @@
-<?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>Coding Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas02.html" title="Directory Layout and Source Conventions" /><link rel="next" href="bk01apas04.html" title="Documentation Style" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Coding Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas02.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas04.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.coding_style"></a>Coding Style</h2></div></div></div><p>
- </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="coding_style.bad_identifiers"></a>Bad Identifiers</h3></div></div></div><p>
- Identifiers that conflict and should be avoided.
- </p><div class="literallayout"><p><br />
-      This is the list of names “<span class="quote">reserved to the<br />
-      implementation</span>” that have been claimed by certain<br />
-      compilers and system headers of interest, and should not be used<br />
-      in the library. It will grow, of course.  We generally are<br />
-      interested in names that are not all-caps, except for those like<br />
-      "_T"<br />
-<br />
-      For Solaris:<br />
-      _B<br />
-      _C<br />
-      _L<br />
-      _N<br />
-      _P<br />
-      _S<br />
-      _U<br />
-      _X<br />
-      _E1<br />
-      ..<br />
-      _E24<br />
-<br />
-      Irix adds:<br />
-      _A<br />
-      _G<br />
-<br />
-      MS adds:<br />
-      _T<br />
-<br />
-      BSD adds:<br />
-      __used<br />
-      __unused<br />
-      __inline<br />
-      _Complex<br />
-      __istype<br />
-      __maskrune<br />
-      __tolower<br />
-      __toupper<br />
-      __wchar_t<br />
-      __wint_t<br />
-      _res<br />
-      _res_ext<br />
-      __tg_*<br />
-<br />
-      SPU adds:<br />
-      __ea<br />
-<br />
-      For GCC:<br />
-<br />
-      [Note that this list is out of date. It applies to the old<br />
-      name-mangling; in G++ 3.0 and higher a different name-mangling is<br />
-      used. In addition, many of the bugs relating to G++ interpreting<br />
-      these names as operators have been fixed.]<br />
-<br />
-      The full set of __* identifiers (combined from gcc/cp/lex.c and<br />
-      gcc/cplus-dem.c) that are either old or new, but are definitely <br />
-      recognized by the demangler, is:<br />
-<br />
-      __aa<br />
-      __aad<br />
-      __ad<br />
-      __addr<br />
-      __adv<br />
-      __aer<br />
-      __als<br />
-      __alshift<br />
-      __amd<br />
-      __ami<br />
-      __aml<br />
-      __amu<br />
-      __aor<br />
-      __apl<br />
-      __array<br />
-      __ars<br />
-      __arshift<br />
-      __as<br />
-      __bit_and<br />
-      __bit_ior<br />
-      __bit_not<br />
-      __bit_xor<br />
-      __call<br />
-      __cl<br />
-      __cm<br />
-      __cn<br />
-      __co<br />
-      __component<br />
-      __compound<br />
-      __cond<br />
-      __convert<br />
-      __delete<br />
-      __dl<br />
-      __dv<br />
-      __eq<br />
-      __er<br />
-      __ge<br />
-      __gt<br />
-      __indirect<br />
-      __le<br />
-      __ls<br />
-      __lt<br />
-      __max<br />
-      __md<br />
-      __method_call<br />
-      __mi<br />
-      __min<br />
-      __minus<br />
-      __ml<br />
-      __mm<br />
-      __mn<br />
-      __mult<br />
-      __mx<br />
-      __ne<br />
-      __negate<br />
-      __new<br />
-      __nop<br />
-      __nt<br />
-      __nw<br />
-      __oo<br />
-      __op<br />
-      __or<br />
-      __pl<br />
-      __plus<br />
-      __postdecrement<br />
-      __postincrement<br />
-      __pp<br />
-      __pt<br />
-      __rf<br />
-      __rm<br />
-      __rs<br />
-      __sz<br />
-      __trunc_div<br />
-      __trunc_mod<br />
-      __truth_andif<br />
-      __truth_not<br />
-      __truth_orif<br />
-      __vc<br />
-      __vd<br />
-      __vn<br />
-<br />
-      SGI badnames:<br />
-      __builtin_alloca<br />
-      __builtin_fsqrt<br />
-      __builtin_sqrt<br />
-      __builtin_fabs<br />
-      __builtin_dabs<br />
-      __builtin_cast_f2i<br />
-      __builtin_cast_i2f<br />
-      __builtin_cast_d2ll<br />
-      __builtin_cast_ll2d<br />
-      __builtin_copy_dhi2i<br />
-      __builtin_copy_i2dhi<br />
-      __builtin_copy_dlo2i<br />
-      __builtin_copy_i2dlo<br />
-      __add_and_fetch<br />
-      __sub_and_fetch<br />
-      __or_and_fetch<br />
-      __xor_and_fetch<br />
-      __and_and_fetch<br />
-      __nand_and_fetch<br />
-      __mpy_and_fetch<br />
-      __min_and_fetch<br />
-      __max_and_fetch<br />
-      __fetch_and_add<br />
-      __fetch_and_sub<br />
-      __fetch_and_or<br />
-      __fetch_and_xor<br />
-      __fetch_and_and<br />
-      __fetch_and_nand<br />
-      __fetch_and_mpy<br />
-      __fetch_and_min<br />
-      __fetch_and_max<br />
-      __lock_test_and_set<br />
-      __lock_release<br />
-      __lock_acquire<br />
-      __compare_and_swap<br />
-      __synchronize<br />
-      __high_multiply<br />
-      __unix<br />
-      __sgi<br />
-      __linux__<br />
-      __i386__<br />
-      __i486__<br />
-      __cplusplus<br />
-      __embedded_cplusplus<br />
-      // long double conversion members mangled as __opr<br />
-      // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html<br />
-      _opr<br />
-    </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="coding_style.example"></a>By Example</h3></div></div></div><div class="literallayout"><p><br />
-      This library is written to appropriate C++ coding standards. As such,<br />
-      it is intended to precede the recommendations of the GNU Coding<br />
-      Standard, which can be referenced in full here:<br />
-<br />
-      http://www.gnu.org/prep/standards/standards.html#Formatting<br />
-<br />
-      The rest of this is also interesting reading, but skip the "Design<br />
-      Advice" part.<br />
-<br />
-      The GCC coding conventions are here, and are also useful:<br />
-      http://gcc.gnu.org/codingconventions.html<br />
-<br />
-      In addition, because it doesn't seem to be stated explicitly anywhere<br />
-      else, there is an 80 column source limit.<br />
-<br />
-      ChangeLog entries for member functions should use the<br />
-      classname::member function name syntax as follows:<br />
-<br />
-      1999-04-15  Dennis Ritchie  &lt;dr@att.com&gt;<br />
-<br />
-      * src/basic_file.cc (__basic_file::open): Fix thinko in<br />
-      _G_HAVE_IO_FILE_OPEN bits.<br />
-<br />
-      Notable areas of divergence from what may be previous local practice<br />
-      (particularly for GNU C) include:<br />
-<br />
-      01. Pointers and references<br />
-      char* p = "flop";<br />
-      char&amp; c = *p;<br />
-      -NOT-<br />
-      char *p = "flop";  // wrong<br />
-      char &amp;c = *p;      // wrong<br />
-      <br />
-      Reason: In C++, definitions are mixed with executable code. Here,       <br />
-      p is being initialized, not *p. This is near-universal<br />
-      practice among C++ programmers; it is normal for C hackers<br />
-      to switch spontaneously as they gain experience.<br />
-<br />
-      02. Operator names and parentheses<br />
-      operator==(type)<br />
-      -NOT-<br />
-      operator == (type)  // wrong<br />
-      <br />
-      Reason: The == is part of the function name. Separating<br />
-      it makes the declaration look like an expression. <br />
-<br />
-      03. Function names and parentheses<br />
-      void mangle()<br />
-      -NOT-<br />
-      void mangle ()  // wrong<br />
-<br />
-      Reason: no space before parentheses (except after a control-flow<br />
-      keyword) is near-universal practice for C++. It identifies the<br />
-      parentheses as the function-call operator or declarator, as <br />
-      opposed to an expression or other overloaded use of parentheses.<br />
-<br />
-      04. Template function indentation<br />
-      template&lt;typename T&gt;<br />
-      void <br />
-      template_function(args)<br />
-      { }<br />
-      -NOT-<br />
-      template&lt;class T&gt;<br />
-      void template_function(args) {};<br />
-      <br />
-      Reason: In class definitions, without indentation whitespace is<br />
-      needed both above and below the declaration to distinguish<br />
-      it visually from other members. (Also, re: "typename"<br />
-      rather than "class".)  T often could be int, which is <br />
-      not a class. ("class", here, is an anachronism.)<br />
-<br />
-      05. Template class indentation<br />
-      template&lt;typename _CharT, typename _Traits&gt;<br />
-      class basic_ios : public ios_base<br />
-      {<br />
-      public:<br />
-      // Types:<br />
-      };<br />
-      -NOT-<br />
-      template&lt;class _CharT, class _Traits&gt;<br />
-      class basic_ios : public ios_base<br />
-      {<br />
-      public:<br />
-      // Types:<br />
-      };<br />
-      -NOT-<br />
-      template&lt;class _CharT, class _Traits&gt;<br />
-      class basic_ios : public ios_base<br />
-      {<br />
-      public:<br />
-      // Types:<br />
-      };<br />
-<br />
-      06. Enumerators<br />
-      enum<br />
-      {<br />
-      space = _ISspace,<br />
-      print = _ISprint,<br />
-      cntrl = _IScntrl<br />
-      };<br />
-      -NOT-<br />
-      enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl };<br />
-<br />
-      07. Member initialization lists<br />
-      All one line, separate from class name.<br />
-<br />
-      gribble::gribble() <br />
-      : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br />
-      { }<br />
-      -NOT-<br />
-      gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br />
-      { }<br />
-<br />
-      08. Try/Catch blocks<br />
-      try <br />
-      {<br />
-      //<br />
-      }   <br />
-      catch (...)<br />
-      {<br />
-      //<br />
-      }   <br />
-      -NOT-<br />
-      try {<br />
-      // <br />
-      } catch(...) { <br />
-      //<br />
-      }<br />
-<br />
-      09. Member functions declarations and definitions<br />
-      Keywords such as extern, static, export, explicit, inline, etc<br />
-      go on the line above the function name. Thus<br />
-<br />
-      virtual int   <br />
-      foo()<br />
-      -NOT-<br />
-      virtual int foo()<br />
-<br />
-      Reason: GNU coding conventions dictate return types for functions<br />
-      are on a separate line than the function name and parameter list<br />
-      for definitions. For C++, where we have member functions that can<br />
-      be either inline definitions or declarations, keeping to this<br />
-      standard allows all member function names for a given class to be<br />
-      aligned to the same margin, increasing readability.<br />
-<br />
-<br />
-      10. Invocation of member functions with "this-&gt;"<br />
-      For non-uglified names, use this-&gt;name to call the function.<br />
-<br />
-      this-&gt;sync()<br />
-      -NOT-<br />
-      sync()<br />
-<br />
-      Reason: Koenig lookup.<br />
-<br />
-      11. Namespaces<br />
-      namespace std<br />
-      {<br />
-      blah blah blah;<br />
-      } // namespace std<br />
-<br />
-      -NOT-<br />
-<br />
-      namespace std {<br />
-      blah blah blah;<br />
-      } // namespace std<br />
-<br />
-      12. Spacing under protected and private in class declarations:<br />
-      space above, none below<br />
-      i.e.<br />
-<br />
-      public:<br />
-      int foo;<br />
-<br />
-      -NOT-<br />
-      public:<br />
-      <br />
-      int foo;<br />
-<br />
-      13. Spacing WRT return statements.<br />
-      no extra spacing before returns, no parenthesis<br />
-      i.e.<br />
-<br />
-      }<br />
-      return __ret;<br />
-<br />
-      -NOT-<br />
-      }<br />
-<br />
-      return __ret;<br />
-<br />
-      -NOT-<br />
-<br />
-      }<br />
-      return (__ret);<br />
-<br />
-<br />
-      14. Location of global variables.<br />
-      All global variables of class type, whether in the "user visible"<br />
-      space (e.g., cin) or the implementation namespace, must be defined<br />
-      as a character array with the appropriate alignment and then later<br />
-      re-initialized to the correct value.<br />
-<br />
-      This is due to startup issues on certain platforms, such as AIX.<br />
-      For more explanation and examples, see src/globals.cc. All such<br />
-      variables should be contained in that file, for simplicity.<br />
-<br />
-      15. Exception abstractions<br />
-      Use the exception abstractions found in functexcept.h, which allow<br />
-      C++ programmers to use this library with -fno-exceptions. (Even if<br />
-      that is rarely advisable, it's a necessary evil for backwards<br />
-      compatibility.)<br />
-<br />
-      16. Exception error messages<br />
-      All start with the name of the function where the exception is<br />
-      thrown, and then (optional) descriptive text is added. Example:<br />
-<br />
-      __throw_logic_error(__N("basic_string::_S_construct NULL not valid"));<br />
-<br />
-      Reason: The verbose terminate handler prints out exception::what(),<br />
-      as well as the typeinfo for the thrown exception. As this is the<br />
-      default terminate handler, by putting location info into the<br />
-      exception string, a very useful error message is printed out for<br />
-      uncaught exceptions. So useful, in fact, that non-programmers can<br />
-      give useful error messages, and programmers can intelligently<br />
-      speculate what went wrong without even using a debugger.<br />
-<br />
-      17. The doxygen style guide to comments is a separate document,<br />
-      see index.<br />
-<br />
-      The library currently has a mixture of GNU-C and modern C++ coding<br />
-      styles. The GNU C usages will be combed out gradually.<br />
-<br />
-      Name patterns:<br />
-<br />
-      For nonstandard names appearing in Standard headers, we are constrained <br />
-      to use names that begin with underscores. This is called "uglification".<br />
-      The convention is:<br />
-<br />
-      Local and argument names:  __[a-z].*<br />
-<br />
-      Examples:  __count  __ix  __s1  <br />
-<br />
-      Type names and template formal-argument names: _[A-Z][^_].*<br />
-<br />
-      Examples:  _Helper  _CharT  _N <br />
-<br />
-      Member data and function names: _M_.*<br />
-<br />
-      Examples:  _M_num_elements  _M_initialize ()<br />
-<br />
-      Static data members, constants, and enumerations: _S_.*<br />
-<br />
-      Examples: _S_max_elements  _S_default_value<br />
-<br />
-      Don't use names in the same scope that differ only in the prefix, <br />
-      e.g. _S_top and _M_top. See BADNAMES for a list of forbidden names.<br />
-      (The most tempting of these seem to be and "_T" and "__sz".)<br />
-<br />
-      Names must never have "__" internally; it would confuse name<br />
-      unmanglers on some targets. Also, never use "__[0-9]", same reason.<br />
-<br />
-      --------------------------<br />
-<br />
-      [BY EXAMPLE]<br />
-      <br />
-      #ifndef  _HEADER_<br />
-      #define  _HEADER_ 1<br />
-<br />
-      namespace std<br />
-      {<br />
-      class gribble<br />
-      {<br />
-      public:<br />
-      gribble() throw();<br />
-<br />
-      gribble(const gribble&amp;);<br />
-<br />
-      explicit <br />
-      gribble(int __howmany);<br />
-<br />
-      gribble&amp; <br />
-      operator=(const gribble&amp;);<br />
-<br />
-      virtual <br />
-      ~gribble() throw ();<br />
-<br />
-      // Start with a capital letter, end with a period.<br />
-      inline void  <br />
-      public_member(const char* __arg) const;<br />
-<br />
-      // In-class function definitions should be restricted to one-liners.<br />
-      int <br />
-      one_line() { return 0 }<br />
-<br />
-      int <br />
-      two_lines(const char* arg) <br />
-      { return strchr(arg, 'a'); }<br />
-<br />
-      inline int <br />
-      three_lines();  // inline, but defined below.<br />
-<br />
-      // Note indentation.<br />
-      template&lt;typename _Formal_argument&gt;<br />
-      void <br />
-      public_template() const throw();<br />
-<br />
-      template&lt;typename _Iterator&gt;<br />
-      void <br />
-      other_template();<br />
-<br />
-      private:<br />
-      class _Helper;<br />
-<br />
-      int _M_private_data;<br />
-      int _M_more_stuff;<br />
-      _Helper* _M_helper;<br />
-      int _M_private_function();<br />
-<br />
-      enum _Enum <br />
-      { <br />
-      _S_one, <br />
-      _S_two <br />
-      };<br />
-<br />
-      static void <br />
-      _S_initialize_library();<br />
-      };<br />
-<br />
-      // More-or-less-standard language features described by lack, not presence.<br />
-      # ifndef _G_NO_LONGLONG<br />
-      extern long long _G_global_with_a_good_long_name;  // avoid globals!<br />
-      # endif<br />
-<br />
-      // Avoid in-class inline definitions, define separately;<br />
-      // likewise for member class definitions:<br />
-      inline int<br />
-      gribble::public_member() const<br />
-      { int __local = 0; return __local; }<br />
-<br />
-      class gribble::_Helper<br />
-      {<br />
-      int _M_stuff;<br />
-<br />
-      friend class gribble;<br />
-      };<br />
-      }<br />
-<br />
-      // Names beginning with "__": only for arguments and<br />
-      //   local variables; never use "__" in a type name, or<br />
-      //   within any name; never use "__[0-9]".<br />
-<br />
-      #endif /* _HEADER_ */<br />
-<br />
-<br />
-      namespace std <br />
-      {<br />
-      template&lt;typename T&gt;  // notice: "typename", not "class", no space<br />
-      long_return_value_type&lt;with_many, args&gt;  <br />
-      function_name(char* pointer,               // "char *pointer" is wrong.<br />
-      char* argument, <br />
-      const Reference&amp; ref)<br />
-      {<br />
-      // int a_local;  /* wrong; see below. */<br />
-      if (test) <br />
-      { <br />
-      nested code <br />
-      }<br />
-      <br />
-      int a_local = 0;  // declare variable at first use.<br />
-<br />
-      //  char a, b, *p;   /* wrong */<br />
-      char a = 'a';<br />
-      char b = a + 1;<br />
-      char* c = "abc";  // each variable goes on its own line, always.<br />
-<br />
-      // except maybe here...<br />
-      for (unsigned i = 0, mask = 1; mask; ++i, mask &lt;&lt;= 1) {<br />
-      // ...<br />
-      }<br />
-      }<br />
-      <br />
-      gribble::gribble()<br />
-      : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br />
-      { }<br />
-<br />
-      inline int <br />
-      gribble::three_lines()<br />
-      {<br />
-      // doesn't fit in one line.<br />
-      }<br />
-      } // namespace std<br />
-    </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Directory Layout and Source Conventions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Documentation Style</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas04.html b/libstdc++-v3/doc/html/manual/bk01apas04.html
deleted file mode 100644
index 09a6f97..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apas04.html
+++ /dev/null
@@ -1,227 +0,0 @@
-<?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>Documentation Style</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas03.html" title="Coding Style" /><link rel="next" href="bk01apas05.html" title="Design Notes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Documentation Style</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas03.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="bk01apas05.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.doc_style"></a>Documentation Style</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.doxygen"></a>Doxygen</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><p>
- Prerequisite tools are Bash 2.x,
- <a class="ulink" href="http://www.doxygen.org/" target="_top">Doxygen</a>, and
- the <a class="ulink" href="http://www.gnu.org/software/coreutils/" target="_top">GNU
- coreutils</a>. (GNU versions of find, xargs, and possibly
- sed and grep are used, just because the GNU versions make
- things very easy.)
- </p><p>
- To generate the pretty pictures and hierarchy
- graphs, the
- <a class="ulink" href="http://www.research.att.com/sw/tools/graphviz/download.html" target="_top">Graphviz</a>
- package will need to be installed.
- </p></div><div class="sect3" lang="en" xml:lang="en"><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, and the man pages.
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-html-doxygen</code></strong></pre><p>
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-xml-doxygen</code></strong></pre><p>
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-man-doxygen</code></strong></pre><p>
- </p><p>
- Careful observers will see that the Makefile rules simply call
- a script from the source tree, <code class="filename">run_doxygen</code>, which
- does the actual work of running Doxygen and then (most
- importantly) massaging the output files. If for some reason
- you prefer to not go through the Makefile, you can call this
- script directly. (Start by passing <code class="literal">--help</code>.)
- </p><p>
- If you wish to tweak the Doxygen settings, do so by editing
- <code class="filename">doc/doxygen/user.cfg.in</code>. Notes to fellow
- library hackers are written in triple-# comments.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.markup"></a>Markup</h4></div></div></div><p>
- In general, libstdc++ files should be formatted according to
- the rules found in the
- <a class="link" href="bk01apas03.html" title="Coding Style">Coding Standard</a>. Before
- any doxygen-specific formatting tweaks are made, please try to
- make sure that the initial formatting is sound.
- </p><p>
- Adding Doxygen markup to a file (informally called
- “<span class="quote">doxygenating</span>”) is very simple. The Doxygen manual can be
- found
- <a class="ulink" href="http://www.stack.nl/~dimitri/doxygen/download.html#latestman" target="_top">here</a>.
- We try to use a very-recent version of Doxygen.
- </p><p>
- For classes, use
- <code class="classname">deque</code>/<code class="classname">vector</code>/<code class="classname">list</code>
- and <code class="classname">std::pair</code> as examples. For
- functions, see their member functions, and the free functions
- in <code class="filename">stl_algobase.h</code>. Member functions of
- other container-like types should read similarly to these
- member functions.
- </p><p>
- These points accompany the first list in section 3.1 of the
- Doxygen manual:
- </p><div class="orderedlist"><ol type="1"><li><p>Use the Javadoc style...</p></li><li><p>
- ...not the Qt style. The intermediate *'s are preferred.
- </p></li><li><p>
- Use the triple-slash style only for one-line comments (the
- “<span class="quote">brief</span>” mode). Very recent versions of Doxygen permit
- full-mode comments in triple-slash blocks, but the
- formatting still comes out wonky.
- </p></li><li><p>
- This is disgusting. Don't do this.
- </p></li></ol></div><p>
- Use the @-style of commands, not the !-style. Please be
- careful about whitespace in your markup comments. Most of the
- time it doesn't matter; doxygen absorbs most whitespace, and
- both HTML and *roff are agnostic about whitespace. However,
- in &lt;pre&gt; blocks and @code/@endcode sections, spacing can
- have “<span class="quote">interesting</span>” effects.
- </p><p>
- Use either kind of grouping, as
- appropriate. <code class="filename">doxygroups.cc</code> exists for this
- purpose. See <code class="filename">stl_iterator.h</code> for a good example
- of the “<span class="quote">other</span>” kind of grouping.
- </p><p>
- Please use markup tags like @p and @a when referring to things
- such as the names of function parameters. Use @e for emphasis
- when necessary. Use @c to refer to other standard names.
- (Examples of all these abound in the present code.)
- </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.docbook"></a>Docbook</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><p>
- Editing the DocBook sources requires an XML editor. Many
- exist: some notable options
- include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>,
- or <span class="application">Conglomerate</span>.
- </p><p>
- Some editors support special “<span class="quote">XML Validation</span>”
- modes that can validate the file as it is
- produced. Recommended is the <span class="command"><strong>nXML Mode</strong></span>
- for <span class="command"><strong>emacs</strong></span>.
- </p><p>
- Besides an editor, additional DocBook files and XML tools are
- also required.
- </p><p>
- Access to the DocBook stylesheets and DTD is required. The
- stylesheets are usually packaged by vendor, in something
- like <code class="filename">docbook-style-xsl</code>. To exactly match
- generated output, please use a version of the stylesheets
- equivalent
- to <code class="filename">docbook-style-xsl-1.74.0-5</code>. The
- installation directory for this package corresponds to
- the <code class="literal">XSL_STYLE_DIR</code>
- in <code class="filename">doc/Makefile.am</code> and defaults
- to <code class="filename">/usr/share/sgml/docbook/xsl-stylesheets</code>.
- </p><p>
- For processing XML, an XML processor and some style
- sheets are necessary. Defaults are <span class="command"><strong>xsltproc</strong></span>
- provided by <code class="filename">libxslt</code>.
- </p><p>
- For validating the XML document, you'll need
- something like <span class="command"><strong>xmllint</strong></span> and access to the
- DocBook DTD. These are provided
- by a vendor package like <code class="filename">lixml2</code>.
- </p><p>
- For PDF output, something that transforms valid XML to PDF is
- required. Possible solutions include <span class="command"><strong>xmlto</strong></span>,
- <a class="ulink" href="http://xmlgraphics.apache.org/fop/" target="_top">Apache
- FOP</a>, or <span class="command"><strong>prince</strong></span>. Other options are
- listed on the DocBook web <a class="ulink" href="http://wiki.docbook.org/topic/DocBookPublishingTools" target="_top">pages</a>. Please
- consult the <code class="email">&lt;<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>&gt;</code> list when
- preparing printed manuals for current best practice and suggestions.
- </p><p>
- Make sure that the XML documentation and markup is valid for
- any change. This can be done easily, with the validation rules
- in the <code class="filename">Makefile</code>, which is equivalent to doing:
- </p><pre class="screen">
- <strong class="userinput"><code>
-xmllint --noout --valid <code class="filename">xml/index.xml</code>
- </code></strong>
- </pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.rules"></a>Generating the DocBook Files</h4></div></div></div><p>
- The following Makefile rules generate (in order): an HTML
- version of all the documentation, a PDF version of the same, a
- single XML document, and the result of validating the entire XML
- document.
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-html</code></strong></pre><p>
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-pdf</code></strong></pre><p>
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single</code></strong></pre><p>
- </p><p>
- </p><pre class="screen"><strong class="userinput"><code>make doc-xml-validate</code></strong></pre><p>
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.examples"></a>File Organization and Basics</h4></div></div></div><div class="literallayout"><p><br />
-      <span class="emphasis"><em>Which files are important</em></span><br />
-<br />
-      All Docbook files are in the directory<br />
-      libstdc++-v3/doc/xml<br />
-<br />
-      Inside this directory, the files of importance:<br />
-      spine.xml   - index to documentation set<br />
-      manual/spine.xml  - index to manual<br />
-      manual/*.xml   - individual chapters and sections of the manual<br />
-      faq.xml   - index to FAQ<br />
-      api.xml   - index to source level / API <br />
-<br />
-      All *.txml files are template xml files, i.e., otherwise empty files with<br />
-      the correct structure, suitable for filling in with new information.<br />
-<br />
-      <span class="emphasis"><em>Canonical Writing Style</em></span><br />
-<br />
-      class template<br />
-      function template<br />
-      member function template<br />
-      (via C++ Templates, Vandevoorde)<br />
-<br />
-      class in namespace std: allocator, not std::allocator<br />
-<br />
-      header file: iostream, not &lt;iostream&gt;<br />
-<br />
-<br />
-      <span class="emphasis"><em>General structure</em></span><br />
-<br />
-      &lt;set&gt;<br />
-      &lt;book&gt;<br />
-      &lt;/book&gt;<br />
-<br />
-      &lt;book&gt;<br />
-      &lt;chapter&gt;<br />
-      &lt;/chapter&gt;<br />
-      &lt;/book&gt;<br />
-<br />
-      &lt;book&gt; <br />
-      &lt;part&gt;<br />
-      &lt;chapter&gt;<br />
-      &lt;section&gt;<br />
-      &lt;/section&gt;<br />
-<br />
-      &lt;sect1&gt;<br />
-      &lt;/sect1&gt;<br />
-<br />
-      &lt;sect1&gt;<br />
-      &lt;sect2&gt;<br />
-      &lt;/sect2&gt;<br />
-      &lt;/sect1&gt;<br />
-      &lt;/chapter&gt;<br />
-<br />
-      &lt;chapter&gt;<br />
-      &lt;/chapter&gt;<br />
-      &lt;/part&gt;  <br />
-      &lt;/book&gt;<br />
-<br />
-      &lt;/set&gt;<br />
-    </p></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.markup"></a>Markup By Example</h4></div></div></div><p>
-Complete details on Docbook markup can be found in the DocBook Element
-Reference, <a class="ulink" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>. An
-incomplete reference for HTML to Docbook conversion is detailed in the
-table below.
-</p><div class="table"><a id="id552441"></a><p class="title"><b>Table A.1. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">XML</th></tr></thead><tbody><tr><td align="left">&lt;p&gt;</td><td align="left">&lt;para&gt;</td></tr><tr><td align="left">&lt;pre&gt;</td><td align="left">&lt;computeroutput&gt;, &lt;programlisting&gt;,
- &lt;literallayout&gt;</td></tr><tr><td align="left">&lt;ul&gt;</td><td align="left">&lt;itemizedlist&gt;</td></tr><tr><td align="left">&lt;ol&gt;</td><td align="left">&lt;orderedlist&gt;</td></tr><tr><td align="left">&lt;il&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;dl&gt;</td><td align="left">&lt;variablelist&gt;</td></tr><tr><td align="left">&lt;dt&gt;</td><td align="left">&lt;term&gt;</td></tr><tr><td align="left">&lt;dd&gt;</td><td align="left">&lt;listitem&gt;</td></tr><tr><td align="left">&lt;a href=""&gt;</td><td align="left">&lt;ulink url=""&gt;</td></tr><tr><td align="left">&lt;code&gt;</td><td align="left">&lt;literal&gt;, &lt;programlisting&gt;</td></tr><tr><td align="left">&lt;strong&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">&lt;em&gt;</td><td align="left">&lt;emphasis&gt;</td></tr><tr><td align="left">"</td><td align="left">&lt;quote&gt;</td></tr></tbody></table></div></div><br class="table-break" /><p>
- And examples of detailed markup for which there are no real HTML
- equivalents are listed in the table below.
-</p><div class="table"><a id="id554436"></a><p class="title"><b>Table A.2. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left">&lt;structname&gt;</td><td align="left">&lt;structname&gt;char_traits&lt;/structname&gt;</td></tr><tr><td align="left">&lt;classname&gt;</td><td align="left">&lt;classname&gt;string&lt;/classname&gt;</td></tr><tr><td align="left">&lt;function&gt;</td><td align="left">
- <p>&lt;function&gt;clear()&lt;/function&gt;</p>
- <p>&lt;function&gt;fs.clear()&lt;/function&gt;</p>
- </td></tr><tr><td align="left">&lt;type&gt;</td><td align="left">&lt;type&gt;long long&lt;/type&gt;</td></tr><tr><td align="left">&lt;varname&gt;</td><td align="left">&lt;varname&gt;fs&lt;/varname&gt;</td></tr><tr><td align="left">&lt;literal&gt;</td><td align="left">
- <p>&lt;literal&gt;-Weffc++&lt;/literal&gt;</p>
- <p>&lt;literal&gt;rel_ops&lt;/literal&gt;</p>
- </td></tr><tr><td align="left">&lt;constant&gt;</td><td align="left">
- <p>&lt;constant&gt;_GNU_SOURCE&lt;/constant&gt;</p>
- <p>&lt;constant&gt;3.0&lt;/constant&gt;</p>
- </td></tr><tr><td align="left">&lt;command&gt;</td><td align="left">&lt;command&gt;g++&lt;/command&gt;</td></tr><tr><td align="left">&lt;errortext&gt;</td><td align="left">&lt;errortext&gt;In instantiation of&lt;/errortext&gt;</td></tr><tr><td align="left">&lt;filename&gt;</td><td align="left">
- <p>&lt;filename class="headerfile"&gt;ctype.h&lt;/filename&gt;</p>
- <p>&lt;filename class="directory"&gt;/home/gcc/build&lt;/filename&gt;</p>
- </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apas05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Coding Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design Notes</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apas05.html b/libstdc++-v3/doc/html/manual/bk01apas05.html
deleted file mode 100644
index 635b39c..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apas05.html
+++ /dev/null
@@ -1,857 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="appendix_contributing.html" title="Appendix A. Contributing" /><link rel="prev" href="bk01apas04.html" title="Documentation Style" /><link rel="next" href="appendix_porting.html" title="Appendix B. Porting and Maintenance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design Notes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apas04.html">Prev</a> </td><th width="60%" align="center">Appendix A. Contributing</th><td width="20%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.design_notes"></a>Design Notes</h2></div></div></div><p>
- </p><div class="literallayout"><p><br />
-<br />
-    The Library<br />
-    -----------<br />
-<br />
-    This paper is 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 />
-    extensions and "implementation-defined" features;<br />
-<br />
-    - Plans for required but unimplemented library features and<br />
-    optimizations to them.<br />
-<br />
-    Overhead<br />
-    --------<br />
-<br />
-    The standard defines a large library, much larger than the standard<br />
-    C library. A naive implementation would suffer substantial overhead<br />
-    in compile time, executable size, and speed, rendering it unusable<br />
-    in many (particularly embedded) applications. The alternative demands<br />
-    care in construction, and some compiler support, but there is no<br />
-    need for library subsets.<br />
-<br />
-    What are the sources of this overhead?  There are four main causes:<br />
-<br />
-    - The library is specified almost entirely as templates, which<br />
-    with current compilers must be included in-line, resulting in<br />
-    very slow builds as tens or hundreds of thousands of lines<br />
-    of function definitions are read for each user source file.<br />
-    Indeed, the entire SGI STL, as well as the dos Reis valarray,<br />
-    are provided purely as header files, largely for simplicity in<br />
-    porting. Iostream/locale is (or will be) as large again.<br />
-<br />
-    - The library is very flexible, specifying a multitude of hooks<br />
-    where users can insert their own code in place of defaults.<br />
-    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 />
-    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 />
-    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 />
-    current compilers, generated anew for each instantiation, rather<br />
-    than being shared with other instantiations. Third, some of the<br />
-    flexibility mentioned above comes from virtual functions (both in<br />
-    regular classes and template classes) which current linkers add<br />
-    to the executable file even when they manifestly cannot be called.<br />
-<br />
-    - The library is specified to use a language feature, exceptions,<br />
-    which in the current gcc compiler ABI imposes a run time and<br />
-    code space cost to handle the possibility of exceptions even when<br />
-    they are not used. Under the new ABI (accessed with -fnew-abi),<br />
-    there is a space overhead and a small reduction in code efficiency<br />
-    resulting from lost optimization opportunities associated with<br />
-    non-local branches associated with exceptions.<br />
-<br />
-    What can be done to eliminate this overhead?  A variety of coding<br />
-    techniques, and compiler, linker and library improvements and<br />
-    extensions may be used, as covered below. Most are not difficult,<br />
-    and some are already implemented in varying degrees.<br />
-<br />
-    Overhead: Compilation Time<br />
-    --------------------------<br />
-<br />
-    Providing "ready-instantiated" template code in object code archives<br />
-    allows us to avoid generating and optimizing template instantiations<br />
-    in each compilation unit which uses them. However, the number of such<br />
-    instantiations that are useful to provide is limited, and anyway this<br />
-    is not enough, by itself, to minimize compilation time. In particular,<br />
-    it does not reduce time spent parsing conforming headers.<br />
-<br />
-    Quicker header parsing will depend on library extensions and compiler<br />
-    improvements.  One approach is some variation on the techniques<br />
-    previously marketed as "pre-compiled headers", now standardized as<br />
-    support for the "export" keyword. "Exported" template definitions<br />
-    can be placed (once) in a "repository" -- really just a library, but<br />
-    of template definitions rather than object code -- to be drawn upon<br />
-    at link time when an instantiation is needed, rather than placed in<br />
-    header files to be parsed along with every compilation unit.<br />
-<br />
-    Until "export" is implemented we can put some of the lengthy template<br />
-    definitions in #if guards or alternative headers so that users can skip<br />
-    over the full definitions when they need only the ready-instantiated<br />
-    specializations.<br />
-<br />
-    To be precise, this means that certain headers which define<br />
-    templates which users normally use only for certain arguments<br />
-    can be instrumented to avoid exposing the template definitions<br />
-    to the compiler unless a macro is defined. For example, in<br />
-    &lt;string&gt;, we might have:<br />
-<br />
-    template &lt;class _CharT, ... &gt; class basic_string {<br />
-    ... // member declarations<br />
-    };<br />
-    ... // operator declarations<br />
-<br />
-    #ifdef _STRICT_ISO_<br />
-    # if _G_NO_TEMPLATE_EXPORT<br />
-    #   include &lt;bits/std_locale.h&gt;  // headers needed by definitions<br />
-    #   ...<br />
-    #   include &lt;bits/string.tcc&gt;  // member and global template definitions.<br />
-    # endif<br />
-    #endif<br />
-<br />
-    Users who compile without specifying a strict-ISO-conforming flag<br />
-    would not see many of the template definitions they now see, and rely<br />
-    instead on ready-instantiated specializations in the library. This<br />
-    technique would be useful for the following substantial components:<br />
-    string, locale/iostreams, valarray. It would *not* be useful or<br />
-    usable with the following: containers, algorithms, iterators,<br />
-    allocator. Since these constitute a large (though decreasing)<br />
-    fraction of the library, the benefit the technique offers is<br />
-    limited.<br />
-<br />
-    The language specifies the semantics of the "export" keyword, but<br />
-    the gcc compiler does not yet support it. When it does, problems<br />
-    with large template inclusions can largely disappear, given some<br />
-    minor library reorganization, along with the need for the apparatus<br />
-    described above.<br />
-<br />
-    Overhead: Flexibility Cost<br />
-    --------------------------<br />
-<br />
-    The library offers many places where users can specify operations<br />
-    to be performed by the library in place of defaults. Sometimes<br />
-    this seems to require that the library use a more-roundabout, and<br />
-    possibly slower, way to accomplish the default requirements than<br />
-    would be used otherwise.<br />
-<br />
-    The primary protection against this overhead is thorough compiler<br />
-    optimization, to crush out layers of inline function interfaces.<br />
-    Kuck &amp; Associates has demonstrated the practicality of this kind<br />
-    of optimization.<br />
-<br />
-    The second line of defense against this overhead is explicit<br />
-    specialization. By defining helper function templates, and writing<br />
-    specialized code for the default case, overhead can be eliminated<br />
-    for that case without sacrificing flexibility. This takes full<br />
-    advantage of any ability of the optimizer to crush out degenerate<br />
-    code.<br />
-<br />
-    The library specifies many virtual functions which current linkers<br />
-    load even when they cannot be called. Some minor improvements to the<br />
-    compiler and to ld would eliminate any such overhead by simply<br />
-    omitting virtual functions that the complete program does not call.<br />
-    A prototype of this work has already been done. For targets where<br />
-    GNU ld is not used, a "pre-linker" could do the same job.<br />
-<br />
-    The main areas in the standard interface where user flexibility<br />
-    can result in overhead are:<br />
-<br />
-    - Allocators:  Containers are specified to use user-definable<br />
-    allocator types and objects, making tuning for the container<br />
-    characteristics tricky.<br />
-<br />
-    - Locales: the standard specifies locale objects used to implement<br />
-    iostream operations, involving many virtual functions which use<br />
-    streambuf iterators.<br />
-<br />
-    - Algorithms and containers: these may be instantiated on any type,<br />
-    frequently duplicating code for identical operations.<br />
-<br />
-    - Iostreams and strings: users are permitted to use these on their<br />
-    own types, and specify the operations the stream must use on these<br />
-    types.<br />
-<br />
-    Note that these sources of overhead are _avoidable_. The techniques<br />
-    to avoid them are covered below.<br />
-<br />
-    Code Bloat<br />
-    ----------<br />
-<br />
-    In the SGI STL, and in some other headers, many of the templates<br />
-    are defined "inline" -- either explicitly or by their placement<br />
-    in class definitions -- which should not be inline. This is a<br />
-    source of code bloat. Matt had remarked that he was relying on<br />
-    the compiler to recognize what was too big to benefit from inlining,<br />
-    and generate it out-of-line automatically. However, this also can<br />
-    result in code bloat except where the linker can eliminate the extra<br />
-    copies.<br />
-<br />
-    Fixing these cases will require an audit of all inline functions<br />
-    defined in the library to determine which merit inlining, and moving<br />
-    the rest out of line. This is an issue mainly in chapters 23, 25, and<br />
-    27. Of course it can be done incrementally, and we should generally<br />
-    accept patches that move large functions out of line and into ".tcc"<br />
-    files, which can later be pulled into a repository. Compiler/linker<br />
-    improvements to recognize very large inline functions and move them<br />
-    out-of-line, but shared among compilation units, could make this<br />
-    work unnecessary.<br />
-<br />
-    Pre-instantiating template specializations currently produces large<br />
-    amounts of dead code which bloats statically linked programs. The<br />
-    current state of the static library, libstdc++.a, is intolerable on<br />
-    this account, and will fuel further confused speculation about a need<br />
-    for a library "subset". A compiler improvement that treats each<br />
-    instantiated function as a separate object file, for linking purposes,<br />
-    would be one solution to this problem. An alternative would be to<br />
-    split up the manual instantiation files into dozens upon dozens of<br />
-    little files, each compiled separately, but an abortive attempt at<br />
-    this was done for &lt;string&gt; and, though it is far from complete, it<br />
-    is already a nuisance. A better interim solution (just until we have<br />
-    "export") is badly needed.<br />
-<br />
-    When building a shared library, the current compiler/linker cannot<br />
-    automatically generate the instantiations needed. This creates a<br />
-    miserable situation; it means any time something is changed in the<br />
-    library, before a shared library can be built someone must manually<br />
-    copy the declarations of all templates that are needed by other parts<br />
-    of the library to an "instantiation" file, and add it to the build<br />
-    system to be compiled and linked to the library. This process is<br />
-    readily automated, and should be automated as soon as possible.<br />
-    Users building their own shared libraries experience identical<br />
-    frustrations.<br />
-<br />
-    Sharing common aspects of template definitions among instantiations<br />
-    can radically reduce code bloat. The compiler could help a great<br />
-    deal here by recognizing when a function depends on nothing about<br />
-    a template parameter, or only on its size, and giving the resulting<br />
-    function a link-name "equate" that allows it to be shared with other<br />
-    instantiations. Implementation code could take advantage of the<br />
-    capability by factoring out code that does not depend on the template<br />
-    argument into separate functions to be merged by the compiler.<br />
-<br />
-    Until such a compiler optimization is implemented, much can be done<br />
-    manually (if tediously) in this direction. One such optimization is<br />
-    to derive class templates from non-template classes, and move as much<br />
-    implementation as possible into the base class. Another is to partial-<br />
-    specialize certain common instantiations, such as vector&lt;T*&gt;, to share<br />
-    code for instantiations on all types T. While these techniques work,<br />
-    they are far from the complete solution that a compiler improvement<br />
-    would afford.<br />
-<br />
-    Overhead: Expensive Language Features<br />
-    -------------------------------------<br />
-<br />
-    The main "expensive" language feature used in the standard library<br />
-    is exception support, which requires compiling in cleanup code with<br />
-    static table data to locate it, and linking in library code to use<br />
-    the table. For small embedded programs the amount of such library<br />
-    code and table data is assumed by some to be excessive. Under the<br />
-    "new" ABI this perception is generally exaggerated, although in some<br />
-    cases it may actually be excessive.<br />
-<br />
-    To implement a library which does not use exceptions directly is<br />
-    not difficult given minor compiler support (to "turn off" exceptions<br />
-    and ignore exception constructs), and results in no great library<br />
-    maintenance difficulties. To be precise, given "-fno-exceptions",<br />
-    the compiler should treat "try" blocks as ordinary blocks, and<br />
-    "catch" blocks as dead code to ignore or eliminate. Compiler<br />
-    support is not strictly necessary, except in the case of "function<br />
-    try blocks"; otherwise the following macros almost suffice:<br />
-<br />
-    #define throw(X)<br />
-    #define try      if (true)<br />
-    #define catch(X) else if (false)<br />
-<br />
-    However, there may be a need to use function try blocks in the<br />
-    library implementation, and use of macros in this way can make<br />
-    correct diagnostics impossible. Furthermore, use of this scheme<br />
-    would require the library to call a function to re-throw exceptions<br />
-    from a try block. Implementing the above semantics in the compiler<br />
-    is preferable.<br />
-<br />
-    Given the support above (however implemented) it only remains to<br />
-    replace code that "throws" with a call to a well-documented "handler"<br />
-    function in a separate compilation unit which may be replaced by<br />
-    the user. The main source of exceptions that would be difficult<br />
-    for users to avoid is memory allocation failures, but users can<br />
-    define their own memory allocation primitives that never throw.<br />
-    Otherwise, the complete list of such handlers, and which library<br />
-    functions may call them, would be needed for users to be able to<br />
-    implement the necessary substitutes. (Fortunately, they have the<br />
-    source code.)<br />
-<br />
-    Opportunities<br />
-    -------------<br />
-<br />
-    The template capabilities of C++ offer enormous opportunities for<br />
-    optimizing common library operations, well beyond what would be<br />
-    considered "eliminating overhead". In particular, many operations<br />
-    done in Glibc with macros that depend on proprietary language<br />
-    extensions can be implemented in pristine Standard C++. For example,<br />
-    the chapter 25 algorithms, and even C library functions such as strchr,<br />
-    can be specialized for the case of static arrays of known (small) size.<br />
-<br />
-    Detailed optimization opportunities are identified below where<br />
-    the component where they would appear is discussed. Of course new<br />
-    opportunities will be identified during implementation.<br />
-<br />
-    Unimplemented Required Library Features<br />
-    ---------------------------------------<br />
-<br />
-    The standard specifies hundreds of components, grouped broadly by<br />
-    chapter. These are listed in excruciating detail in the CHECKLIST<br />
-    file.<br />
-<br />
-    17 general<br />
-    18 support<br />
-    19 diagnostics<br />
-    20 utilities<br />
-    21 string<br />
-    22 locale<br />
-    23 containers<br />
-    24 iterators<br />
-    25 algorithms<br />
-    26 numerics<br />
-    27 iostreams<br />
-    Annex D  backward compatibility<br />
-<br />
-    Anyone participating in implementation of the library should obtain<br />
-    a copy of the standard, ISO 14882.  People in the U.S. can obtain an<br />
-    electronic copy for US$18 from ANSI's web site. Those from other<br />
-    countries should visit http://www.iso.ch/ to find out the location<br />
-    of their country's representation in ISO, in order to know who can<br />
-    sell them a copy.<br />
-<br />
-    The emphasis in the following sections is on unimplemented features<br />
-    and optimization opportunities.<br />
-<br />
-    Chapter 17  General<br />
-    -------------------<br />
-<br />
-    Chapter 17 concerns overall library requirements.<br />
-<br />
-    The standard doesn't mention threads. A multi-thread (MT) extension<br />
-    primarily affects operators new and delete (18), allocator (20),<br />
-    string (21), locale (22), and iostreams (27). The common underlying<br />
-    support needed for this is discussed under chapter 20.<br />
-<br />
-    The standard requirements on names from the C headers create a<br />
-    lot of work, mostly done. Names in the C headers must be visible<br />
-    in the std:: and sometimes the global namespace; the names in the<br />
-    two scopes must refer to the same object. More stringent is that<br />
-    Koenig lookup implies that any types specified as defined in std::<br />
-    really are defined in std::. Names optionally implemented as<br />
-    macros in C cannot be macros in C++. (An overview may be read at<br />
-    &lt;http://www.cantrip.org/cheaders.html&gt;). The scripts "inclosure"<br />
-    and "mkcshadow", and the directories shadow/ and cshadow/, are the<br />
-    beginning of an effort to conform in this area.<br />
-<br />
-    A correct conforming definition of C header names based on underlying<br />
-    C library headers, and practical linking of conforming namespaced<br />
-    customer code with third-party C libraries depends ultimately on<br />
-    an ABI change, allowing namespaced C type names to be mangled into<br />
-    type names as if they were global, somewhat as C function names in a<br />
-    namespace, or C++ global variable names, are left unmangled. Perhaps<br />
-    another "extern" mode, such as 'extern "C-global"' would be an<br />
-    appropriate place for such type definitions. Such a type would<br />
-    affect mangling as follows:<br />
-<br />
-    namespace A {<br />
-    struct X {};<br />
-    extern "C-global" {  // or maybe just 'extern "C"'<br />
-    struct Y {};<br />
-    };<br />
-    }<br />
-    void f(A::X*);  // mangles to f__FPQ21A1X<br />
-    void f(A::Y*);  // mangles to f__FP1Y<br />
-<br />
-    (It may be that this is really the appropriate semantics for regular<br />
-    'extern "C"', and 'extern "C-global"', as an extension, would not be<br />
-    necessary.) This would allow functions declared in non-standard C headers<br />
-    (and thus fixable by neither us nor users) to link properly with functions<br />
-    declared using C types defined in properly-namespaced headers. The<br />
-    problem this solves is that C headers (which C++ programmers do persist<br />
-    in using) frequently forward-declare C struct tags without including<br />
-    the header where the type is defined, as in<br />
-<br />
-    struct tm;<br />
-    void munge(tm*);<br />
-<br />
-    Without some compiler accommodation, munge cannot be called by correct<br />
-    C++ code using a pointer to a correctly-scoped tm* value.<br />
-<br />
-    The current C headers use the preprocessor extension "#include_next",<br />
-    which the compiler complains about when run "-pedantic".<br />
-    (Incidentally, it appears that "-fpedantic" is currently ignored,<br />
-    probably a bug.)  The solution in the C compiler is to use<br />
-    "-isystem" rather than "-I", but unfortunately in g++ this seems<br />
-    also to wrap the whole header in an 'extern "C"' block, so it's<br />
-    unusable for C++ headers. The correct solution appears to be to<br />
-    allow the various special include-directory options, if not given<br />
-    an argument, to affect subsequent include-directory options additively,<br />
-    so that if one said<br />
-<br />
-    -pedantic -iprefix $(prefix) \<br />
-    -idirafter -ino-pedantic -ino-extern-c -iwithprefix -I g++-v3 \<br />
-    -iwithprefix -I g++-v3/ext<br />
-<br />
-    the compiler would search $(prefix)/g++-v3 and not report<br />
-    pedantic warnings for files found there, but treat files in<br />
-    $(prefix)/g++-v3/ext pedantically. (The undocumented semantics<br />
-    of "-isystem" in g++ stink. Can they be rescinded?  If not it<br />
-    must be replaced with something more rationally behaved.)<br />
-<br />
-    All the C headers need the treatment above; in the standard these<br />
-    headers are mentioned in various chapters. Below, I have only<br />
-    mentioned those that present interesting implementation issues.<br />
-<br />
-    The components identified as "mostly complete", below, have not been<br />
-    audited for conformance. In many cases where the library passes<br />
-    conformance tests we have non-conforming extensions that must be<br />
-    wrapped in #if guards for "pedantic" use, and in some cases renamed<br />
-    in a conforming way for continued use in the implementation regardless<br />
-    of conformance flags.<br />
-<br />
-    The STL portion of the library still depends on a header<br />
-    stl/bits/stl_config.h full of #ifdef clauses. This apparatus<br />
-    should be replaced with autoconf/automake machinery.<br />
-<br />
-    The SGI STL defines a type_traits&lt;&gt; template, specialized for<br />
-    many types in their code including the built-in numeric and<br />
-    pointer types and some library types, to direct optimizations of<br />
-    standard functions. The SGI compiler has been extended to generate<br />
-    specializations of this template automatically for user types,<br />
-    so that use of STL templates on user types can take advantage of<br />
-    these optimizations. Specializations for other, non-STL, types<br />
-    would make more optimizations possible, but extending the gcc<br />
-    compiler in the same way would be much better. Probably the next<br />
-    round of standardization will ratify this, but probably with<br />
-    changes, so it probably should be renamed to place it in the<br />
-    implementation namespace.<br />
-<br />
-    The SGI STL also defines a large number of extensions visible in<br />
-    standard headers. (Other extensions that appear in separate headers<br />
-    have been sequestered in subdirectories ext/ and backward/.)  All<br />
-    these extensions should be moved to other headers where possible,<br />
-    and in any case wrapped in a namespace (not std!), and (where kept<br />
-    in a standard header) girded about with macro guards. Some cannot be<br />
-    moved out of standard headers because they are used to implement<br />
-    standard features.  The canonical method for accommodating these<br />
-    is to use a protected name, aliased in macro guards to a user-space<br />
-    name. Unfortunately C++ offers no satisfactory template typedef<br />
-    mechanism, so very ad-hoc and unsatisfactory aliasing must be used<br />
-    instead.<br />
-<br />
-    Implementation of a template typedef mechanism should have the highest<br />
-    priority among possible extensions, on the same level as implementation<br />
-    of the template "export" feature.<br />
-<br />
-    Chapter 18  Language support<br />
-    ----------------------------<br />
-<br />
-    Headers: &lt;limits&gt; &lt;new&gt; &lt;typeinfo&gt; &lt;exception&gt;<br />
-    C headers: &lt;cstddef&gt; &lt;climits&gt; &lt;cfloat&gt;  &lt;cstdarg&gt; &lt;csetjmp&gt;<br />
-    &lt;ctime&gt;   &lt;csignal&gt; &lt;cstdlib&gt; (also 21, 25, 26)<br />
-<br />
-    This defines the built-in exceptions, rtti, numeric_limits&lt;&gt;,<br />
-    operator new and delete. Much of this is provided by the<br />
-    compiler in its static runtime library.<br />
-<br />
-    Work to do includes defining numeric_limits&lt;&gt; specializations in<br />
-    separate files for all target architectures. Values for integer types<br />
-    except for bool and wchar_t are readily obtained from the C header<br />
-    &lt;limits.h&gt;, but values for the remaining numeric types (bool, wchar_t,<br />
-    float, double, long double) must be entered manually. This is<br />
-    largely dog work except for those members whose values are not<br />
-    easily deduced from available documentation. Also, this involves<br />
-    some work in target configuration to identify the correct choice of<br />
-    file to build against and to install.<br />
-<br />
-    The definitions of the various operators new and delete must be<br />
-    made thread-safe, which depends on a portable exclusion mechanism,<br />
-    discussed under chapter 20.  Of course there is always plenty of<br />
-    room for improvements to the speed of operators new and delete.<br />
-<br />
-    &lt;cstdarg&gt;, in Glibc, defines some macros that gcc does not allow to<br />
-    be wrapped into an inline function. Probably this header will demand<br />
-    attention whenever a new target is chosen. The functions atexit(),<br />
-    exit(), and abort() in cstdlib have different semantics in C++, so<br />
-    must be re-implemented for C++.<br />
-<br />
-    Chapter 19  Diagnostics<br />
-    -----------------------<br />
-<br />
-    Headers: &lt;stdexcept&gt;<br />
-    C headers: &lt;cassert&gt; &lt;cerrno&gt;<br />
-<br />
-    This defines the standard exception objects, which are "mostly complete".<br />
-    Cygnus has a version, and now SGI provides a slightly different one.<br />
-    It makes little difference which we use.<br />
-<br />
-    The C global name "errno", which C allows to be a variable or a macro,<br />
-    is required in C++ to be a macro. For MT it must typically result in<br />
-    a function call.<br />
-<br />
-    Chapter 20  Utilities<br />
-    ---------------------<br />
-    Headers: &lt;utility&gt; &lt;functional&gt; &lt;memory&gt;<br />
-    C header: &lt;ctime&gt; (also in 18)<br />
-<br />
-    SGI STL provides "mostly complete" versions of all the components<br />
-    defined in this chapter. However, the auto_ptr&lt;&gt; implementation<br />
-    is known to be wrong. Furthermore, the standard definition of it<br />
-    is known to be unimplementable as written. A minor change to the<br />
-    standard would fix it, and auto_ptr&lt;&gt; should be adjusted to match.<br />
-<br />
-    Multi-threading affects the allocator implementation, and there must<br />
-    be configuration/installation choices for different users' MT<br />
-    requirements. Anyway, users will want to tune allocator options<br />
-    to support different target conditions, MT or no.<br />
-<br />
-    The primitives used for MT implementation should be exposed, as an<br />
-    extension, for users' own work. We need cross-CPU "mutex" support,<br />
-    multi-processor shared-memory atomic integer operations, and single-<br />
-    processor uninterruptible integer operations, and all three configurable<br />
-    to be stubbed out for non-MT use, or to use an appropriately-loaded<br />
-    dynamic library for the actual runtime environment, or statically<br />
-    compiled in for cases where the target architecture is known.<br />
-<br />
-    Chapter 21  String<br />
-    ------------------<br />
-    Headers: &lt;string&gt;<br />
-    C headers: &lt;cctype&gt; &lt;cwctype&gt; &lt;cstring&gt; &lt;cwchar&gt; (also in 27)<br />
-    &lt;cstdlib&gt; (also in 18, 25, 26)<br />
-<br />
-    We have "mostly-complete" char_traits&lt;&gt; implementations. Many of the<br />
-    char_traits&lt;char&gt; operations might be optimized further using existing<br />
-    proprietary language extensions.<br />
-<br />
-    We have a "mostly-complete" basic_string&lt;&gt; implementation. The work<br />
-    to manually instantiate char and wchar_t specializations in object<br />
-    files to improve link-time behavior is extremely unsatisfactory,<br />
-    literally tripling library-build time with no commensurate improvement<br />
-    in static program link sizes. It must be redone. (Similar work is<br />
-    needed for some components in chapters 22 and 27.)<br />
-<br />
-    Other work needed for strings is MT-safety, as discussed under the<br />
-    chapter 20 heading.<br />
-<br />
-    The standard C type mbstate_t from &lt;cwchar&gt; and used in char_traits&lt;&gt;<br />
-    must be different in C++ than in C, because in C++ the default constructor<br />
-    value mbstate_t() must be the "base" or "ground" sequence state.<br />
-    (According to the likely resolution of a recently raised Core issue,<br />
-    this may become unnecessary. However, there are other reasons to<br />
-    use a state type not as limited as whatever the C library provides.)<br />
-    If we might want to provide conversions from (e.g.) internally-<br />
-    represented EUC-wide to externally-represented Unicode, or vice-<br />
-    versa, the mbstate_t we choose will need to be more accommodating<br />
-    than what might be provided by an underlying C library.<br />
-<br />
-    There remain some basic_string template-member functions which do<br />
-    not overload properly with their non-template brethren. The infamous<br />
-    hack akin to what was done in vector&lt;&gt; is needed, to conform to<br />
-    23.1.1 para 10. The CHECKLIST items for basic_string marked 'X',<br />
-    or incomplete, are so marked for this reason.<br />
-<br />
-    Replacing the string iterators, which currently are simple character<br />
-    pointers, with class objects would greatly increase the safety of the<br />
-    client interface, and also permit a "debug" mode in which range,<br />
-    ownership, and validity are rigorously checked. The current use of<br />
-    raw pointers as string iterators is evil. vector&lt;&gt; iterators need the<br />
-    same treatment. Note that the current implementation freely mixes<br />
-    pointers and iterators, and that must be fixed before safer iterators<br />
-    can be introduced.<br />
-<br />
-    Some of the functions in &lt;cstring&gt; are different from the C version.<br />
-    generally overloaded on const and non-const argument pointers. For<br />
-    example, in &lt;cstring&gt; strchr is overloaded. The functions isupper<br />
-    etc. in &lt;cctype&gt; typically implemented as macros in C are functions<br />
-    in C++, because they are overloaded with others of the same name<br />
-    defined in &lt;locale&gt;.<br />
-<br />
-    Many of the functions required in &lt;cwctype&gt; and &lt;cwchar&gt; cannot be<br />
-    implemented using underlying C facilities on intended targets because<br />
-    such facilities only partly exist.<br />
-<br />
-    Chapter 22  Locale<br />
-    ------------------<br />
-    Headers: &lt;locale&gt;<br />
-    C headers: &lt;clocale&gt;<br />
-<br />
-    We have a "mostly complete" class locale, with the exception of<br />
-    code for constructing, and handling the names of, named locales.<br />
-    The ways that locales are named (particularly when categories<br />
-    (e.g. LC_TIME, LC_COLLATE) are different) varies among all target<br />
-    environments. This code must be written in various versions and<br />
-    chosen by configuration parameters.<br />
-<br />
-    Members of many of the facets defined in &lt;locale&gt; are stubs. Generally,<br />
-    there are two sets of facets: the base class facets (which are supposed<br />
-    to implement the "C" locale) and the "byname" facets, which are supposed<br />
-    to read files to determine their behavior. The base ctype&lt;&gt;, collate&lt;&gt;,<br />
-    and numpunct&lt;&gt; facets are "mostly complete", except that the table of<br />
-    bitmask values used for "is" operations, and corresponding mask values,<br />
-    are still defined in libio and just included/linked. (We will need to<br />
-    implement these tables independently, soon, but should take advantage<br />
-    of libio where possible.)  The num_put&lt;&gt;::put members for integer types<br />
-    are "mostly complete".<br />
-<br />
-    A complete list of what has and has not been implemented may be<br />
-    found in CHECKLIST. However, note that the current definition of<br />
-    codecvt&lt;wchar_t,char,mbstate_t&gt; is wrong. It should simply write<br />
-    out the raw bytes representing the wide characters, rather than<br />
-    trying to convert each to a corresponding single "char" value.<br />
-<br />
-    Some of the facets are more important than others. Specifically,<br />
-    the members of ctype&lt;&gt;, numpunct&lt;&gt;, num_put&lt;&gt;, and num_get&lt;&gt; facets<br />
-    are used by other library facilities defined in &lt;string&gt;, &lt;istream&gt;,<br />
-    and &lt;ostream&gt;, and the codecvt&lt;&gt; facet is used by basic_filebuf&lt;&gt;<br />
-    in &lt;fstream&gt;, so a conforming iostream implementation depends on<br />
-    these.<br />
-<br />
-    The "long long" type eventually must be supported, but code mentioning<br />
-    it should be wrapped in #if guards to allow pedantic-mode compiling.<br />
-<br />
-    Performance of num_put&lt;&gt; and num_get&lt;&gt; depend critically on<br />
-    caching computed values in ios_base objects, and on extensions<br />
-    to the interface with streambufs.<br />
-<br />
-    Specifically: retrieving a copy of the locale object, extracting<br />
-    the needed facets, and gathering data from them, for each call to<br />
-    (e.g.) operator&lt;&lt; would be prohibitively slow.  To cache format<br />
-    data for use by num_put&lt;&gt; and num_get&lt;&gt; we have a _Format_cache&lt;&gt;<br />
-    object stored in the ios_base::pword() array. This is constructed<br />
-    and initialized lazily, and is organized purely for utility. It<br />
-    is discarded when a new locale with different facets is imbued.<br />
-<br />
-    Using only the public interfaces of the iterator arguments to the<br />
-    facet functions would limit performance by forbidding "vector-style"<br />
-    character operations. The streambuf iterator optimizations are<br />
-    described under chapter 24, but facets can also bypass the streambuf<br />
-    iterators via explicit specializations and operate directly on the<br />
-    streambufs, and use extended interfaces to get direct access to the<br />
-    streambuf internal buffer arrays. These extensions are mentioned<br />
-    under chapter 27. These optimizations are particularly important<br />
-    for input parsing.<br />
-<br />
-    Unused virtual members of locale facets can be omitted, as mentioned<br />
-    above, by a smart linker.<br />
-<br />
-    Chapter 23  Containers<br />
-    ----------------------<br />
-    Headers: &lt;deque&gt; &lt;list&gt; &lt;queue&gt; &lt;stack&gt; &lt;vector&gt; &lt;map&gt; &lt;set&gt; &lt;bitset&gt;<br />
-<br />
-    All the components in chapter 23 are implemented in the SGI STL.<br />
-    They are "mostly complete"; they include a large number of<br />
-    nonconforming extensions which must be wrapped. Some of these<br />
-    are used internally and must be renamed or duplicated.<br />
-<br />
-    The SGI components are optimized for large-memory environments. For<br />
-    embedded targets, different criteria might be more appropriate. Users<br />
-    will want to be able to tune this behavior. We should provide<br />
-    ways for users to compile the library with different memory usage<br />
-    characteristics.<br />
-<br />
-    A lot more work is needed on factoring out common code from different<br />
-    specializations to reduce code size here and in chapter 25. The<br />
-    easiest fix for this would be a compiler/ABI improvement that allows<br />
-    the compiler to recognize when a specialization depends only on the<br />
-    size (or other gross quality) of a template argument, and allow the<br />
-    linker to share the code with similar specializations. In its<br />
-    absence, many of the algorithms and containers can be partial-<br />
-    specialized, at least for the case of pointers, but this only solves<br />
-    a small part of the problem. Use of a type_traits-style template<br />
-    allows a few more optimization opportunities, more if the compiler<br />
-    can generate the specializations automatically.<br />
-<br />
-    As an optimization, containers can specialize on the default allocator<br />
-    and bypass it, or take advantage of details of its implementation<br />
-    after it has been improved upon.<br />
-<br />
-    Replacing the vector iterators, which currently are simple element<br />
-    pointers, with class objects would greatly increase the safety of the<br />
-    client interface, and also permit a "debug" mode in which range,<br />
-    ownership, and validity are rigorously checked. The current use of<br />
-    pointers for iterators is evil.<br />
-<br />
-    As mentioned for chapter 24, the deque iterator is a good example of<br />
-    an opportunity to implement a "staged" iterator that would benefit<br />
-    from specializations of some algorithms.<br />
-<br />
-    Chapter 24  Iterators<br />
-    ---------------------<br />
-    Headers: &lt;iterator&gt;<br />
-<br />
-    Standard iterators are "mostly complete", with the exception of<br />
-    the stream iterators, which are not yet templatized on the<br />
-    stream type. Also, the base class template iterator&lt;&gt; appears<br />
-    to be wrong, so everything derived from it must also be wrong,<br />
-    currently.<br />
-<br />
-    The streambuf iterators (currently located in stl/bits/std_iterator.h,<br />
-    but should be under bits/) can be rewritten to take advantage of<br />
-    friendship with the streambuf implementation.<br />
-<br />
-    Matt Austern has identified opportunities where certain iterator<br />
-    types, particularly including streambuf iterators and deque<br />
-    iterators, have a "two-stage" quality, such that an intermediate<br />
-    limit can be checked much more quickly than the true limit on<br />
-    range operations. If identified with a member of iterator_traits,<br />
-    algorithms may be specialized for this case. Of course the<br />
-    iterators that have this quality can be identified by specializing<br />
-    a traits class.<br />
-<br />
-    Many of the algorithms must be specialized for the streambuf<br />
-    iterators, to take advantage of block-mode operations, in order<br />
-    to allow iostream/locale operations' performance not to suffer.<br />
-    It may be that they could be treated as staged iterators and<br />
-    take advantage of those optimizations.<br />
-<br />
-    Chapter 25  Algorithms<br />
-    ----------------------<br />
-    Headers: &lt;algorithm&gt;<br />
-    C headers: &lt;cstdlib&gt; (also in 18, 21, 26))<br />
-<br />
-    The algorithms are "mostly complete". As mentioned above, they<br />
-    are optimized for speed at the expense of code and data size.<br />
-<br />
-    Specializations of many of the algorithms for non-STL types would<br />
-    give performance improvements, but we must use great care not to<br />
-    interfere with fragile template overloading semantics for the<br />
-    standard interfaces. Conventionally the standard function template<br />
-    interface is an inline which delegates to a non-standard function<br />
-    which is then overloaded (this is already done in many places in<br />
-    the library). Particularly appealing opportunities for the sake of<br />
-    iostream performance are for copy and find applied to streambuf<br />
-    iterators or (as noted elsewhere) for staged iterators, of which<br />
-    the streambuf iterators are a good example.<br />
-<br />
-    The bsearch and qsort functions cannot be overloaded properly as<br />
-    required by the standard because gcc does not yet allow overloading<br />
-    on the extern-"C"-ness of a function pointer.<br />
-<br />
-    Chapter 26  Numerics<br />
-    --------------------<br />
-    Headers: &lt;complex&gt; &lt;valarray&gt; &lt;numeric&gt;<br />
-    C headers: &lt;cmath&gt;, &lt;cstdlib&gt; (also 18, 21, 25)<br />
-<br />
-    Numeric components: Gabriel dos Reis's valarray, Drepper's complex,<br />
-    and the few algorithms from the STL are "mostly done".  Of course<br />
-    optimization opportunities abound for the numerically literate. It<br />
-    is not clear whether the valarray implementation really conforms<br />
-    fully, in the assumptions it makes about aliasing (and lack thereof)<br />
-    in its arguments.<br />
-<br />
-    The C div() and ldiv() functions are interesting, because they are the<br />
-    only case where a C library function returns a class object by value.<br />
-    Since the C++ type div_t must be different from the underlying C type<br />
-    (which is in the wrong namespace) the underlying functions div() and<br />
-    ldiv() cannot be re-used efficiently. Fortunately they are trivial to<br />
-    re-implement.<br />
-<br />
-    Chapter 27  Iostreams<br />
-    ---------------------<br />
-    Headers: &lt;iosfwd&gt; &lt;streambuf&gt; &lt;ios&gt; &lt;ostream&gt; &lt;istream&gt; &lt;iostream&gt;<br />
-    &lt;iomanip&gt; &lt;sstream&gt; &lt;fstream&gt;<br />
-    C headers: &lt;cstdio&gt; &lt;cwchar&gt; (also in 21)<br />
-<br />
-    Iostream is currently in a very incomplete state. &lt;iosfwd&gt;, &lt;iomanip&gt;,<br />
-    ios_base, and basic_ios&lt;&gt; are "mostly complete". basic_streambuf&lt;&gt; and<br />
-    basic_ostream&lt;&gt; are well along, but basic_istream&lt;&gt; has had little work<br />
-    done. The standard stream objects, &lt;sstream&gt; and &lt;fstream&gt; have been<br />
-    started; basic_filebuf&lt;&gt; "write" functions have been implemented just<br />
-    enough to do "hello, world".<br />
-<br />
-    Most of the istream and ostream operators &lt;&lt; and &gt;&gt; (with the exception<br />
-    of the op&lt;&lt;(integer) ones) have not been changed to use locale primitives,<br />
-    sentry objects, or char_traits members.<br />
-<br />
-    All these templates should be manually instantiated for char and<br />
-    wchar_t in a way that links only used members into user programs.<br />
-<br />
-    Streambuf is fertile ground for optimization extensions. An extended<br />
-    interface giving iterator access to its internal buffer would be very<br />
-    useful for other library components.<br />
-<br />
-    Iostream operations (primarily operators &lt;&lt; and &gt;&gt;) can take advantage<br />
-    of the case where user code has not specified a locale, and bypass locale<br />
-    operations entirely. The current implementation of op&lt;&lt;/num_put&lt;&gt;::put,<br />
-    for the integer types, demonstrates how they can cache encoding details<br />
-    from the locale on each operation. There is lots more room for<br />
-    optimization in this area.<br />
-<br />
-    The definition of the relationship between the standard streams<br />
-    cout et al. and stdout et al. requires something like a "stdiobuf".<br />
-    The SGI solution of using double-indirection to actually use a<br />
-    stdio FILE object for buffering is unsatisfactory, because it<br />
-    interferes with peephole loop optimizations.<br />
-<br />
-    The &lt;sstream&gt; header work has begun. stringbuf can benefit from<br />
-    friendship with basic_string&lt;&gt; and basic_string&lt;&gt;::_Rep to use<br />
-    those objects directly as buffers, and avoid allocating and making<br />
-    copies.<br />
-<br />
-    The basic_filebuf&lt;&gt; template is a complex beast. It is specified to<br />
-    use the locale facet codecvt&lt;&gt; to translate characters between native<br />
-    files and the locale character encoding. In general this involves<br />
-    two buffers, one of "char" representing the file and another of<br />
-    "char_type", for the stream, with codecvt&lt;&gt; translating. The process<br />
-    is complicated by the variable-length nature of the translation, and<br />
-    the need to seek to corresponding places in the two representations.<br />
-    For the case of basic_filebuf&lt;char&gt;, when no translation is needed,<br />
-    a single buffer suffices. A specialized filebuf can be used to reduce<br />
-    code space overhead when no locale has been imbued. Matt Austern's<br />
-    work at SGI will be useful, perhaps directly as a source of code, or<br />
-    at least as an example to draw on.<br />
-<br />
-    Filebuf, almost uniquely (cf. operator new), depends heavily on<br />
-    underlying environmental facilities. In current releases iostream<br />
-    depends fairly heavily on libio constant definitions, but it should<br />
-    be made independent.  It also depends on operating system primitives<br />
-    for file operations. There is immense room for optimizations using<br />
-    (e.g.) mmap for reading. The shadow/ directory wraps, besides the<br />
-    standard C headers, the libio.h and unistd.h headers, for use mainly<br />
-    by filebuf. These wrappings have not been completed, though there<br />
-    is scaffolding in place.<br />
-<br />
-    The encapsulation of certain C header &lt;cstdio&gt; names presents an<br />
-    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 />
-    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 />
-    extension.)  (The functions related to exit() must be rewritten<br />
-    for other reasons.)<br />
-<br />
-<br />
-    Annex D<br />
-    -------<br />
-    Headers: &lt;strstream&gt;<br />
-<br />
-    Annex D defines many non-library features, and many minor<br />
-    modifications to various headers, and a complete header.<br />
-    It is "mostly done", except that the libstdc++-2 &lt;strstream&gt;<br />
-    header has not been adopted into the library, or checked to<br />
-    verify that it matches the draft in those details that were<br />
-    clarified by the committee. Certainly it must at least be<br />
-    moved into the std namespace.<br />
-<br />
-    We still need to wrap all the deprecated features in #if guards<br />
-    so that pedantic compile modes can detect their use.<br />
-<br />
-    Nonstandard Extensions<br />
-    ----------------------<br />
-    Headers: &lt;iostream.h&gt; &lt;strstream.h&gt; &lt;hash&gt; &lt;rbtree&gt;<br />
-    &lt;pthread_alloc&gt; &lt;stdiobuf&gt; (etc.)<br />
-<br />
-    User code has come to depend on a variety of nonstandard components<br />
-    that we must not omit. Much of this code can be adopted from<br />
-    libstdc++-v2 or from the SGI STL. This particularly includes<br />
-    &lt;iostream.h&gt;, &lt;strstream.h&gt;, and various SGI extensions such<br />
-    as &lt;hash_map.h&gt;. Many of these are already placed in the<br />
-    subdirectories ext/ and backward/. (Note that it is better to<br />
-    include them via "&lt;backward/hash_map.h&gt;" or "&lt;ext/hash_map&gt;" than<br />
-    to search the subdirectory itself via a "-I" directive.<br />
-  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apas04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_porting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Documentation Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix B. Porting and Maintenance</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apd.html b/libstdc++-v3/doc/html/manual/bk01apd.html
deleted file mode 100644
index 72f1d7e..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apd.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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>Appendix D. GNU General Public License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="bk01apds02.html" title="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. GNU General Public License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01apds02.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gpl-2.0"></a>Appendix D. GNU General Public License</h2></div><div><p class="releaseinfo">Version 2, June 1991</p></div><div><p class="copyright">Copyright © 1989, 1991 Free Software Foundation, Inc.</p></div><div><div class="legalnotice"><a id="gpl-legalnotice"></a><p>
- </p><div class="address"><p>Free Software Foundation, Inc. <br />
-   <span class="street">51 Franklin Street, Fifth Floor</span>, <br />
-   <span class="city">Boston</span>, <span class="state">MA</span> <span class="postcode">02110-1301</span><br />
-   <span class="country">USA</span><br />
- </p></div><p>
- </p><p>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p></div></div><div><p class="pubdate">Version 2, June 1991</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="bk01apd.html#gpl-1">Preamble</a></span></dt><dt><span class="section"><a href="bk01apds02.html">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</a></span></dt><dd><dl><dt><span class="section"><a href="bk01apds02.html#gpl-2-0">Section 0</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-1">Section 1</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-2">Section 2</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-3">Section 3</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-4">Section 4</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-5">Section 5</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-6">Section 6</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-7">Section 7</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-8">Section 8</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-9">Section 9</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-10">Section 10</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-11">NO WARRANTY Section 11</a></span></dt><dt><span class="section"><a href="bk01apds02.html#gpl-2-12">Section 12</a></span></dt></dl></dd><dt><span class="section"><a href="bk01apds03.html">How to Apply These Terms to Your New Programs</a></span></dt></dl></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-1"></a>Preamble</h2></div></div></div><p>The licenses for most software are designed to take away your
- freedom to share and change it. By contrast, the GNU General Public License is
- intended to guarantee your freedom to share and change
- free software - to make sure the software is free for all its users.
- This General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit
- to using it. (Some other Free Software Foundation software is covered
- by the GNU Library General Public License instead.) You can apply it
- to your programs, too.</p><p>When we speak of free software, we are referring to freedom, not price.
- Our General Public Licenses are designed to make sure that you have the
- freedom to distribute copies of free software (and charge for this
- service if you wish), that you receive source code or can get it if you
- want it, that you can change the software or use pieces of it in new free
- programs; and that you know you can do these things.</p><p>To protect your rights, we need to make restrictions that forbid anyone
- to deny you these rights or to ask you to surrender the rights. These
- restrictions translate to certain responsibilities for you if you distribute
- copies of the software, or if you modify it.</p><p>For example, if you distribute copies of such a program, whether gratis or
- for a fee, you must give the recipients all the rights that you have. You
- must make sure that they, too, receive or can get the source code. And you
- must show them these terms so they know their rights.</p><p>We protect your rights with two steps:
- </p><div class="orderedlist"><ol type="1"><li><p>copyright the software, and</p></li><li><p>offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.</p></li></ol></div><p>
- </p><p>Also, for each author's protection and ours, we want to make certain that
- everyone understands that there is no warranty for this free software. If
- the software is modified by someone else and passed on, we want its
- recipients to know that what they have is not the original, so that any
- problems introduced by others will not reflect on the original authors'
- reputations.</p><p>Finally, any free program is threatened constantly by software patents.
- We wish to avoid the danger that redistributors of a free program will
- individually obtain patent licenses, in effect making the program
- proprietary. To prevent this, we have made it clear that any patent must be
- licensed for everyone's free use or not licensed at all.</p><p>The precise terms and conditions for copying, distribution and modification
- follow.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apds02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. Free Software Needs Free Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apds02.html b/libstdc++-v3/doc/html/manual/bk01apds02.html
deleted file mode 100644
index 2a0af92..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apds02.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="prev" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="next" href="bk01apds03.html" title="How to Apply These Terms to Your New Programs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apd.html">Prev</a> </td><th width="60%" align="center">Appendix D. GNU General Public License</th><td width="20%" align="right"> <a accesskey="n" href="bk01apds03.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-2"></a>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-0"></a>Section 0</h3></div></div></div><p>This License applies to any program or other work which contains a notice
- placed by the copyright holder saying it may be distributed under the terms
- of this General Public License. The “<span class="quote">Program</span>”, below, refers to any such
- program or work, and a
- “<span class="quote">work based on the Program</span>” means either
- the Program or any derivative work under copyright law: that is to say, a
- work containing the Program or a portion of it, either verbatim or with
- modifications and/or translated into another language. (Hereinafter, translation
- is included without limitation in the term
- “<span class="quote">modification</span>”.) Each licensee is addressed as “<span class="quote">you</span>”.</p><p>Activities other than copying, distribution and modification are not covered by
- this License; they are outside its scope. The act of running the Program is not
- restricted, and the output from the Program is covered only if its contents
- constitute a work based on the Program (independent of having been made by running
- the Program). Whether that is true depends on what the Program does.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-1"></a>Section 1</h3></div></div></div><p>You may copy and distribute verbatim copies of the Program's source code as you
- receive it, in any medium, provided that you conspicuously and appropriately
- publish on each copy an appropriate copyright notice and disclaimer of warranty;
- keep intact all the notices that refer to this License and to the absence of any
- warranty; and give any other recipients of the Program a copy of this License
- along with the Program.</p><p>You may charge a fee for the physical act of transferring a copy, and you may at
- your option offer warranty protection in exchange for a fee.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-2"></a>Section 2</h3></div></div></div><p>You may modify your copy or copies of the Program or any portion of it, thus
- forming a work based on the Program, and copy and distribute such modifications
- or work under the terms of
- <a class="link" href="bk01apds02.html#gpl-2-1" title="Section 1">Section 1</a> above, provided
- that you also meet all of these conditions:
- </p><div class="orderedlist"><ol type="a"><li><p>You must cause the modified files to carry prominent notices stating that
- you changed the files and the date of any change.</p></li><li><p>You must cause any work that you distribute or publish, that in whole or
- in part contains or is derived from the Program or any part thereof, to be
- licensed as a whole at no charge to all third parties under the terms of
- this License.</p></li><li><p>If the modified program normally reads commands interactively when run, you
- must cause it, when started running for such interactive use in the most
- ordinary way, to print or display an announcement including an appropriate
- copyright notice and a notice that there is no warranty (or else, saying
- that you provide a warranty) and that users may redistribute the program
- under these conditions, and telling the user how to view a copy of this
- License. (Exception: If the Program itself is interactive but does not
- normally print such an announcement, your work based on the Program is not
- required to print an announcement.)</p></li></ol></div><p>
- </p><p>These requirements apply to the modified work as a whole. If identifiable sections
- of that work are not derived from the Program, and can be reasonably considered
- independent and separate works in themselves, then this License, and its terms,
- do not apply to those sections when you distribute them as separate works. But when
- you distribute the same sections as part of a whole which is a work based on the
- Program, the distribution of the whole must be on the terms of this License, whose
- permissions for other licensees extend to the entire whole, and thus to each and
- every part regardless of who wrote it.</p><p>Thus, it is not the intent of this section to claim rights or contest your rights
- to work written entirely by you; rather, the intent is to exercise the right to control
- the distribution of derivative or collective works based on the Program.</p><p>In addition, mere aggregation of another work not based on the Program with the Program
- (or with a work based on the Program) on a volume of a storage or distribution medium
- does not bring the other work under the scope of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-3"></a>Section 3</h3></div></div></div><p>You may copy and distribute the Program (or a work based on it, under
- <a class="link" href="bk01apds02.html#gpl-2-2" title="Section 2">Section 2</a> in object code or executable form under the terms of
- <a class="link" href="bk01apds02.html#gpl-2-1" title="Section 1">Sections 1</a> and
- <a class="link" href="bk01apds02.html#gpl-2-2" title="Section 2">2</a> above provided that you also do one of the following:
- </p><div class="orderedlist"><ol type="a"><li><p>Accompany it with the complete corresponding machine-readable source code, which
- must be distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,</p></li><li><p>Accompany it with a written offer, valid for at least three years, to give any
- third party, for a charge no more than your cost of physically performing source
- distribution, a complete machine-readable copy of the corresponding source code,
- to be distributed under the terms of Sections 1 and 2 above on a medium customarily
- used for software interchange; or,</p></li><li><p>Accompany it with the information you received as to the offer to distribute
- corresponding source code. (This alternative is allowed only for noncommercial
- distribution and only if you received the program in object code or executable form
- with such an offer, in accord with Subsection b above.)</p></li></ol></div><p>
- </p><p>The source code for a work means the preferred form of the work for making modifications
- to it. For an executable work, complete source code means all the source code for all modules
- it contains, plus any associated interface definition files, plus the scripts used to control
- compilation and installation of the executable. However, as a special exception, the source
- code distributed need not include anything that is normally distributed (in either source or
- binary form) with the major components (compiler, kernel, and so on) of the operating system
- on which the executable runs, unless that component itself accompanies the executable.</p><p>If distribution of executable or object code is made by offering access to copy from a
- designated place, then offering equivalent access to copy the source code from the same place
- counts as distribution of the source code, even though third parties are not compelled to
- copy the source along with the object code.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-4"></a>Section 4</h3></div></div></div><p>You may not copy, modify, sublicense, or distribute the Program except as expressly provided
- under this License. Any attempt otherwise to copy, modify, sublicense or distribute the
- Program is void, and will automatically terminate your rights under this License. However,
- parties who have received copies, or rights, from you under this License will not have their
- licenses terminated so long as such parties remain in full compliance.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-5"></a>Section 5</h3></div></div></div><p>You are not required to accept this License, since you have not signed it. However, nothing
- else grants you permission to modify or distribute the Program or its derivative works.
- These actions are prohibited by law if you do not accept this License. Therefore, by modifying
- or distributing the Program (or any work based on the Program), you indicate your acceptance
- of this License to do so, and all its terms and conditions for copying, distributing or
- modifying the Program or works based on it.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-6"></a>Section 6</h3></div></div></div><p>Each time you redistribute the Program (or any work based on the Program), the recipient
- automatically receives a license from the original licensor to copy, distribute or modify
- the Program subject to these terms and conditions. You may not impose any further restrictions
- on the recipients' exercise of the rights granted herein. You are not responsible for enforcing
- compliance by third parties to this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-7"></a>Section 7</h3></div></div></div><p>If, as a consequence of a court judgment or allegation of patent infringement or for any other
- reason (not limited to patent issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this License, they do not excuse you
- from the conditions of this License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent obligations, then as a consequence
- you may not distribute the Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who receive copies directly or
- indirectly through you, then the only way you could satisfy both it and this License would be
- to refrain entirely from distribution of the Program.</p><p>If any portion of this section is held invalid or unenforceable under any particular circumstance,
- the balance of the section is intended to apply and the section as a whole is intended to apply
- in other circumstances.</p><p>It is not the purpose of this section to induce you to infringe any patents or other property
- right claims or to contest validity of any such claims; this section has the sole purpose of
- protecting the integrity of the free software distribution system, which is implemented by public
- license practices. Many people have made generous contributions to the wide range of software
- distributed through that system in reliance on consistent application of that system; it is up
- to the author/donor to decide if he or she is willing to distribute software through any other
- system and a licensee cannot impose that choice.</p><p>This section is intended to make thoroughly clear what is believed to be a consequence of the
- rest of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-8"></a>Section 8</h3></div></div></div><p>If the distribution and/or use of the Program is restricted in certain countries either by patents
- or by copyrighted interfaces, the original copyright holder who places the Program under this License
- may add an explicit geographical distribution limitation excluding those countries, so that
- distribution is permitted only in or among countries not thus excluded. In such case, this License
- incorporates the limitation as if written in the body of this License.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-9"></a>Section 9</h3></div></div></div><p>The Free Software Foundation may publish revised and/or new versions of the General Public License
- from time to time. Such new versions will be similar in spirit to the present version, but may differ
- in detail to address new problems or concerns.</p><p>Each version is given a distinguishing version number. If the Program specifies a version number of
- this License which applies to it and “<span class="quote">any later version</span>”, you have the option of following the terms
- and conditions either of that version or of any later version published by the Free Software
- Foundation. If the Program does not specify a version number of this License, you may choose any
- version ever published by the Free Software Foundation.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-10"></a>Section 10</h3></div></div></div><p>If you wish to incorporate parts of the Program into other free programs whose distribution
- conditions are different, write to the author to ask for permission. For software which is copyrighted
- by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions
- for this. Our decision will be guided by the two goals of preserving the free status of all
- derivatives of our free software and of promoting the sharing and reuse of software generally.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-11"></a>NO WARRANTY Section 11</h3></div></div></div><p>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
- PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
- OTHER PARTIES PROVIDE THE PROGRAM “<span class="quote">AS IS</span>” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="gpl-2-12"></a>Section 12</h3></div></div></div><p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
- ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
- FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
- USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
- INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
- ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGES.</p><p>END OF TERMS AND CONDITIONS</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apd.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01apd.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01apds03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix D. GNU General Public License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> How to Apply These Terms to Your New Programs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01apds03.html b/libstdc++-v3/doc/html/manual/bk01apds03.html
deleted file mode 100644
index d95dfd7..0000000
--- a/libstdc++-v3/doc/html/manual/bk01apds03.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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>How to Apply These Terms to Your New Programs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01apd.html" title="Appendix D. GNU General Public License" /><link rel="prev" href="bk01apds02.html" title="TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION" /><link rel="next" href="bk01ape.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How to Apply These Terms to Your New Programs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apds02.html">Prev</a> </td><th width="60%" align="center">Appendix D. GNU General Public License</th><td width="20%" align="right"> <a accesskey="n" href="bk01ape.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gpl-3"></a>How to Apply These Terms to Your New Programs</h2></div></div></div><p>If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these terms.</p><p>To do so, attach the following notices to the program. It is safest
- to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least
- the “<span class="quote">copyright</span>” line and a pointer to where the full notice is found.</p><p>&lt;one line to give the program's name and a brief idea of what it does.&gt;
- Copyright (C) &lt;year&gt; &lt;name of author&gt;</p><p>This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.</p><p>This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.</p><p>You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</p><p>Also add information on how to contact you by electronic and paper mail.</p><p>If the program is interactive, make it output a short notice like this
- when it starts in an interactive mode:</p><p>Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type “<span class="quote">show w</span>”.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type “<span class="quote">show c</span>” for details.</p><p>The hypothetical commands “<span class="quote">show w</span>” and “<span class="quote">show c</span>” should
- show the appropriate parts of the General Public License. Of course, the commands you
- use may be called something other than “<span class="quote">show w</span>” and “<span class="quote">show c</span>”;
- they could even be mouse-clicks or menu items--whatever suits your program.</p><p>You should also get your employer (if you work as a programmer) or your
- school, if any, to sign a “<span class="quote">copyright disclaimer</span>” for the program, if
- necessary. Here is a sample; alter the names:</p><p>Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- “<span class="quote">Gnomovision</span>” (which makes passes at compilers) written by James Hacker.</p><p>&lt;signature of Ty Coon&gt;, 1 April 1989
- Ty Coon, President of Vice</p><p>This General Public License does not permit incorporating your program into
- proprietary programs. If your program is a subroutine library, you may
- consider it more useful to permit linking proprietary applications with the
- library. If this is what you want to do, use the GNU Library General
- Public License instead of this License.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apds02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01apd.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01ape.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix E. GNU Free Documentation License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01ape.html b/libstdc++-v3/doc/html/manual/bk01ape.html
deleted file mode 100644
index 6b3403b..0000000
--- a/libstdc++-v3/doc/html/manual/bk01ape.html
+++ /dev/null
@@ -1,393 +0,0 @@
-<?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>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01apds03.html" title="How to Apply These Terms to Your New Programs" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01apds03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="appendix" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gfdl-1.2"></a>Appendix E. GNU Free Documentation License</h2></div></div></div><p>
- Copyright (C) 2000, 2001, 2002 Free Software Foundation,
- <abbr class="abbrev">Inc.</abbr> 51 Franklin <abbr class="abbrev">St</abbr>, Fifth Floor,
- Boston, <abbr class="abbrev">MA</abbr> 02110-1301 <abbr class="abbrev">USA</abbr>. Everyone is permitted to copy and
- distribute verbatim copies of this license document, but changing it is
- not allowed.
- </p><h2><a id="Preamble"></a>
- 0. PREAMBLE
- </h2><p>
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to assure
- everyone the effective freedom to copy and redistribute it, with or
- without modifying it, either commercially or noncommercially.
- Secondarily, this License preserves for the author and publisher a way to
- get credit for their work, while not being considered responsible for
- modifications made by others.
- </p><p>
- This License is a kind of "copyleft", which means that derivative works of
- the document must themselves be free in the same sense. It complements
- the GNU General Public License, which is a copyleft license designed for
- free software.
- </p><p>
- We have designed this License in order to use it for manuals for free
- software, because free software needs free documentation: a free program
- should come with manuals providing the same freedoms that the software
- does. But this License is not limited to software manuals; it can be used
- for any textual work, regardless of subject matter or whether it is
- published as a printed book. We recommend this License principally for
- works whose purpose is instruction or reference.</p><h2><a id="Definitions"></a>
- 1. APPLICABILITY AND DEFINITIONS
- </h2><p>
- This License applies to any manual or other work, in any medium, that
- contains a notice placed by the copyright holder saying it can be
- distributed under the terms of this License. Such a notice grants a
- world-wide, royalty-free license, unlimited in duration, to use that work
- under the conditions stated herein. The "Document", below, refers to any
- such manual or work. Any member of the public is a licensee, and is
- addressed as "you". You accept the license if you copy, modify or
- distribute the work in a way requiring permission under copyright
- law.
- </p><p>
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with modifications
- and/or translated into another language.
- </p><p>
- A "Secondary Section" is a named appendix or a front-matter section of the
- Document that deals exclusively with the relationship of the publishers or
- authors of the Document to the Document's overall subject (or to related
- matters) and contains nothing that could fall directly within that overall
- subject. (Thus, if the Document is in part a textbook of mathematics, a
- Secondary Section may not explain any mathematics.) The relationship
- could be a matter of historical connection with the subject or with
- related matters, or of legal, commercial, philosophical, ethical or
- political position regarding them.
- </p><p>
- The "Invariant Sections" are certain Secondary Sections whose titles are
- designated, as being those of Invariant Sections, in the notice that says
- that the Document is released under this License. If a section does not
- fit the above definition of Secondary then it is not allowed to be
- designated as Invariant. The Document may contain zero Invariant
- Sections. If the Document does not identify any Invariant Sections then
- there are none.
- </p><p>
- The "Cover Texts" are certain short passages of text that are listed, as
- Front-Cover Texts or Back-Cover Texts, in the notice that says that the
- Document is released under this License. A Front-Cover Text may be at
- most 5 words, and a Back-Cover Text may be at most 25 words.
- </p><p>
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the general
- public, that is suitable for revising the document straightforwardly with
- generic text editors or (for images composed of pixels) generic paint
- programs or (for drawings) some widely available drawing editor, and that
- is suitable for input to text formatters or for automatic translation to a
- variety of formats suitable for input to text formatters. A copy made in
- an otherwise Transparent file format whose markup, or absence of markup,
- has been arranged to thwart or discourage subsequent modification by
- readers is not Transparent. An image format is not Transparent if used
- for any substantial amount of text. A copy that is not "Transparent" is
- called "Opaque".
- </p><p>
- Examples of suitable formats for Transparent copies include plain ASCII
- without markup, Texinfo input format, LaTeX input format, SGML or XML
- using a publicly available DTD, and standard-conforming simple HTML,
- PostScript or PDF designed for human modification. Examples of
- transparent image formats include PNG, XCF and JPG. Opaque formats
- include proprietary formats that can be read and edited only by
- proprietary word processors, SGML or XML for which the DTD and/or
- processing tools are not generally available, and the machine-generated
- HTML, PostScript or PDF produced by some word processors for output
- purposes only.
- </p><p>
- The "Title Page" means, for a printed book, the title page itself, plus
- such following pages as are needed to hold, legibly, the material this
- License requires to appear in the title page. For works in formats which
- do not have any title page as such, "Title Page" means the text near the
- most prominent appearance of the work's title, preceding the beginning of
- the body of the text.
- </p><p>
- A section "Entitled XYZ" means a named subunit of the Document whose title
- either is precisely XYZ or contains XYZ in parentheses following text that
- translates XYZ in another language. (Here XYZ stands for a specific
- section name mentioned below, such as "Acknowledgements", "Dedications",
- "Endorsements", or "History".) To "Preserve the Title" of such a section
- when you modify the Document means that it remains a section "Entitled
- XYZ" according to this definition.
- </p><p>
- The Document may include Warranty Disclaimers next to the notice which
- states that this License applies to the Document. These Warranty
- Disclaimers are considered to be included by reference in this License,
- but only as regards disclaiming warranties: any other implication that
- these Warranty Disclaimers may have is void and has no effect on the
- meaning of this License.
- </p><h2><a id="VerbatimCopying"></a>
- 2. VERBATIM COPYING
- </h2><p>
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the copyright
- notices, and the license notice saying this License applies to the
- Document are reproduced in all copies, and that you add no other
- conditions whatsoever to those of this License. You may not use technical
- measures to obstruct or control the reading or further copying of the
- copies you make or distribute. However, you may accept compensation in
- exchange for copies. If you distribute a large enough number of copies
- you must also follow the conditions in section 3.
- </p><p>
- You may also lend copies, under the same conditions stated above, and you
- may publicly display copies.
- </p><h2><a id="QuantityCopying"></a>
- 3. COPYING IN QUANTITY
- </h2><p>
- If you publish printed copies (or copies in media that commonly have
- printed covers) of the Document, numbering more than 100, and the
- Document's license notice requires Cover Texts, you must enclose the
- copies in covers that carry, clearly and legibly, all these Cover Texts:
- Front-Cover Texts on the front cover, and Back-Cover Texts on the back
- cover. Both covers must also clearly and legibly identify you as the
- publisher of these copies. The front cover must present the full title
- with all words of the title equally prominent and visible. You may add
- other material on the covers in addition. Copying with changes limited to
- the covers, as long as they preserve the title of the Document and satisfy
- these conditions, can be treated as verbatim copying in other
- respects.
- </p><p>
- If the required texts for either cover are too voluminous to fit legibly,
- you should put the first ones listed (as many as fit reasonably) on the
- actual cover, and continue the rest onto adjacent pages.
- </p><p>
- If you publish or distribute Opaque copies of the Document numbering more
- than 100, you must either include a machine-readable Transparent copy
- along with each Opaque copy, or state in or with each Opaque copy a
- computer-network location from which the general network-using public has
- access to download using public-standard network protocols a complete
- Transparent copy of the Document, free of added material. If you use the
- latter option, you must take reasonably prudent steps, when you begin
- distribution of Opaque copies in quantity, to ensure that this Transparent
- copy will remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly or
- through your agents or retailers) of that edition to the public.
- </p><p>
- It is requested, but not required, that you contact the authors of the
- Document well before redistributing any large number of copies, to give
- them a chance to provide you with an updated version of the
- Document.
- </p><h2><a id="Modifications"></a>
- 4. MODIFICATIONS
- </h2><p>
- You may copy and distribute a Modified Version of the Document under the
- conditions of sections 2 and 3 above, provided that you release the
- Modified Version under precisely this License, with the Modified Version
- filling the role of the Document, thus licensing distribution and
- modification of the Modified Version to whoever possesses a copy of it.
- In addition, you must do these things in the Modified Version:
- </p><div class="orderedlist"><ol type="A"><li>
- Use in the Title Page (and on the covers, if any) a title distinct
- from that of the Document, and from those of previous versions (which
- should, if there were any, be listed in the History section of the
- Document). You may use the same title as a previous version if the
- original publisher of that version gives permission.
- </li><li>
- List on the Title Page, as authors, one or more persons or entities
- responsible for authorship of the modifications in the Modified
- Version, together with at least five of the principal authors of the
- Document (all of its principal authors, if it has fewer than five),
- unless they release you from this requirement.
- </li><li>
- State on the Title page the name of the publisher of the Modified
- Version, as the publisher.
- </li><li>
- Preserve all the copyright notices of the Document.
- </li><li>
- Add an appropriate copyright notice for your modifications adjacent to
- the other copyright notices.
- </li><li>
- Include, immediately after the copyright notices, a license notice
- giving the public permission to use the Modified Version under the
- terms of this License, in the form shown in the Addendum below.
- </li><li>
- Preserve in that license notice the full lists of Invariant Sections
- and required Cover Texts given in the Document's license notice.
- </li><li>
- Include an unaltered copy of this License.
- </li><li>
- Preserve the section Entitled "History", Preserve its Title, and add
- to it an item stating at least the title, year, new authors, and
- publisher of the Modified Version as given on the Title Page. If
- there is no section Entitled "History" in the Document, create one
- stating the title, year, authors, and publisher of the Document as
- given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
- </li><li>
- Preserve the network location, if any, given in the Document for
- public access to a Transparent copy of the Document, and likewise the
- network locations given in the Document for previous versions it was
- based on. These may be placed in the "History" section. You may omit
- a network location for a work that was published at least four years
- before the Document itself, or if the original publisher of the
- version it refers to gives permission.
- </li><li>
- For any section Entitled "Acknowledgements" or "Dedications", Preserve
- the Title of the section, and preserve in the section all the
- substance and tone of each of the contributor acknowledgements and/or
- dedications given therein.
- </li><li>
- Preserve all the Invariant Sections of the Document, unaltered in
- their text and in their titles. Section numbers or the equivalent are
- not considered part of the section titles.
- </li><li>
- Delete any section Entitled "Endorsements". Such a section may not be
- included in the Modified Version.
- </li><li>
- Do not retitle any existing section to be Entitled "Endorsements" or
- to conflict in title with any Invariant Section.
- </li><li>
- Preserve any Warranty Disclaimers.
- </li></ol></div><p>
- If the Modified Version includes new front-matter sections or appendices
- that qualify as Secondary Sections and contain no material copied from the
- Document, you may at your option designate some or all of these sections
- as invariant. To do this, add their titles to the list of Invariant
- Sections in the Modified Version's license notice. These titles must be
- distinct from any other section titles.
- </p><p>
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various parties--for
- example, statements of peer review or that the text has been approved by
- an organization as the authoritative definition of a standard.
- </p><p>
- You may add a passage of up to five words as a Front-Cover Text, and a
- passage of up to 25 words as a Back-Cover Text, to the end of the list of
- Cover Texts in the Modified Version. Only one passage of Front-Cover Text
- and one of Back-Cover Text may be added by (or through arrangements made
- by) any one entity. If the Document already includes a cover text for the
- same cover, previously added by you or by arrangement made by the same
- entity you are acting on behalf of, you may not add another; but you may
- replace the old one, on explicit permission from the previous publisher
- that added the old one.
- </p><p>
- The author(s) and publisher(s) of the Document do not by this License give
- permission to use their names for publicity for or to assert or imply
- endorsement of any Modified Version.
- </p><h2><a id="Combining"></a>
- 5. COMBINING DOCUMENTS
- </h2><p>
- You may combine the Document with other documents released under this
- License, under the terms defined in section 4 above for modified versions,
- provided that you include in the combination all of the Invariant Sections
- of all of the original documents, unmodified, and list them all as
- Invariant Sections of your combined work in its license notice, and that
- you preserve all their Warranty Disclaimers.
- </p><p>
- The combined work need only contain one copy of this License, and multiple
- identical Invariant Sections may be replaced with a single copy. If there
- are multiple Invariant Sections with the same name but different contents,
- make the title of each such section unique by adding at the end of it, in
- parentheses, the name of the original author or publisher of that section
- if known, or else a unique number. Make the same adjustment to the
- section titles in the list of Invariant Sections in the license notice of
- the combined work.
- </p><p>
- In the combination, you must combine any sections Entitled "History" in
- the various original documents, forming one section Entitled "History";
- likewise combine any sections Entitled "Acknowledgements", and any
- sections Entitled "Dedications". You must delete all sections Entitled
- "Endorsements".
- </p><h2><a id="Collections"></a>
- 6. COLLECTIONS OF DOCUMENTS
- </h2><p>
- You may make a collection consisting of the Document and other documents
- released under this License, and replace the individual copies of this
- License in the various documents with a single copy that is included in
- the collection, provided that you follow the rules of this License for
- verbatim copying of each of the documents in all other respects.
- </p><p>
- You may extract a single document from such a collection, and distribute
- it individually under this License, provided you insert a copy of this
- License into the extracted document, and follow this License in all other
- respects regarding verbatim copying of that document.
- </p><h2><a id="Aggregation"></a>
- 7. AGGREGATION WITH INDEPENDENT WORKS
- </h2><p>
- A compilation of the Document or its derivatives with other separate and
- independent documents or works, in or on a volume of a storage or
- distribution medium, is called an "aggregate" if the copyright resulting
- from the compilation is not used to limit the legal rights of the
- compilation's users beyond what the individual works permit. When the
- Document is included in an aggregate, this License does not apply to the
- other works in the aggregate which are not themselves derivative works of
- the Document.
- </p><p>
- If the Cover Text requirement of section 3 is applicable to these copies
- of the Document, then if the Document is less than one half of the entire
- aggregate, the Document's Cover Texts may be placed on covers that bracket
- the Document within the aggregate, or the electronic equivalent of covers
- if the Document is in electronic form. Otherwise they must appear on
- printed covers that bracket the whole aggregate.
- </p><h2><a id="Translation"></a>
- 8. TRANSLATION
- </h2><p>
- Translation is considered a kind of modification, so you may distribute
- translations of the Document under the terms of section 4. Replacing
- Invariant Sections with translations requires special permission from
- their copyright holders, but you may include translations of some or all
- Invariant Sections in addition to the original versions of these Invariant
- Sections. You may include a translation of this License, and all the
- license notices in the Document, and any Warranty Disclaimers, provided
- that you also include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of this
- License or a notice or disclaimer, the original version will prevail.
- </p><p>
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to Preserve its
- Title (section 1) will typically require changing the actual title.
- </p><h2><a id="Termination"></a>
- 9. TERMINATION
- </h2><p>
- You may not copy, modify, sublicense, or distribute the Document except as
- expressly provided for under this License. Any other attempt to copy,
- modify, sublicense or distribute the Document is void, and will
- automatically terminate your rights under this License. However, parties
- who have received copies, or rights, from you under this License will not
- have their licenses terminated so long as such parties remain in full
- compliance.
- </p><h2><a id="FutureRevisions"></a>
- 10. FUTURE REVISIONS OF THIS LICENSE
- </h2><p>
- The Free Software Foundation may publish new, revised versions of the GNU
- Free Documentation License from time to time. Such new versions will be
- similar in spirit to the present version, but may differ in detail to
- address new problems or concerns. See <a class="ulink" href="http://www.gnu.org/copyleft/" target="_top">http://www.gnu.org/copyleft/</a>.
- </p><p>
- Each version of the License is given a distinguishing version number. If
- the Document specifies that a particular numbered version of this License
- "or any later version" applies to it, you have the option of following the
- terms and conditions either of that specified version or of any later
- version that has been published (not as a draft) by the Free Software
- Foundation. If the Document does not specify a version number of this
- License, you may choose any version ever published (not as a draft) by the
- Free Software Foundation.
- </p><h2><a id="HowToUse"></a>
- ADDENDUM: How to use this License for your documents
- </h2><p>
- To use this License in a document you have written, include a copy of the
- License in the document and put the following copyright and license
- notices just after the title page:
- </p><div class="blockquote"><blockquote class="blockquote"><p>
- Copyright (C) YEAR YOUR NAME.
- </p><p>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2 or
- any later version published by the Free Software Foundation; with no
- Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
- copy of the license is included in the section entitled "GNU Free
- Documentation License".
- </p></blockquote></div><p>
- If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
- replace the "with...Texts." line with this:
- </p><div class="blockquote"><blockquote class="blockquote"><p>
- with the Invariant Sections being LIST THEIR TITLES, with the
- Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
- </p></blockquote></div><p>
- If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
- </p><p>
- If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of free
- software license, such as the GNU General Public License, to permit their
- use in free software.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01apds03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">How to Apply These Terms to Your New Programs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01.html
deleted file mode 100644
index 60abfa4..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01.html
+++ /dev/null
@@ -1,6131 +0,0 @@
-<?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>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="bk01pt01ch01s02.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.standard"></a>Implementation Status</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.1998"></a>C++ 1998</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998"></a>Checklist</h4></div></div></div><div class="literallayout"><p><br />
-   Completion Checklist for the Standard C++ Library<br />
-   Updated: 2003-04-25<br />
-<br />
-   Status Code Legend:<br />
-    M - Missing<br />
-    S - Present as stub.<br />
-    X - Partially implemented, or buggy.<br />
-    T - Implemented, pending test/inspection.<br />
-    V - Verified to pass all available test suites.<br />
-    Q - Qualified by inspection for non-testable correctness.<br />
-    P - Portability verified.<br />
-    C - Certified.<br />
-<br />
-   Lexical notes:<br />
-   Only status codes appear in column 0.  Notes relating to conformance<br />
-   issues appear [in brackets].<br />
-<br />
-   Note that this checklist does not (yet) include all emendations<br />
-   recommended by the ISO Library Working Group:<br />
-   http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html<br />
-<br />
-   Detailed explanation of status codes:<br />
-<br />
-    M - Missing:  The name is not visible to programs that include<br />
-        the specified header, either at compile or link stage.<br />
-<br />
-    S - Present as stub:  A program can use the name, but no implementation<br />
-        is provided.  Programs that use the name link correctly, but<br />
-        cannot usefully be run.<br />
-<br />
-    X - Partially implemented, or buggy:  Some implementation has been<br />
-        provided, but it is known or believed not to conform fully.<br />
-        It may have an incorrect base class, wrong namespace, wrong<br />
-        storage class, or simply not fully implement requirements.<br />
-        However, it may be sufficiently usable to help test other<br />
-        components.<br />
-<br />
-    T - Implemented, pending test/inspection:  Implementation believed<br />
-        to be complete, and informal testing suggests it is ready for<br />
-        formal verification.<br />
-<br />
-    V - Verified, passes all test suites:  Verified to satisfy all<br />
-        generically testable conformance requirements.<br />
-<br />
-    Q - Qualified by inspection for non-testable correctness:<br />
-        Inspected, "implementation-defined" documentation accepted,<br />
-        local usability criteria satisfied, formally inspected for<br />
-        other untestable conformance.  (Untestable requirements<br />
-        include exception-safety, thread-safety, worst-case<br />
-        complexity, memory cleanliness, usefulness.)<br />
-<br />
-    P - Portability verified:  Qualified on all primary target platforms.<br />
-<br />
-    C - Certified:  Formally certified to have passed all tests,<br />
-        inspections, qualifications; approved under "signing authority"<br />
-        to be used to satisfy contractual guarantees.<br />
-<br />
-   ----------------------------------------------------------------------<br />
-       &lt;algorithm&gt;    &lt;iomanip&gt;    &lt;list&gt;      &lt;ostream&gt;     &lt;streambuf&gt;<br />
-       &lt;bitset&gt;       &lt;ios&gt;        &lt;locale&gt;    &lt;queue&gt;       &lt;string&gt;<br />
-       &lt;complex&gt;      &lt;iosfwd&gt;     &lt;map&gt;       &lt;set&gt;         &lt;typeinfo&gt;<br />
-X      &lt;deque&gt;        &lt;iostream&gt;   &lt;memory&gt;    &lt;sstream&gt;     &lt;utility&gt;<br />
-       &lt;exception&gt;    &lt;istream&gt;    &lt;new&gt;       &lt;stack&gt;       &lt;valarray&gt;<br />
-       &lt;fstream&gt;      &lt;iterator&gt;   &lt;numeric&gt;   &lt;stdexcept&gt;   &lt;vector&gt;<br />
-       &lt;functional&gt;   &lt;limits&gt;<br />
-<br />
-   [C header names must be in std:: to qualify.  Related to shadow/ dir.]<br />
-           &lt;cassert&gt; &lt;ciso646&gt; &lt;csetjmp&gt; &lt;cstdio&gt;  &lt;ctime&gt;<br />
-           &lt;cctype&gt;  &lt;climits&gt; &lt;csignal&gt; &lt;cstdlib&gt; &lt;cwchar&gt;<br />
-X          &lt;cerrno&gt;  &lt;clocale&gt; &lt;cstdarg&gt; &lt;cstring&gt; &lt;cwctype&gt;<br />
-           &lt;cfloat&gt;  &lt;cmath&gt;   &lt;cstddef&gt;<br />
-<br />
-    Macro:<br />
-X   errno,  declared  or  defined in &lt;cerrno&gt;.<br />
-<br />
-    Macro fn:<br />
-X   setjmp(jmp_buf), declared or defined in &lt;csetjmp&gt;<br />
-X   va_end(va_list), declared or defined in &lt;cstdarg&gt;<br />
-<br />
-    Types:<br />
-X   clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t,<br />
-X   ptrdiff_t, sig_atomic_t, size_t,  time_t,  tm,  va_list,<br />
-X   wctrans_t, wctype_t, and wint_t.<br />
-<br />
-   1 Which  of  the functions in the C++ Standard Library are not reentrant<br />
-    subroutines is implementation-defined.<br />
-<br />
-   18.1  Types                                        [lib.support.types]<br />
-X      &lt;cstddef&gt;<br />
-X      NULL<br />
-X      offsetof<br />
-X      ptrdiff_t<br />
-X      size_t<br />
-<br />
-   18.2  Implementation properties                   [lib.support.limits]<br />
-<br />
-    &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;<br />
-<br />
-   18.2.1  Numeric limits                                    [lib.limits]<br />
-<br />
-X   template&lt;class T&gt; class numeric_limits;<br />
-<br />
-T   enum float_round_style;<br />
-T   enum float_denorm_style;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;bool&gt;;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;signed char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned char&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;wchar_t&gt;;<br />
-<br />
-T   template&lt;&gt; class numeric_limits&lt;short&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;int&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;long&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned short&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned int&gt;;<br />
-T   template&lt;&gt; class numeric_limits&lt;unsigned long&gt;;<br />
-<br />
-X   template&lt;&gt; class numeric_limits&lt;float&gt;;<br />
-X   template&lt;&gt; class numeric_limits&lt;double&gt;;<br />
-X   template&lt;&gt; class numeric_limits&lt;long double&gt;;<br />
-<br />
-   18.2.1.1  Template class numeric_limits           [lib.numeric.limits]<br />
-T   template&lt;class T&gt; class numeric_limits {<br />
-    public:<br />
-T     static const bool is_specialized = false;<br />
-T     static T min() throw();<br />
-T     static T max() throw();<br />
-T     static const int  digits = 0;<br />
-T     static const int  digits10 = 0;<br />
-T     static const bool is_signed = false;<br />
-T     static const bool is_integer = false;<br />
-T     static const bool is_exact = false;<br />
-T     static const int  radix = 0;<br />
-T     static T epsilon() throw();<br />
-T     static T round_error() throw();<br />
-<br />
-T     static const int  min_exponent = 0;<br />
-T     static const int  min_exponent10 = 0;<br />
-T     static const int  max_exponent = 0;<br />
-T     static const int  max_exponent10 = 0;<br />
-<br />
-T     static const bool has_infinity = false;<br />
-T     static const bool has_quiet_NaN = false;<br />
-T     static const bool has_signaling_NaN = false;<br />
-T     static const float_denorm_style has_denorm = denorm_absent;<br />
-T     static const bool has_denorm_loss = false;<br />
-T     static T infinity() throw();<br />
-T     static T quiet_NaN() throw();<br />
-T     static T signaling_NaN() throw();<br />
-T     static T denorm_min() throw();<br />
-<br />
-T     static const bool is_iec559 = false;<br />
-T     static const bool is_bounded = false;<br />
-T     static const bool is_modulo = false;<br />
-<br />
-T     static const bool traps = false;<br />
-T     static const bool tinyness_before = false;<br />
-T     static const float_round_style round_style = round_toward_zero;<br />
-    };<br />
-<br />
-   18.2.1.3  Type float_round_style                     [lib.round.style]<br />
-<br />
-T   enum float_round_style {<br />
-T     round_indeterminate       = -1,<br />
-T     round_toward_zero         =  0,<br />
-T     round_to_nearest          =  1,<br />
-T     round_toward_infinity     =  2,<br />
-T     round_toward_neg_infinity =  3<br />
-    };<br />
-<br />
-   18.2.1.4  Type float_denorm_style                   [lib.denorm.style]<br />
-<br />
-T   enum float_denorm_style {<br />
-T     denorm_indeterminate = -1;<br />
-T     denorm_absent = 0;<br />
-T     denorm present = 1;<br />
-    };<br />
-<br />
-   18.2.1.5  numeric_limits specializations         [lib.numeric.special]<br />
-   <br />
-   [Note: see Note at 18.2.1.  ]<br />
-<br />
-   18.2.2  C Library                                       [lib.c.limits]<br />
-<br />
-   1 Header &lt;climits&gt; (Table 3):<br />
-      CHAR_BIT   INT_MAX    LONG_MIN     SCHAR_MIN   UCHAR_MAX   USHRT_MAX<br />
-X     CHAR_MAX   INT_MIN    MB_LEN_MAX   SHRT_MAX    UINT_MAX<br />
-      CHAR_MIN   LONG_MAX   SCHAR_MAX    SHRT_MIN    ULONG_MAX<br />
-<br />
-   3 Header &lt;cfloat&gt; (Table 4):<br />
-<br />
-    DBL_DIG          DBL_MIN_EXP      FLT_MIN_10_EXP   LDBL_MAX_10_EXP<br />
-    DBL_EPSILON      FLT_DIG          FLT_MIN_EXP      LDBL_MAX_EXP<br />
-    DBL_MANT_DIG     FLT_EPSILON      FLT_RADIX        LDBL_MIN<br />
-X   DBL_MAX          FLT_MANT_DIG     FLT_ROUNDS       LDBL_MIN_10_EXP<br />
-    DBL_MAX_10_EXP   FLT_MAX          LDBL_DIG         LDBL_MIN_EXP<br />
-    DBL_MAX_EXP      FLT_MAX_10_EXP   LDBL_EPSILON<br />
-    DBL_MIN          FLT_MAX_EXP      LDBL_MANT_DIG<br />
-    DBL_MIN_10_EXP   FLT_MIN          LDBL_MAX<br />
-<br />
-<br />
-        1 Header &lt;cstdlib&gt; (partial), Table 5:<br />
-X             EXIT_FAILURE     EXIT_SUCCESS<br />
-              abort   atexit   exit<br />
-<br />
-S    abort(void)<br />
-S    extern "C" int atexit(void (*f)(void))<br />
-S    extern "C++" int atexit(void (*f)(void))<br />
-S    exit(int status)<br />
-<br />
-   18.4  Dynamic memory management                  [lib.support.dynamic]<br />
-<br />
-   Header &lt;new&gt; synopsis<br />
-<br />
-T    class bad_alloc;<br />
-T    struct nothrow_t {};<br />
-T    extern const nothrow_t nothrow;<br />
-T    typedef void (*new_handler)();<br />
-T    new_handler set_new_handler(new_handler new_p) throw();<br />
-<br />
-T    void* operator new(std::size_t size) throw(std::bad_alloc);<br />
-T    void* operator new(std::size_t size, const std::nothrow_t&amp;) throw();<br />
-T    void  operator delete(void* ptr) throw();<br />
-T    void  operator delete(void* ptr, const std::nothrow_t&amp;) throw();<br />
-T    void* operator new[](std::size_t size) throw(std::bad_alloc);<br />
-T    void* operator new[](std::size_t size, const std::nothrow_t&amp;) throw();<br />
-T    void  operator delete[](void* ptr) throw();<br />
-T    void  operator delete[](void* ptr, const std::nothrow_t&amp;) throw();<br />
-T    void* operator new  (std::size_t size, void* ptr) throw();<br />
-T    void* operator new[](std::size_t size, void* ptr) throw();<br />
-T    void  operator delete  (void* ptr, void*) throw();<br />
-T    void  operator delete[](void* ptr, void*) throw();<br />
-<br />
-   18.4.2.1  Class bad_alloc                              [lib.bad.alloc]<br />
-<br />
-T   class bad_alloc : public exception {<br />
-    public:<br />
-T     bad_alloc() throw();<br />
-T     bad_alloc(const bad_alloc&amp;) throw();<br />
-T     bad_alloc&amp; operator=(const bad_alloc&amp;) throw();<br />
-T     virtual ~bad_alloc() throw();<br />
-T     virtual const char* what() const throw();<br />
-<br />
-<br />
-<br />
-T  new_handler set_new_handler(new_handler new_p) throw();<br />
-<br />
-<br />
-     Header &lt;typeinfo&gt; synopsis<br />
-<br />
-T    class type_info;<br />
-T    class bad_cast;<br />
-T    class bad_typeid;<br />
-<br />
-   18.5.1 - Class type_info [lib.type.info]<br />
-<br />
-T    class type_info {<br />
-    public:<br />
-T      virtual ~type_info();<br />
-T      bool operator==(const type_info&amp; rhs) const;<br />
-T      bool operator!=(const type_info&amp; rhs) const;<br />
-T      bool before(const type_info&amp; rhs) const;<br />
-T      const char* name() const;<br />
-    private:<br />
-T      type_info(const type_info&amp; rhs);<br />
-T      type_info&amp; operator=(const type_info&amp; rhs);<br />
-    };<br />
-<br />
-   18.5.2 - Class bad_cast [lib.bad.cast]<br />
-<br />
-T  bad_cast() throw();<br />
-T  virtual const char* bad_cast::what() const throw();<br />
-<br />
-   18.5.3  Class bad_typeid                              [lib.bad.typeid]<br />
-<br />
-T    class bad_typeid : public exception {<br />
-    public:<br />
-T      bad_typeid() throw();<br />
-T      bad_typeid(const bad_typeid&amp;) throw();<br />
-T      bad_typeid&amp; operator=(const bad_typeid&amp;) throw();<br />
-T      virtual ~bad_typeid() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.6  Exception handling                       [lib.support.exception]<br />
-<br />
-T      Header &lt;exception&gt; synopsis<br />
-<br />
-T    class exception;<br />
-T    class bad_exception;<br />
-<br />
-T    typedef void (*unexpected_handler)();<br />
-T    unexpected_handler set_unexpected(unexpected_handler f) throw();<br />
-T    void unexpected();<br />
-T    typedef void (*terminate_handler)();<br />
-T    terminate_handler set_terminate(terminate_handler f) throw();<br />
-T    void terminate();<br />
-T    bool uncaught_exception();<br />
-<br />
-   18.6.1  Class exception                                [lib.exception]<br />
-<br />
-T    class exception {<br />
-     public:<br />
-T      exception() throw();<br />
-T      exception(const exception&amp;) throw();<br />
-T      exception&amp; operator=(const exception&amp;) throw();<br />
-T      virtual ~exception() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.6.2.1  Class bad_exception                      [lib.bad.exception]<br />
-T    class bad_exception : public exception {<br />
-    public:<br />
-T      bad_exception() throw();<br />
-T      bad_exception(const bad_exception&amp;) throw();<br />
-T      bad_exception&amp; operator=(const bad_exception&amp;) throw();<br />
-T      virtual ~bad_exception() throw();<br />
-T      virtual const char* what() const throw();<br />
-    };<br />
-<br />
-   18.7  Other runtime support                      [lib.support.runtime]<br />
-<br />
-   1 Headers &lt;cstdarg&gt; (variable arguments),  &lt;csetjmp&gt;  (nonlocal  jumps),<br />
-    &lt;ctime&gt;  (system  clock clock(), time()), &lt;csignal&gt; (signal handling),<br />
-    and &lt;cstdlib&gt; (runtime environment getenv(), system()).<br />
-<br />
-                    Table 6--Header &lt;cstdarg&gt; synopsis<br />
-                 Macros:   va_arg    va_end   va_start<br />
-X                Type:     va_list<br />
-<br />
-                    Table 7--Header &lt;csetjmp&gt; synopsis<br />
-<br />
-                          Macro:      setjmp |<br />
-X                         Type:       jmp_buf<br />
-                          Function:   longjmp<br />
-<br />
-                     Table 8--Header &lt;ctime&gt; synopsis<br />
-<br />
-                      Macros:      CLOCKS_PER_SEC<br />
-X                     Types:       clock_t<br />
-                      Functions:   clock<br />
-<br />
-                    Table 9--Header &lt;csignal&gt; synopsis<br />
-<br />
-X        Macros:      SIGABRT        SIGILL   SIGSEGV   SIG_DFL<br />
-         SIG_IGN      SIGFPE         SIGINT   SIGTERM   SIG_ERR<br />
-         Type:        sig_atomic_t<br />
-         Functions:   raise          signal<br />
-<br />
-                   Table 10--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-X                     Functions:   getenv   system<br />
-<br />
-   19.1  Exception classes                           [lib.std.exceptions]<br />
-<br />
-   Header &lt;stdexcept&gt; synopsis<br />
-<br />
-T     class logic_error;<br />
-T     class domain_error;<br />
-T     class invalid_argument;<br />
-T     class length_error;<br />
-T     class out_of_range;<br />
-T     class runtime_error;<br />
-T     class range_error;<br />
-T     class overflow_error;<br />
-T     class underflow_error;<br />
-<br />
-   19.1.1  Class logic_error                            [lib.logic.error]<br />
-T   class logic_error : public exception {<br />
-    public:<br />
-T     explicit logic_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.2  Class domain_error                          [lib.domain.error]<br />
-<br />
-T   class domain_error : public logic_error {<br />
-    public:<br />
-T     explicit domain_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.3  Class invalid_argument                  [lib.invalid.argument]<br />
-<br />
-T   class invalid_argument : public logic_error {<br />
-    public:<br />
-T     explicit invalid_argument(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.4  Class length_error                          [lib.length.error]<br />
-<br />
-T   class length_error : public logic_error {<br />
-    public:<br />
-T     explicit length_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.5  Class out_of_range                          [lib.out.of.range]<br />
-<br />
-T   class out_of_range : public logic_error {<br />
-    public:<br />
-T     explicit out_of_range(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.6  Class runtime_error                        [lib.runtime.error]<br />
-<br />
-T   class runtime_error : public exception {<br />
-    public:<br />
-T     explicit runtime_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.7  Class range_error                            [lib.range.error]<br />
-<br />
-T   class range_error : public runtime_error {<br />
-    public:<br />
-T     explicit range_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-   19.1.8  Class overflow_error                      [lib.overflow.error]<br />
-<br />
-T   class overflow_error : public runtime_error {<br />
-    public:<br />
-T     explicit overflow_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.1.9  Class underflow_error                    [lib.underflow.error]<br />
-<br />
-T   class underflow_error : public runtime_error {<br />
-    public:<br />
-T     explicit underflow_error(const string&amp; what_arg);<br />
-    };<br />
-<br />
-<br />
-   19.2  Assertions                                      [lib.assertions]<br />
-<br />
-                    Table 2--Header &lt;cassert&gt; synopsis<br />
-<br />
-X                         Macro:   assert<br />
-<br />
-   19.3  Error numbers                                        [lib.errno]<br />
-<br />
-                    Table 3--Header &lt;cerrno&gt; synopsis<br />
-<br />
-X                    |Macros:   EDOM   ERANGE   errno |<br />
-<br />
-<br />
-   20.2  Utility components                                 [lib.utility]<br />
-<br />
-   Header &lt;utility&gt; synopsis<br />
-<br />
-    // _lib.operators_, operators:<br />
-T    namespace rel_ops {<br />
-T      template&lt;class T&gt; bool operator!=(const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&gt; (const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&lt;=(const T&amp;, const T&amp;);<br />
-T      template&lt;class T&gt; bool operator&gt;=(const T&amp;, const T&amp;);<br />
-    }<br />
-    // _lib.pairs_, pairs:<br />
-T   template &lt;class T1, class T2&gt; struct pair;<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator==(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&lt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator!=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&gt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&gt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt;<br />
-      bool operator&lt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
-T   template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(const T1&amp;, const T2&amp;);<br />
-<br />
-<br />
-   20.2.2  Pairs                                              [lib.pairs]<br />
-<br />
-T  template &lt;class T1, class T2&gt;<br />
-   struct pair {<br />
-T    typedef T1 first_type;<br />
-T    typedef T2 second_type;<br />
-<br />
-T    T1 first;<br />
-T    T2 second;<br />
-T    pair();<br />
-T    pair(const T1&amp; x, const T2&amp; y);<br />
-T    template&lt;class U, class V&gt; pair(const pair&lt;U, V&gt; &amp;p);<br />
-   };<br />
-<br />
-   20.3  Function objects                          [lib.function.objects]<br />
-<br />
-   Header &lt;functional&gt; synopsis<br />
-<br />
-    // _lib.base_, base:<br />
-V   template &lt;class Arg, class Result&gt; struct unary_function;<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt; struct binary_function;<br />
-<br />
-    // _lib.arithmetic.operations_, arithmetic operations:<br />
-V   template &lt;class T&gt; struct plus;<br />
-V   template &lt;class T&gt; struct minus;<br />
-V   template &lt;class T&gt; struct multiplies;<br />
-V   template &lt;class T&gt; struct divides;<br />
-V   template &lt;class T&gt; struct modulus;<br />
-V   template &lt;class T&gt; struct negate;<br />
-    // _lib.comparisons_, comparisons:<br />
-V   template &lt;class T&gt; struct equal_to;<br />
-V   template &lt;class T&gt; struct not_equal_to;<br />
-V   template &lt;class T&gt; struct greater;<br />
-V   template &lt;class T&gt; struct less;<br />
-V   template &lt;class T&gt; struct greater_equal;<br />
-V   template &lt;class T&gt; struct less_equal;<br />
-    // _lib.logical.operations_, logical operations:<br />
-V   template &lt;class T&gt; struct logical_and;<br />
-V   template &lt;class T&gt; struct logical_or;<br />
-V   template &lt;class T&gt; struct logical_not;<br />
-    // _lib.negators_, negators:<br />
-    template &lt;class Predicate&gt; struct unary_negate;<br />
-V   template &lt;class Predicate&gt;<br />
-      unary_negate&lt;Predicate&gt;  not1(const Predicate&amp;);<br />
-V   template &lt;class Predicate&gt; struct binary_negate;<br />
-V   template &lt;class Predicate&gt;<br />
-      binary_negate&lt;Predicate&gt; not2(const Predicate&amp;);<br />
-    // _lib.binders_, binders:<br />
-V   template &lt;class Operation&gt;  class binder1st;<br />
-V   template &lt;class Operation, class T&gt;<br />
-      binder1st&lt;Operation&gt; bind1st(const Operation&amp;, const T&amp;);<br />
-V   template &lt;class Operation&gt; class binder2nd;<br />
-V   template &lt;class Operation, class T&gt;<br />
-      binder2nd&lt;Operation&gt; bind2nd(const Operation&amp;, const T&amp;);<br />
-    // _lib.function.pointer.adaptors_, adaptors:<br />
-V   template &lt;class Arg, class Result&gt; class pointer_to_unary_function;<br />
-V   template &lt;class Arg, class Result&gt;<br />
-      pointer_to_unary_function&lt;Arg,Result&gt; ptr_fun(Result (*)(Arg));<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-      class pointer_to_binary_function;<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-      pointer_to_binary_function&lt;Arg1,Arg2,Result&gt;<br />
-        ptr_fun(Result (*)(Arg1,Arg2));<br />
-<br />
-    // _lib.member.pointer.adaptors_, adaptors:<br />
-V   template&lt;class S, class T&gt; class mem_fun_t;<br />
-V   template&lt;class S, class T, class A&gt; class mem_fun1_t;<br />
-V   template&lt;class S, class T&gt;<br />
-        mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt;<br />
-        mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A));<br />
-V   template&lt;class S, class T&gt; class mem_fun_ref_t;<br />
-V   template&lt;class S, class T, class A&gt; class mem_fun1_ref_t;<br />
-V   template&lt;class S, class T&gt;<br />
-        mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt;<br />
-        mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A));<br />
-<br />
-V   template &lt;class S, class T&gt; class const_mem_fun_t;<br />
-V   template &lt;class S, class T, class A&gt; class const_mem_fun1_t;<br />
-V   template &lt;class S, class T&gt;<br />
-      const_mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)() const);<br />
-V   template &lt;class S, class T, class A&gt;<br />
-      const_mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A) const);<br />
-V   template &lt;class S, class T&gt; class const_mem_fun_ref_t;<br />
-V   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t;<br />
-V   template &lt;class S, class T&gt;<br />
-      const_mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)() const);<br />
-V   template &lt;class S, class T, class A&gt;<br />
-      const_mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A) const);<br />
-   }<br />
-<br />
-   20.3.1  Base                                                [lib.base]<br />
-<br />
-V   template &lt;class Arg, class Result&gt;<br />
-    struct unary_function {<br />
-V     typedef Arg    argument_type;<br />
-V     typedef Result result_type;<br />
-    };<br />
-V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
-    struct binary_function {<br />
-V     typedef Arg1   first_argument_type;<br />
-V     typedef Arg2   second_argument_type;<br />
-V     typedef Result result_type;<br />
-    };<br />
-<br />
-   20.3.2  Arithmetic operations              [lib.arithmetic.operations]<br />
-<br />
-T  template &lt;class T&gt; struct plus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct minus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct multiplies : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct divides : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct modulus : binary_function&lt;T,T,T&gt; {<br />
-V   T operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct negate : unary_function&lt;T,T&gt; {<br />
-V   T operator()(const T&amp; x) const;<br />
-   };<br />
-<br />
-   20.3.3  Comparisons                                  [lib.comparisons]<br />
-<br />
-T  template &lt;class T&gt; struct equal_to : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct not_equal_to : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct greater : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct less : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct greater_equal : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct less_equal : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-   20.3.4  Logical operations                    [lib.logical.operations]<br />
-<br />
-T  template &lt;class T&gt; struct logical_and : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct logical_or : binary_function&lt;T,T,bool&gt; {<br />
-V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
-   };<br />
-<br />
-T  template &lt;class T&gt; struct logical_not : unary_function&lt;T,bool&gt; {<br />
-V   bool operator()(const T&amp; x) const;<br />
-   };<br />
-<br />
-   20.3.5  Negators                                        [lib.negators]<br />
-<br />
-T  template &lt;class Predicate&gt;<br />
-    class unary_negate<br />
-      : public unary_function&lt;typename Predicate::argument_type,bool&gt; {<br />
-   public:<br />
-T   explicit unary_negate(const Predicate&amp; pred);<br />
-V   bool operator()(const typename Predicate::argument_type&amp; x) const;<br />
-   };<br />
-<br />
-T  template &lt;class Predicate&gt;<br />
-    class binary_negate<br />
-      : public binary_function&lt;typename Predicate::first_argument_type,<br />
-          typename Predicate::second_argument_type, bool&gt; {<br />
-    public:<br />
-T     explicit binary_negate(const Predicate&amp; pred);<br />
-V     bool operator()(const typename Predicate::first_argument_type&amp;  x,<br />
-          const typename Predicate::second_argument_type&amp; y) const;<br />
-    };<br />
-<br />
-<br />
-   20.3.6  Binders                                          [lib.binders]<br />
-<br />
-   20.3.6.1  Template class binder1st                    [lib.binder.1st]<br />
-T   template &lt;class Operation&gt;<br />
-    class binder1st<br />
-      : public unary_function&lt;typename Operation::second_argument_type,<br />
-                              typename Operation::result_type&gt; {<br />
-    protected:<br />
-T     Operation                      op;<br />
-T     typename Operation::first_argument_type value;<br />
-    public:<br />
-V     binder1st(const Operation&amp; x,<br />
-                const typename Operation::first_argument_type&amp; y);<br />
-V     typename Operation::result_type<br />
-        operator()(const typename Operation::second_argument_type&amp; x) const;<br />
-    };<br />
-<br />
-   20.3.6.2  bind1st                                       [lib.bind.1st]<br />
-<br />
-V  template &lt;class Operation, class T&gt;<br />
-    binder1st&lt;Operation&gt; bind1st(const Operation&amp; op, const T&amp; x);<br />
-<br />
-   20.3.6.3  Template class binder2nd                    [lib.binder.2nd]<br />
-T   template &lt;class Operation&gt;<br />
-    class binder2nd<br />
-      : public unary_function&lt;typename Operation::first_argument_type,<br />
-                              typename Operation::result_type&gt; {<br />
-    protected:<br />
-T     Operation                       op;<br />
-T     typename Operation::second_argument_type value;<br />
-    public:<br />
-V     binder2nd(const Operation&amp; x,<br />
-                const typename Operation::second_argument_type&amp; y);<br />
-V     typename Operation::result_type<br />
-        operator()(const typename Operation::first_argument_type&amp; x) const;<br />
-    };<br />
-<br />
-   20.3.6.4  bind2nd                                       [lib.bind.2nd]<br />
-<br />
-T  template &lt;class Operation, class T&gt;<br />
-    binder2nd&lt;Operation&gt; bind2nd(const Operation&amp; op, const T&amp; x);<br />
-<br />
-<br />
-   20.3.7  Adaptors for pointers to       [lib.function.pointer.adaptors]<br />
-       functions<br />
-<br />
-   1 To  allow  pointers to (unary and binary) functions to work with func-<br />
-   tion adaptors the library provides:<br />
-<br />
-T   template &lt;class Arg, class Result&gt;<br />
-    class pointer_to_unary_function : public unary_function&lt;Arg, Result&gt; {<br />
-    public:<br />
-T     explicit pointer_to_unary_function(Result (*f)(Arg));<br />
-V     Result operator()(Arg x) const;<br />
-    };<br />
-<br />
-T  template &lt;class Arg, class Result&gt;<br />
-    pointer_to_unary_function&lt;Arg, Result&gt; ptr_fun(Result (*f)(Arg));<br />
-<br />
-T       template &lt;class Arg1, class Arg2, class Result&gt;<br />
-        class pointer_to_binary_function :<br />
-          public binary_function&lt;Arg1,Arg2,Result&gt; {<br />
-        public:<br />
-T         explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));<br />
-V         Result operator()(Arg1 x, Arg2 y) const;<br />
-        };<br />
-<br />
-<br />
-   20.3.8  Adaptors for pointers to         [lib.member.pointer.adaptors]<br />
-       members<br />
-<br />
-T  template &lt;class S, class T&gt; class mem_fun_t<br />
-          : public unary_function&lt;T*, S&gt; {<br />
-   public:<br />
-T   explicit mem_fun_t(S (T::*p)());<br />
-V   S operator()(T* p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class mem_fun1_t<br />
-          : public binary_function&lt;T*, A, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun1_t(S (T::*p)(A));<br />
-V     S operator()(T* p, A x) const;<br />
-   };<br />
-<br />
-V   template&lt;class S, class T&gt; mem_fun_t&lt;S,T&gt;<br />
-       mem_fun(S (T::*f)());<br />
-V   template&lt;class S, class T, class A&gt; mem_fun1_t&lt;S,T,A&gt;<br />
-       mem_fun(S (T::*f)(A));<br />
-<br />
-T   template &lt;class S, class T&gt; class mem_fun_ref_t<br />
-          : public unary_function&lt;T, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun_ref_t(S (T::*p)());<br />
-V     S operator()(T&amp; p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class mem_fun1_ref_t<br />
-          : public binary_function&lt;T, A, S&gt; {<br />
-    public:<br />
-T     explicit mem_fun1_ref_t(S (T::*p)(A));<br />
-V     S operator()(T&amp; p, A x) const;<br />
-   };<br />
-<br />
-T   template&lt;class S, class T&gt; mem_fun_ref_t&lt;S,T&gt;<br />
-       mem_fun_ref(S (T::*f)());<br />
-<br />
-T   template&lt;class S, class T, class A&gt; mem_fun1_ref_t&lt;S,T,A&gt;<br />
-       mem_fun_ref(S (T::*f)(A));<br />
-<br />
-T  template &lt;class S, class T&gt; class const_mem_fun_t<br />
-        : public unary_function&lt;T*, S&gt; {<br />
-   public:<br />
-T   explicit const_mem_fun_t(S (T::*p)() const);<br />
-V   S operator()(const T* p) const;<br />
-   };<br />
-<br />
-T  template &lt;class S, class T, class A&gt; class const_mem_fun1_t<br />
-        : public binary_function&lt;T*, A, S&gt; {<br />
-   public:<br />
-T   explicit const mem_fun1_t(S (T::*p)(A) const);<br />
-V   S operator()(const T* p, A x) const;<br />
-   };<br />
-<br />
-V   template&lt;class S, class T&gt; const_mem_fun_t&lt;S,T&gt;<br />
-       mem_fun(S (T::*f)() const);<br />
-V   template&lt;class S, class T, class A&gt; const_mem_fun1_t&lt;S,T,A&gt;<br />
-       mem_fun(S (T::*f)(A) const);<br />
-<br />
-T   template &lt;class S, class T&gt; class const_mem_fun_ref_t<br />
-          : public unary_function&lt;T, S&gt; {<br />
-    public:<br />
-T     explicit const_mem_fun_ref_t(S (T::*p)() const);<br />
-V     S operator()(const T&amp; p) const;<br />
-   };<br />
-<br />
-T   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t<br />
-          : public binary_function&lt;T, A, S&gt; {<br />
-    public:<br />
-T     explicit const_mem_fun1_ref_t(S (T::*p)(A) const);<br />
-V     S operator()(const T&amp; p, A x) const;<br />
-   };<br />
-<br />
-T   template&lt;class S, class T&gt; const_mem_fun_ref_t&lt;S,T&gt;<br />
-       mem_fun_ref(S (T::*f)() const);<br />
-<br />
-T   template&lt;class S, class T, class A&gt; const_mem_fun1_ref_t&lt;S,T,A&gt;<br />
-        mem_fun_ref(S (T::*f)(A) const);<br />
-<br />
-   20.4  Memory                                              [lib.memory]<br />
-<br />
-   Header &lt;memory&gt; synopsis<br />
-<br />
-    // _lib.default.allocator_, the default allocator:<br />
-T   template &lt;class T&gt; class allocator;<br />
-T   template &lt;&gt; class allocator&lt;void&gt;;<br />
-T   template &lt;class T, class U&gt;<br />
-      bool operator==(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
-T   template &lt;class T, class U&gt;<br />
-      bool operator!=(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
-    // _lib.storage.iterator_, raw storage iterator:<br />
-T   template &lt;class OutputIterator, class T&gt; class raw_storage_iterator;<br />
-    // _lib.temporary.buffer_, temporary buffers:<br />
-T   template &lt;class T&gt;<br />
-      pair&lt;T*,ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
-T   template &lt;class T&gt;<br />
-      void return_temporary_buffer(T* p);<br />
-    // _lib.specialized.algorithms_, specialized algorithms:<br />
-T   template &lt;class InputIterator, class ForwardIterator&gt;<br />
-      ForwardIterator<br />
-        uninitialized_copy(InputIterator first, InputIterator last,<br />
-                           ForwardIterator result);<br />
-T   template &lt;class ForwardIterator, class T&gt;<br />
-      void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
-                              const T&amp; x);<br />
-T   template &lt;class ForwardIterator, class Size, class T&gt;<br />
-      void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
-    // _lib.auto.ptr_, pointers:<br />
-X   template&lt;class X&gt; class auto_ptr;<br />
-   }<br />
-<br />
-   20.4.1  The default allocator                  [lib.default.allocator]<br />
-<br />
-T   template &lt;class T&gt; class allocator;<br />
-    // specialize for void:<br />
-T   template &lt;&gt; class allocator&lt;void&gt; {<br />
-    public:<br />
-T     typedef void*       pointer;<br />
-T     typedef const void* const_pointer;<br />
-      // reference-to-void members are impossible.<br />
-T     typedef void  value_type;<br />
-T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
-    };<br />
-<br />
-T   template &lt;class T&gt; class allocator {<br />
-     public:<br />
-T     typedef size_t    size_type;<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T*        pointer;<br />
-T     typedef const T*  const_pointer;<br />
-T     typedef T&amp;        reference;<br />
-T     typedef const T&amp;  const_reference;<br />
-T     typedef T         value_type;<br />
-T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
-T     allocator() throw();<br />
-T     allocator(const allocator&amp;) throw();<br />
-T     template &lt;class U&gt; allocator(const allocator&lt;U&gt;&amp;) throw();<br />
-T    ~allocator() throw();<br />
-T     pointer address(reference x) const;<br />
-T     const_pointer address(const_reference x) const;<br />
-T     pointer allocate(<br />
-        size_type, allocator&lt;void&gt;::const_pointer hint = 0);<br />
-T     void deallocate(pointer p, size_type n);<br />
-T     size_type max_size() const throw();<br />
-T     void construct(pointer p, const T&amp; val);<br />
-T     void destroy(pointer p);<br />
-    };<br />
-<br />
-   20.4.1.2  allocator globals                    [lib.allocator.globals]<br />
-<br />
-T  template &lt;class T1, class T2&gt;<br />
-    bool operator==(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
-T  template &lt;class T1, class T2&gt;<br />
-    bool operator!=(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
-<br />
-   20.4.2  Raw storage iterator                    [lib.storage.iterator]<br />
-<br />
-T   template &lt;class OutputIterator, class T&gt;<br />
-    class raw_storage_iterator<br />
-      : public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    public:<br />
-T     explicit raw_storage_iterator(OutputIterator x);<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator*();<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator=(const T&amp; element);<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator++();<br />
-T     raw_storage_iterator&lt;OutputIterator,T&gt;  operator++(int);<br />
-    };<br />
-<br />
-   20.4.3  Temporary buffers                       [lib.temporary.buffer]<br />
-<br />
-T  template &lt;class T&gt;<br />
-    pair&lt;T*, ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
-<br />
-T  template &lt;class T&gt; void return_temporary_buffer(T* p);<br />
-<br />
-   20.4.4  Specialized algorithms            [lib.specialized.algorithms]<br />
-<br />
-   20.4.4.1  uninitialized_copy                  [lib.uninitialized.copy]<br />
-<br />
-V  template &lt;class InputIterator, class ForwardIterator&gt;<br />
-    ForwardIterator<br />
-      uninitialized_copy(InputIterator first, InputIterator last,<br />
-                         ForwardIterator result);<br />
-<br />
-   20.4.4.2  uninitialized_fill                  [lib.uninitialized.fill]<br />
-<br />
-V  template &lt;class ForwardIterator, class T&gt;<br />
-    void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
-                            const T&amp; x);<br />
-<br />
-   20.4.4.3  uninitialized_fill_n              [lib.uninitialized.fill.n]<br />
-<br />
-V  template &lt;class ForwardIterator, class Size, class T&gt;<br />
-    void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
-<br />
-   20.4.5  Template class auto_ptr                         [lib.auto.ptr]<br />
-<br />
-X   template&lt;class X&gt; class auto_ptr {<br />
-      template &lt;class Y&gt; struct auto_ptr_ref {};<br />
-    public:<br />
-T     typedef X element_type;<br />
-      // _lib.auto.ptr.cons_ construct/copy/destroy:<br />
-T     explicit auto_ptr(X* p =0) throw();<br />
-T     auto_ptr(auto_ptr&amp;) throw();<br />
-T     template&lt;class Y&gt; auto_ptr(auto_ptr&lt;Y&gt;&amp;) throw();<br />
-T     auto_ptr&amp; operator=(auto_ptr&amp;) throw();<br />
-T     template&lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr&lt;Y&gt;&amp;) throw();<br />
-T    ~auto_ptr() throw();<br />
-      // _lib.auto.ptr.members_ members:<br />
-T     X&amp; operator*() const throw();<br />
-T     X* operator-&gt;() const throw();<br />
-T     X* get() const throw();<br />
-T     X* release() throw();<br />
-T     void reset(X* p =0) throw();<br />
-<br />
-      // _lib.auto.ptr.conv_ conversions:<br />
-X     auto_ptr(auto_ptr_ref&lt;X&gt;) throw();<br />
-X     template&lt;class Y&gt; operator auto_ptr_ref&lt;Y&gt;() throw();<br />
-X     template&lt;class Y&gt; operator auto_ptr&lt;Y&gt;() throw();<br />
-    };<br />
-<br />
-   20.4.6  C Library                                       [lib.c.malloc]<br />
-<br />
-                    Table 7--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-X                    Functions:   calloc   malloc<br />
-                                  free     realloc<br />
-<br />
-<br />
-                    Table 8--Header &lt;cstring&gt; synopsis<br />
-<br />
-X                    Macro:       NULL<br />
-X                    Type:        size_t<br />
-X                    Functions:   memchr    memcmp<br />
-X                    memcpy       memmove   memset<br />
-<br />
-                     Table 9--Header &lt;ctime&gt; synopsis<br />
-<br />
-X          Macros:   NULL<br />
-X          Types:    size_t   clock_t    time_t<br />
-X          Struct:   tm<br />
-           Functions:<br />
-X          asctime   clock    difftime   localtime   strftime<br />
-X          ctime     gmtime   mktime     time<br />
-<br />
-   21.1.1  Character traits requirements        [lib.char.traits.require]<br />
-<br />
-   2 The struct template<br />
-T  template&lt;class charT&gt; struct char_traits;<br />
-   shall be provided in the header &lt;string&gt; as a basis for  explicit spe-<br />
-   cializations.<br />
-<br />
-<br />
-   21.1.3.1  struct                [lib.char.traits.specializations.char]<br />
-       char_traits&lt;char&gt;<br />
-<br />
-T   template&lt;&gt;<br />
-    struct char_traits&lt;char&gt; {<br />
-T     typedef char        char_type;<br />
-T     typedef int         int_type;<br />
-T     typedef streamoff   off_type;<br />
-T     typedef streampos   pos_type;<br />
-T     typedef mbstate_t   state_type;<br />
-<br />
-T     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
-T     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
-T     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
-<br />
-T     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
-T     static size_t length(const char_type* s);<br />
-T     static const char_type* find(const char_type* s, size_t n,<br />
-                                   const char_type&amp; a);<br />
-T     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
-T     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
-T     static char_type* assign(char_type* s, size_t n, char_type a);<br />
-<br />
-T     static int_type not_eof(const int_type&amp; c);<br />
-T     static char_type to_char_type(const int_type&amp; c);<br />
-T     static int_type to_int_type(const char_type&amp; c);<br />
-T     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
-T     static int_type eof();<br />
-    };<br />
-<br />
-   21.1.3.2  struct             [lib.char.traits.specializations.wchar.t]<br />
-       char_traits&lt;wchar_t&gt;<br />
-<br />
-V   template&lt;&gt;<br />
-    struct char_traits&lt;wchar_t&gt; {<br />
-V     typedef wchar_t      char_type;<br />
-V     typedef wint_t       int_type;<br />
-V     typedef streamoff   off_type;<br />
-V     typedef wstreampos   pos_type;<br />
-V     typedef mbstate_t    state_type;<br />
-<br />
-V     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
-V     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
-V     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
-<br />
-V     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
-V     static size_t length(const char_type* s);<br />
-V     static const char_type* find(const char_type* s, size_t n,<br />
-                                   const char_type&amp; a);<br />
-V     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
-V     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
-V     static char_type* assign(char_type* s, size_t n, char_type a);<br />
-<br />
-V     static int_type not_eof(const int_type&amp; c);<br />
-V     static char_type to_char_type(const int_type&amp; c);<br />
-V     static int_type to_int_type(const char_type&amp; c);<br />
-V     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
-V     static int_type eof();<br />
-    };<br />
-<br />
-   21.2  String classes                              [lib.string.classes]<br />
-<br />
-    // _lib.char.traits_, character traits:<br />
-V   template&lt;class charT&gt;<br />
-      struct char_traits;<br />
-V   template &lt;&gt; struct char_traits&lt;char&gt;;<br />
-V   template &lt;&gt; struct char_traits&lt;wchar_t&gt;;<br />
-<br />
-    // _lib.basic.string_, basic_string:<br />
-V   template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-             class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_string;<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                  const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const charT* lhs,<br />
-                  const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(charT lhs, const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                  const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      basic_string&lt;charT,traits,Allocator&gt;<br />
-        operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs, charT rhs);<br />
-<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt; (const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt; (const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&lt;=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                      const charT* rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-      bool operator&gt;=(const charT* lhs,<br />
-                      const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-<br />
-    // _lib.string.special_:<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-       void swap(basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
-                 basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-                 basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-T   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os,<br />
-                 const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-       getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-               basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-               charT delim);<br />
-V   template&lt;class charT, class traits, class Allocator&gt;<br />
-     basic_istream&lt;charT,traits&gt;&amp;<br />
-       getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
-               basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-V   typedef basic_string&lt;char&gt; string;<br />
-T   typedef basic_string&lt;wchar_t&gt; wstring;<br />
-   }<br />
-<br />
-   21.3  Template class basic_string                   [lib.basic.string]<br />
-<br />
-V  namespace std {<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-             class Allocator = allocator&lt;charT&gt; &gt;<br />
-    class basic_string {<br />
-    public:<br />
-      // types:<br />
-      typedef          traits                     traits_type;<br />
-      typedef typename traits::char_type          value_type;<br />
-      typedef          Allocator                  allocator_type;<br />
-      typedef typename Allocator::size_type       size_type;<br />
-      typedef typename Allocator::difference_type difference_type;<br />
-      typedef typename Allocator::reference       reference;<br />
-      typedef typename Allocator::const_reference const_reference;<br />
-      typedef typename Allocator::pointer         pointer;<br />
-      typedef typename Allocator::const_pointer   const_pointer;<br />
-      typedef implementation defined             iterator;<br />
-      typedef implementation defined             const_iterator;<br />
-      typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;<br />
-      typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      static const size_type npos = -1;<br />
-<br />
-      // _lib.string.cons_ construct/copy/destroy:<br />
-V     explicit basic_string(const Allocator&amp; a = Allocator());<br />
-V     basic_string(const basic_string&amp; str, size_type pos = 0,<br />
-                   size_type n = npos, const Allocator&amp; a = Allocator());<br />
-V     basic_string(const charT* s,<br />
-                   size_type n, const Allocator&amp; a = Allocator());<br />
-V     basic_string(const charT* s, const Allocator&amp; a = Allocator());<br />
-V     basic_string(size_type n, charT c, const Allocator&amp; a = Allocator());<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string(InputIterator begin, InputIterator end,<br />
-                     const Allocator&amp; a = Allocator());<br />
-V    ~basic_string();<br />
-V     basic_string&amp; operator=(const basic_string&amp; str);<br />
-V     basic_string&amp; operator=(const charT* s);<br />
-V     basic_string&amp; operator=(charT c);<br />
-      // _lib.string.iterators_ iterators:<br />
-V     iterator       begin();<br />
-V     const_iterator begin() const;<br />
-V     iterator       end();<br />
-V     const_iterator end() const;<br />
-<br />
-V     reverse_iterator       rbegin();<br />
-V     const_reverse_iterator rbegin() const;<br />
-V     reverse_iterator       rend();<br />
-V     const_reverse_iterator rend() const;<br />
-      // _lib.string.capacity_ capacity:<br />
-V     size_type size() const;<br />
-V     size_type length() const;<br />
-V     size_type max_size() const;<br />
-V     void resize(size_type n, charT c);<br />
-V     void resize(size_type n);<br />
-V     size_type capacity() const;<br />
-V     void reserve(size_type res_arg = 0);<br />
-V     void clear();<br />
-V     bool empty() const;<br />
-      // _lib.string.access_ element access:<br />
-V     const_reference operator[](size_type pos) const;<br />
-V     reference       operator[](size_type pos);<br />
-V     const_reference at(size_type n) const;<br />
-V     reference       at(size_type n);<br />
-      // _lib.string.modifiers_ modifiers:<br />
-V     basic_string&amp; operator+=(const basic_string&amp; str);<br />
-V     basic_string&amp; operator+=(const charT* s);<br />
-V     basic_string&amp; operator+=(charT c);<br />
-V     basic_string&amp; append(const basic_string&amp; str);<br />
-V     basic_string&amp; append(const basic_string&amp; str, size_type pos,<br />
-                           size_type n);<br />
-V     basic_string&amp; append(const charT* s, size_type n);<br />
-V     basic_string&amp; append(const charT* s);<br />
-V     basic_string&amp; append(size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; append(InputIterator first, InputIterator last);<br />
-V     void push_back(const charT);<br />
-<br />
-V     basic_string&amp; assign(const basic_string&amp;);<br />
-V     basic_string&amp; assign(const basic_string&amp; str, size_type pos,<br />
-                           size_type n);<br />
-V     basic_string&amp; assign(const charT* s, size_type n);<br />
-V     basic_string&amp; assign(const charT* s);<br />
-V     basic_string&amp; assign(size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; assign(InputIterator first, InputIterator last);<br />
-V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str);<br />
-V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str,<br />
-                           size_type pos2, size_type n);<br />
-V     basic_string&amp; insert(size_type pos, const charT* s, size_type n);<br />
-V     basic_string&amp; insert(size_type pos, const charT* s);<br />
-V     basic_string&amp; insert(size_type pos, size_type n, charT c);<br />
-V     iterator insert(iterator p, charT c);<br />
-V     void     insert(iterator p, size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        void insert(iterator p, InputIterator first, InputIterator last);<br />
-V     basic_string&amp; erase(size_type pos = 0, size_type n = npos);<br />
-V     iterator erase(iterator position);<br />
-V     iterator erase(iterator first, iterator last);<br />
-V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
-                            const basic_string&amp; str);<br />
-V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
-                            const basic_string&amp; str,<br />
-                            size_type pos2, size_type n2);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s,<br />
-                            size_type n2);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s);<br />
-V     basic_string&amp; replace(size_type pos, size_type n1, size_type n2,<br />
-                            charT c);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const basic_string&amp; str);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s,<br />
-                            size_type n);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s);<br />
-V     basic_string&amp; replace(iterator i1, iterator i2,<br />
-                            size_type n, charT c);<br />
-V     template&lt;class InputIterator&gt;<br />
-        basic_string&amp; replace(iterator i1, iterator i2,<br />
-                              InputIterator j1, InputIterator j2);<br />
-V     size_type copy(charT* s, size_type n, size_type pos = 0) const;<br />
-V     void swap(basic_string&lt;charT,traits,Allocator&gt;&amp;);<br />
-      // _lib.string.ops_ string operations:<br />
-V     const charT* c_str() const;         // explicit<br />
-V     const charT* data() const;<br />
-V     allocator_type get_allocator() const;<br />
-V     size_type find (const basic_string&amp; str, size_type pos = 0) const;<br />
-V     size_type find (const charT* s, size_type pos, size_type n) const;<br />
-V     size_type find (const charT* s, size_type pos = 0) const;<br />
-V     size_type find (charT c, size_type pos = 0) const;<br />
-V     size_type rfind(const basic_string&amp; str, size_type pos = npos) const;<br />
-V     size_type rfind(const charT* s, size_type pos, size_type n) const;<br />
-V     size_type rfind(const charT* s, size_type pos = npos) const;<br />
-V     size_type rfind(charT c, size_type pos = npos) const;<br />
-<br />
-V     size_type find_first_of(const basic_string&amp; str,<br />
-                              size_type pos = 0) const;<br />
-V     size_type find_first_of(const charT* s,<br />
-                              size_type pos, size_type n) const;<br />
-V     size_type find_first_of(const charT* s, size_type pos = 0) const;<br />
-V     size_type find_first_of(charT c, size_type pos = 0) const;<br />
-V     size_type find_last_of (const basic_string&amp; str,<br />
-                              size_type pos = npos) const;<br />
-V     size_type find_last_of (const charT* s,<br />
-                              size_type pos, size_type n) const;<br />
-V     size_type find_last_of (const charT* s, size_type pos = npos) const;<br />
-V     size_type find_last_of (charT c, size_type pos = npos) const;<br />
-V     size_type find_first_not_of(const basic_string&amp; str,<br />
-                                  size_type pos = 0) const;<br />
-V     size_type find_first_not_of(const charT* s, size_type pos,<br />
-                                  size_type n) const;<br />
-V     size_type find_first_not_of(const charT* s, size_type pos = 0) const;<br />
-V     size_type find_first_not_of(charT c, size_type pos = 0) const;<br />
-V     size_type find_last_not_of (const basic_string&amp; str,<br />
-                                  size_type pos = npos) const;<br />
-V     size_type find_last_not_of (const charT* s, size_type pos,<br />
-                                  size_type n) const;<br />
-V     size_type find_last_not_of (const charT* s,<br />
-                                  size_type pos = npos) const;<br />
-V     size_type find_last_not_of (charT c, size_type pos = npos) const;<br />
-V     basic_string substr(size_type pos = 0, size_type n = npos) const;<br />
-V     int compare(const basic_string&amp; str) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const basic_string&amp; str) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const basic_string&amp; str,<br />
-                  size_type pos2, size_type n2) const;<br />
-V     int compare(const charT* s) const;<br />
-V     int compare(size_type pos1, size_type n1,<br />
-                  const charT* s, size_type n2 = npos) const;<br />
-    };<br />
-   }<br />
-<br />
-   21.4  Null-terminated sequence utilities               [lib.c.strings]<br />
-<br />
-                    Table 10--Header &lt;cctype&gt; synopsis<br />
-<br />
-            isalnum   isdigit   isprint   isupper    tolower<br />
-X           isalpha   isgraph   ispunct   isxdigit   toupper<br />
-            iscntrl   islower   isspace<br />
-<br />
-                   Table 11--Header &lt;cwctype&gt; synopsis<br />
-<br />
-X  Macro:     WEOF &lt;cwctype&gt;<br />
-X  Types:     wctrans_t   wctype_t   wint_t &lt;cwctype&gt;<br />
-   Functions:<br />
-X  iswalnum   iswctype    iswlower   iswspace    towctrans   wctrans<br />
-X  iswalpha   iswdigit    iswprint   iswupper    towlower    wctype<br />
-X  iswcntrl   iswgraph    iswpunct   iswxdigit   towupper<br />
-<br />
-                   Table 12--Header &lt;cstring&gt; synopsis<br />
-<br />
-X           Macro:    NULL &lt;cstring&gt;<br />
-X           Type:     size_t &lt;cstring&gt;<br />
-            Functions:<br />
-X           memchr    strcat    strcspn    strncpy   strtok<br />
-X           memcmp    strchr    strerror   strpbrk   strxfrm<br />
-X           memcpy    strcmp    strlen     strrchr<br />
-X           memmove   strcoll   strncat    strspn<br />
-X           memset    strcpy    strncmp    strstr<br />
-<br />
-                    Table 13--Header &lt;cwchar&gt; synopsis<br />
-   Macros:    NULL &lt;cwchar&gt;   WCHAR_MAX         WCHAR_MIN   WEOF &lt;cwchar&gt;<br />
-   Types:     mbstate_t       wint_t &lt;cwchar&gt;   size_t<br />
-   Functions:<br />
-X  btowc      getwchar        ungetwc           wcscpy      wcsrtombs   wmemchr<br />
-X  fgetwc     mbrlen          vfwprintf         wcscspn     wcsspn      wmemcmp<br />
-X  fgetws     mbrtowc         vswprintf         wcsftime    wcsstr      wmemcpy<br />
-X  fputwc     mbsinit         vwprintf          wcslen      wcstod      wmemmove<br />
-X  fputws     mbsrtowcs       wcrtomb           wcsncat     wcstok      wmemset<br />
-X  fwide      putwc           wcscat            wcsncmp     wcstol      wprintf<br />
-X  fwprintf   putwchar        wcschr            wcsncpy     wcstoul     wscanf<br />
-X  fwscanf    swprintf        wcscmp            wcspbrk     wcsxfrm<br />
-X  getwc      swscanf         wcscoll           wcsrchr     wctob<br />
-<br />
-                   Table 14--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-               Macros:   MB_CUR_MAX<br />
-               Functions:<br />
-X              atol      mblen        strtod    wctomb<br />
-X              atof      mbstowcs     strtol    wcstombs<br />
-X              atoi      mbtowc       strtoul<br />
-<br />
-X  const char* strchr(const char* s, int c);<br />
-X       char* strchr(      char* s, int c);<br />
-<br />
-X  const char* strpbrk(const char* s1, const char* s2);<br />
-X       char* strpbrk(      char* s1, const char* s2);<br />
-<br />
-X  const char* strrchr(const char* s, int c);<br />
-X       char* strrchr(      char* s, int c);<br />
-<br />
-X  const char* strstr(const char* s1, const char* s2);<br />
-X       char* strstr(      char* s1, const char* s2);<br />
-<br />
-X  const void* memchr(const void* s, int c, size_t n);<br />
-X       void* memchr(      void* s, int c, size_t n);<br />
-<br />
-X  const wchar_t* wcschr(const wchar_t* s, wchar_t c);<br />
-X       wchar_t* wcschr(      wchar_t* s, wchar_t c);<br />
-<br />
-X  const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);<br />
-X       wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);<br />
-<br />
-X  const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);<br />
-X       wchar_t* wcsrchr(      wchar_t* s, wchar_t c);<br />
-<br />
-X  const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);<br />
-X       wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);<br />
-<br />
-X  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);<br />
-X       wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);<br />
-<br />
-   [for initial efforts on the above, see shadow/string.h]<br />
-<br />
-   22.1  Locales                                            [lib.locales]<br />
-<br />
-   Header &lt;locale&gt; synopsis<br />
-<br />
-    // _lib.locale_, locale:<br />
-T   class locale;<br />
-T   template &lt;class Facet&gt; const Facet&amp; use_facet(const locale&amp;);<br />
-T   template &lt;class Facet&gt; bool         has_facet(const locale&amp;) throw();<br />
-<br />
-    // _lib.locale.convenience_, convenience interfaces:<br />
-T   template &lt;class charT&gt; bool isspace (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isprint (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool iscntrl (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isupper (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool islower (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isalpha (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isdigit (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool ispunct (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isxdigit(charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isalnum (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; bool isgraph (charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; charT toupper(charT c, const locale&amp; loc);<br />
-T   template &lt;class charT&gt; charT tolower(charT c, const locale&amp; loc);<br />
-    // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:<br />
-    class ctype_base;<br />
-T   template &lt;class charT&gt; class ctype;<br />
-T   template &lt;&gt;            class ctype&lt;char&gt;;             // specialization<br />
-S   template &lt;class charT&gt; class ctype_byname;<br />
-S   template &lt;&gt;            class ctype_byname&lt;char&gt;;      // specialization<br />
-T   class codecvt_base;<br />
-X   template &lt;class internT, class externT, class stateT&gt; class codecvt;<br />
-S   template &lt;class internT, class externT, class stateT&gt; class codecvt_byname;<br />
-    // _lib.category.numeric_ and _lib.facet.numpunct_, numeric:<br />
-X   template &lt;class charT, class InputIterator&gt;  class num_get;<br />
-X   template &lt;class charT, class OutputIterator&gt; class num_put;<br />
-T   template &lt;class charT&gt; class numpunct;<br />
-S   template &lt;class charT&gt; class numpunct_byname;<br />
-    // _lib.category.collate_, collation:<br />
-T   template &lt;class charT&gt; class collate;<br />
-S   template &lt;class charT&gt; class collate_byname;<br />
-    // _lib.category.time_, date and time:<br />
-T   class time_base;<br />
-S   template &lt;class charT, class InputIterator&gt;  class time_get;<br />
-S   template &lt;class charT, class InputIterator&gt;  class time_get_byname;<br />
-S   template &lt;class charT, class OutputIterator&gt; class time_put;<br />
-S   template &lt;class charT, class OutputIterator&gt; class time_put_byname;<br />
-    // _lib.category.monetary_, money:<br />
-T   class money_base;<br />
-S   template &lt;class charT, class InputIterator&gt;  class money_get;<br />
-S   template &lt;class charT, class OutputIterator&gt; class money_put;<br />
-S   template &lt;class charT, bool Intl&gt; class moneypunct;<br />
-S   template &lt;class charT, bool Intl&gt; class moneypunct_byname;<br />
-    // _lib.category.messages_, message retrieval:<br />
-T   class messages_base;<br />
-S   template &lt;class charT&gt; class messages;<br />
-S   template &lt;class charT&gt; class messages_byname;<br />
-<br />
-<br />
-   22.1.1  Class locale                                      [lib.locale]<br />
-<br />
-X   class locale {<br />
-    public:<br />
-      // types:<br />
-T     class facet;<br />
-T     class id;<br />
-T     typedef int category;<br />
-T     static const category   // values assigned here are for exposition only<br />
-T       none     = 0,<br />
-T       collate  = 0x010, ctype    = 0x020,<br />
-T       monetary = 0x040, numeric  = 0x080,<br />
-T       time     = 0x100, messages = 0x200,<br />
-T       all = collate | ctype | monetary | numeric | time  | messages;<br />
-      // construct/copy/destroy:<br />
-T     locale() throw()<br />
-T     locale(const locale&amp; other) throw()<br />
-X     explicit locale(const char* std_name);<br />
-X     locale(const locale&amp; other, const char* std_name, category);<br />
-T     template &lt;class Facet&gt; locale(const locale&amp; other, Facet* f);<br />
-T     locale(const locale&amp; other, const locale&amp; one, category);<br />
-T    ~locale() throw();           // non-virtual<br />
-T     const locale&amp; operator=(const locale&amp; other) throw();<br />
-T     template &lt;class Facet&gt; locale combine(const locale&amp; other) const;<br />
-      // locale operations:<br />
-X     basic_string&lt;char&gt;                  name() const;<br />
-T     bool operator==(const locale&amp; other) const;<br />
-T     bool operator!=(const locale&amp; other) const;<br />
-T     template &lt;class charT, class Traits, class Allocator&gt;<br />
-        bool operator()(const basic_string&lt;charT,Traits,Allocator&gt;&amp; s1,<br />
-                        const basic_string&lt;charT,Traits,Allocator&gt;&amp; s2) const;<br />
-      // global locale objects:<br />
-T     static       locale  global(const locale&amp;);<br />
-T     static const locale&amp; classic();<br />
-    };<br />
-<br />
-   22.1.1.1  locale types                              [lib.locale.types]<br />
-<br />
-   22.1.1.1.1  Type locale::category                [lib.locale.category]<br />
-<br />
-T  typedef int category;<br />
-<br />
-T   none, collate, ctype, monetary, numeric, time, and messages<br />
-<br />
-      [required locale members]<br />
-T     collate&lt;char&gt;, collate&lt;wchar_t&gt;<br />
-T     ctype&lt;char&gt;, ctype&lt;wchar_t&gt;<br />
-T     codecvt&lt;char,char,mbstate_t&gt;,<br />
-S     codecvt&lt;wchar_t,char,mbstate_t&gt;<br />
-T     moneypunct&lt;char&gt;, moneypunct&lt;wchar_t&gt;<br />
-T     moneypunct&lt;char,true&gt;, moneypunct&lt;wchar_t,true&gt;,<br />
-S     money_get&lt;char&gt;, money_get&lt;wchar_t<br />
-S     money_put&lt;char&gt;, money_put&lt;wchar_t&gt;<br />
-T     numpunct&lt;char&gt;, numpunct&lt;wchar_t&gt;,<br />
-X     num_get&lt;char&gt;, num_get&lt;wchar_t&gt;<br />
-X     num_put&lt;char&gt;, num_put&lt;wchar_t&gt;<br />
-S     time_get&lt;char&gt;, time_get&lt;wchar_t&gt;,<br />
-S     time_put&lt;char&gt;, time_put&lt;wchar_t&gt;<br />
-S     messages&lt;char&gt;, messages&lt;wchar_t&gt;<br />
-<br />
-      [required instantiations]<br />
-S    collate_byname&lt;char&gt;, collate_byname&lt;wchar_t&gt;<br />
-S    ctype_byname&lt;char&gt;, ctype_byname&lt;wchar_t&gt;<br />
-S    codecvt_byname&lt;char,char,mbstate_t&gt;,<br />
-S    codecvt_byname&lt;wchar_t,char,mbstate_t&gt;<br />
-S    moneypunct_byname&lt;char,International&gt;,<br />
-S    moneypunct_byname&lt;wchar_t,International&gt;,<br />
-S    money_get&lt;C,InputIterator&gt;,<br />
-S    money_put&lt;C,OutputIterator&gt;<br />
-S    numpunct_byname&lt;char&gt;, numpunct_byname&lt;wchar_t&gt;<br />
-X    num_get&lt;C,InputIterator&gt;, num_put&lt;C,OutputIterator&gt;<br />
-S    time_get&lt;char,InputIterator&gt;,<br />
-S    time_get_byname&lt;char,InputIterator&gt;,<br />
-S    time_get&lt;wchar_t,OutputIterator&gt;,<br />
-S    time_get_byname&lt;wchar_t,OutputIterator&gt;,<br />
-S    time_put&lt;char,OutputIterator&gt;,<br />
-S    time_put_byname&lt;char,OutputIterator&gt;,<br />
-S    time_put&lt;wchar_t,OutputIterator&gt;<br />
-S    time_put_byname&lt;wchar_t,OutputIterator&gt;<br />
-S    messages_byname&lt;char&gt;, messages_byname&lt;wchar_t&gt;<br />
-<br />
-<br />
-   22.1.1.1.2  Class locale::facet                     [lib.locale.facet]<br />
-<br />
-T   class locale::facet {<br />
-    protected:<br />
-T     explicit facet(size_t refs = 0);<br />
-T     virtual ~facet();<br />
-    private:<br />
-T     facet(const facet&amp;);                // not defined<br />
-T     void operator=(const facet&amp;);       // not defined<br />
-    };<br />
-   }<br />
-<br />
-<br />
-   22.1.1.1.3  Class locale::id                           [lib.locale.id]<br />
-<br />
-T   class locale::id {<br />
-    public:<br />
-T     id();<br />
-    private:<br />
-T     void operator=(const id&amp;);  // not defined<br />
-T     id(const id&amp;);              // not defined<br />
-    };<br />
-   }<br />
-<br />
-<br />
-   22.2.1  The ctype category                        [lib.category.ctype]<br />
-<br />
-T   class ctype_base {<br />
-    public:<br />
-T     enum mask {         // numeric values are for exposition only.<br />
-T       space=, print=, cntrl=, upper=, lower=,<br />
-T       alpha=, digit=, punct=, xdigit=,<br />
-T       alnum=, graph=<br />
-      };<br />
-    };<br />
-<br />
-<br />
-   22.2.1.1  Template class ctype                      [lib.locale.ctype]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class ctype : public locale::facet, public ctype_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     explicit ctype(size_t refs = 0);<br />
-T     bool         is(mask m, charT c) const;<br />
-T     const charT* is(const charT* low, const charT* high, mask* vec) const;<br />
-T     const charT* scan_is(mask m,<br />
-                           const charT* low, const charT* high) const;<br />
-T     const charT* scan_not(mask m,<br />
-                            const charT* low, const charT* high) const;<br />
-T     charT        toupper(charT c) const;<br />
-T     const charT* toupper(charT* low, const charT* high) const;<br />
-T     charT        tolower(charT c) const;<br />
-T     const charT* tolower(charT* low, const charT* high) const;<br />
-T     charT        widen(char c) const;<br />
-T     const char*  widen(const char* low, const char* high, charT* to) const;<br />
-T     char         narrow(charT c, char dfault) const;<br />
-T     const charT* narrow(const charT* low, const charT*, char dfault,<br />
-                          char* to) const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~ctype();                    // virtual<br />
-T     virtual bool         do_is(mask m, charT c) const;<br />
-T     virtual const charT* do_is(const charT* low, const charT* high,<br />
-                                 mask* vec) const;<br />
-T     virtual const charT* do_scan_is(mask m,<br />
-                              const charT* low, const charT* high) const;<br />
-T     virtual const charT* do_scan_not(mask m,<br />
-                              const charT* low, const charT* high) const;<br />
-T     virtual charT        do_toupper(charT) const;<br />
-T     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
-T     virtual charT        do_tolower(charT) const;<br />
-T     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
-T     virtual charT        do_widen(char) const;<br />
-T     virtual const char*  do_widen(const char* low, const char* high,<br />
-                                    charT* dest) const;<br />
-T     virtual char         do_narrow(charT, char dfault) const;<br />
-T     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
-                                     char dfault, char* dest) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.1.2  Template class ctype_byname        [lib.locale.ctype.byname]<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class ctype_byname : public ctype&lt;charT&gt; {<br />
-    public:<br />
-T     typedef ctype&lt;charT&gt;::mask mask;<br />
-S     explicit ctype_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~ctype_byname();             // virtual<br />
-S     virtual bool         do_is(mask m, charT c) const;<br />
-S     virtual const charT* do_is(const charT* low, const charT* high,<br />
-                                 mask* vec) const;<br />
-S     virtual const char*  do_scan_is(mask m,<br />
-                               const charT* low, const charT* high) const;<br />
-S     virtual const char*  do_scan_not(mask m,<br />
-                               const charT* low, const charT* high) const;<br />
-S     virtual charT        do_toupper(charT) const;<br />
-S     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
-S     virtual charT        do_tolower(charT) const;<br />
-S     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
-S     virtual charT        do_widen(char) const;<br />
-S     virtual const char*  do_widen(const char* low, const char* high,<br />
-                                    charT* dest) const;<br />
-S     virtual char         do_narrow(charT, char dfault) const;<br />
-S     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
-                                     char dfault, char* dest) const;<br />
-    };<br />
-<br />
-   22.2.1.3  ctype specializations              [lib.facet.ctype.special]<br />
-<br />
-T   template &lt;&gt; class ctype&lt;char&gt;<br />
-      : public locale::facet, public ctype_base {<br />
-    public:<br />
-T     typedef char char_type;<br />
-T     explicit ctype(const mask* tab = 0, bool del = false,<br />
-                     size_t refs = 0);<br />
-T     bool is(mask m, char c) const;<br />
-T     const char* is(const char* low, const char* high, mask* vec) const;<br />
-T     const char* scan_is (mask m,<br />
-                           const char* low, const char* high) const;<br />
-T     const char* scan_not(mask m,<br />
-                           const char* low, const char* high) const;<br />
-T     char        toupper(char c) const;<br />
-T     const char* toupper(char* low, const char* high) const;<br />
-T     char        tolower(char c) const;<br />
-T     const char* tolower(char* low, const char* high) const;<br />
-T     char  widen(char c) const;<br />
-T     const char* widen(const char* low, const char* high, char* to) const;<br />
-T     char  narrow(char c, char dfault) const;<br />
-T     const char* narrow(const char* low, const char* high, char dfault,<br />
-                         char* to) const;<br />
-T     static locale::id id;<br />
-T     static const size_t table_size = IMPLEMENTATION_DEFINED;<br />
-<br />
-    protected:<br />
-T     const mask* table() const throw();<br />
-T     static const mask* classic_table() throw();<br />
-T    ~ctype();                    // virtual<br />
-T     virtual char        do_toupper(char c) const;<br />
-T     virtual const char* do_toupper(char* low, const char* high) const;<br />
-T     virtual char        do_tolower(char c) const;<br />
-T     virtual const char* do_tolower(char* low, const char* high) const;<br />
-<br />
-T     virtual char        do_widen(char c) const;<br />
-T     virtual const char* do_widen(const char* low,<br />
-                                   const char* high,<br />
-                                   char* to) const;<br />
-T     virtual char        do_narrow(char c, char dfault) const;<br />
-T     virtual const char* do_narrow(const char* low,<br />
-                                    const char* high,<br />
-                                    char dfault, char* to) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.1.4  Class                      [lib.locale.ctype.byname.special]<br />
-       ctype_byname&lt;char&gt;<br />
-<br />
-X   template &lt;&gt; class ctype_byname&lt;char&gt; : public ctype&lt;char&gt; {<br />
-    public:<br />
-S     explicit ctype_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~ctype_byname();             // virtual<br />
-S     virtual char        do_toupper(char c) const;<br />
-S     virtual const char* do_toupper(char* low, const char* high) const;<br />
-S     virtual char        do_tolower(char c) const;<br />
-S     virtual const char* do_tolower(char* low, const char* high) const;<br />
-<br />
-S     virtual char        do_widen(char c) const;<br />
-S     virtual const char* do_widen(char* low,<br />
-                                   const char* high,<br />
-                                   char* to) const;<br />
-S     virtual char        do_widen(char c) const;<br />
-S     virtual const char* do_widen(char* low, const char* high) const;<br />
-<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.1.5  Template class codecvt                  [lib.locale.codecvt]<br />
-<br />
-T  class codecvt_base {<br />
-   public:<br />
-T   enum result { ok, partial, error, noconv };<br />
-   };<br />
-<br />
-T  template &lt;class internT, class externT, class stateT&gt;<br />
-   class codecvt : public locale::facet, public codecvt_base {<br />
-   public:<br />
-T   typedef internT  intern_type;<br />
-T   typedef externT  extern_type;<br />
-T   typedef stateT state_type;<br />
-T   explicit codecvt(size_t refs = 0)<br />
-T   result out(stateT&amp; state,<br />
-     const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-           externT*   to,       externT* to_limit, externT*&amp; to_next) const;<br />
-T   result unshift(stateT&amp; state,<br />
-           externT*   to,        externT* to_limit, externT*&amp; to_next) const;<br />
-T   result in(stateT&amp; state,<br />
-     const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-           internT*   to,       internT* to_limit, internT*&amp; to_next) const;<br />
-T   int encoding() const throw();<br />
-T   bool always_noconv() const throw();<br />
-T   int length(const stateT&amp;, const externT* from, const externT* end,<br />
-               size_t max) const;<br />
-T   int max_length() const throw();<br />
-T   static locale::id id;<br />
-<br />
-   protected:<br />
-T   ~codecvt();                   // virtual<br />
-T   virtual result do_out(stateT&amp; state,<br />
-     const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-           externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-T   virtual result do_in(stateT&amp; state,<br />
-T    const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-           internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
-T   virtual result do_unshift(stateT&amp; state,<br />
-           externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-T   virtual int do_encoding() const throw();<br />
-T   virtual bool do_always_noconv() const throw();<br />
-T   virtual int do_length(const stateT&amp;, const externT* from,<br />
-                          const externT* end, size_t max) const;<br />
-T   virtual int do_max_length() const throw();<br />
-   };<br />
-   }<br />
-<br />
-<br />
-   22.2.1.6  Template class                   [lib.locale.codecvt.byname]<br />
-       codecvt_byname<br />
-<br />
-X  template &lt;class internT, class externT, class stateT&gt;<br />
-   class codecvt_byname : public codecvt&lt;internT, externT, stateT&gt; {<br />
-   public:<br />
-S   explicit codecvt_byname(const char*, size_t refs = 0);<br />
-   protected:<br />
-S  ~codecvt_byname();             // virtual<br />
-S   virtual result do_out(stateT&amp; state,<br />
-      const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
-            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual result do_in(stateT&amp; state,<br />
-      const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
-            internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
-S   virtual result do_unshift(stateT&amp; state,<br />
-            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual int do_encoding() const throw();<br />
-S   virtual bool do_always_noconv() const throw();<br />
-S   virtual int do_length(const stateT&amp;, const externT* from,<br />
-                          const externT* end, size_t max) const;<br />
-S   virtual result do_unshift(stateT&amp; state,<br />
-           externT* to, externT* to_limit, externT*&amp; to_next) const;<br />
-S   virtual int do_max_length() const throw();<br />
-    };<br />
-<br />
-<br />
-   22.2.2.1  Template class num_get                  [lib.locale.num.get]<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class num_get : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef InputIterator    iter_type;<br />
-T     explicit num_get(size_t refs = 0);<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, bool&amp; v)           const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp; ,<br />
-                    ios_base::iostate&amp; err, long&amp; v)           const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned int&amp; v)   const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, unsigned long&amp; v)  const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, float&amp; v)          const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, double&amp; v)         const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, long double&amp; v)    const;<br />
-T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
-                    ios_base::iostate&amp; err, void*&amp; v)          const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~num_get();                  // virtual<br />
-T     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, bool&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, long&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned int&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, unsigned long&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, float&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, double&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, long double&amp; v) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
-          ios_base::iostate&amp; err, void*&amp; v) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.2.2  Template class num_put                   [lib.locale.nm.put]<br />
-<br />
-X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class num_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef OutputIterator   iter_type;<br />
-T     explicit num_put(size_t refs = 0);<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, bool v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, long v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    unsigned long v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    double v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    long double v) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    const void* v) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~num_put();                  // virtual<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               bool v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               long v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               unsigned long) const;<br />
-S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               double v) const;<br />
-S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               long double v) const;<br />
-T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
-                               const void* v) const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.3.1  Template class numpunct                [lib.locale.numpunct]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class numpunct : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit numpunct(size_t refs = 0);<br />
-T     char_type    decimal_point()   const;<br />
-T     char_type    thousands_sep()   const;<br />
-T     string       grouping()        const;<br />
-T     string_type  truename()        const;<br />
-T     string_type  falsename()       const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~numpunct();                 // virtual<br />
-T     virtual char_type    do_decimal_point() const;<br />
-T     virtual char_type    do_thousands_sep() const;<br />
-T     virtual string       do_grouping()      const;<br />
-T     virtual string_type  do_truename()      const;      // for bool<br />
-T     virtual string_type  do_falsename()     const;      // for bool<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   22.2.3.2  Template class                  [lib.locale.numpunct.byname]<br />
-       numpunct_byname<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class numpunct_byname : public numpunct&lt;charT&gt; {<br />
-   // this class is specialized for char and wchar_t.<br />
-    public:<br />
-T     typedef charT                char_type;<br />
-T     typedef basic_string&lt;charT&gt;  string_type;<br />
-S     explicit numpunct_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~numpunct_byname();          // virtual<br />
-S     virtual char_type    do_decimal_point() const;<br />
-S     virtual char_type    do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_truename()      const;      // for bool<br />
-S     virtual string_type  do_falsename()     const;      // for bool<br />
-    };<br />
-<br />
-<br />
-   22.2.4.1  Template class collate                  [lib.locale.collate]<br />
-<br />
-T   template &lt;class charT&gt;<br />
-    class collate : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit collate(size_t refs = 0);<br />
-T     int compare(const charT* low1, const charT* high1,<br />
-                  const charT* low2, const charT* high2) const;<br />
-T     string_type transform(const charT* low, const charT* high) const;<br />
-T     long hash(const charT* low, const charT* high) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~collate();                  // virtual<br />
-T     virtual int    do_compare(const charT* low1, const charT* high1,<br />
-                                const charT* low2, const charT* high2) const;<br />
-T     virtual string_type do_transform<br />
-                               (const charT* low, const charT* high) const;<br />
-T     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.4.2  Template class                   [lib.locale.collate.byname]<br />
-       collate_byname<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class collate_byname : public collate&lt;charT&gt; {<br />
-    public:<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit collate_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~collate_byname();           // virtual<br />
-S     virtual int    do_compare(const charT* low1, const charT* high1,<br />
-                                const charT* low2, const charT* high2) const;<br />
-S     virtual string_type do_transform<br />
-                               (const charT* low, const charT* high) const;<br />
-S     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.5.1  Template class time_get                [lib.locale.time.get]<br />
-<br />
-T   class time_base {<br />
-    public:<br />
-T     enum dateorder { no_order, dmy, mdy, ymd, ydm };<br />
-    };<br />
-<br />
-    [Note: semantics of time_get members are implementation-defined.<br />
-     To complete implementation requires documenting behavior.]<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_get : public locale::facet, public time_base {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef InputIterator    iter_type;<br />
-T     explicit time_get(size_t refs = 0);<br />
-<br />
-T     dateorder date_order()  const { return do_date_order(); }<br />
-T     iter_type get_time(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t)  const;<br />
-T     iter_type get_date(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t)  const;<br />
-T     iter_type get_weekday(iter_type s, iter_type end, ios_base&amp; f,<br />
-                            ios_base::iostate&amp; err, tm* t) const;<br />
-T     iter_type get_monthname(iter_type s, iter_type end, ios_base&amp; f,<br />
-                              ios_base::iostate&amp; err, tm* t) const;<br />
-T     iter_type get_year(iter_type s, iter_type end, ios_base&amp; f,<br />
-                         ios_base::iostate&amp; err, tm* t) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-     ~time_get();                 // virtual<br />
-X     virtual dateorder do_date_order()  const;<br />
-S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
-                                       ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_monthname(iter_type s, ios_base&amp;,<br />
-                                         ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.5.2  Template class                  [lib.locale.time.get.byname]<br />
-       time_get_byname<br />
-<br />
-X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_get_byname : public time_get&lt;charT, InputIterator&gt; {<br />
-    public:<br />
-T     typedef time_base::dateorder dateorder;<br />
-T     typedef InputIterator        iter_type<br />
-<br />
-S     explicit time_get_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-S    ~time_get_byname();          // virtual<br />
-S     virtual dateorder do_date_order()  const;<br />
-S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-T     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
-                                       ios_base::iostate&amp; err, tm* t) const;<br />
-T     virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&amp;,<br />
-                                         ios_base::iostate&amp; err, tm* t) const;<br />
-S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
-                                    ios_base::iostate&amp; err, tm* t) const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.5.3  Template class time_put                [lib.locale.time.put]<br />
-<br />
-X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT            char_type;<br />
-T     typedef OutputIterator   iter_type;<br />
-T     explicit time_put(size_t refs = 0);<br />
-      // the following is implemented in terms of other member functions.<br />
-S     iter_type put(iter_type s, ios_base&amp; f, char_type fill, const tm* tmb,<br />
-                    const charT* pattern, const charT* pat_end) const;<br />
-T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
-                    const tm* tmb, char format, char modifier = 0) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~time_put();                 // virtual<br />
-S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
-                               char format, char modifier) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-   22.2.5.4  Template class                  [lib.locale.time.put.byname]<br />
-       time_put_byname<br />
-<br />
-T   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class time_put_byname : public time_put&lt;charT, OutputIterator&gt;<br />
-    {<br />
-    public:<br />
-T     typedef charT          char_type;<br />
-T     typedef OutputIterator iter_type;<br />
-<br />
-T     explicit time_put_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~time_put_byname();          // virtual<br />
-S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
-                               char format, char modifier) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.6.1  Template class money_get              [lib.locale.money.get]<br />
-<br />
-X   template &lt;class charT,<br />
-              class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
-    class money_get : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef InputIterator       iter_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit money_get(size_t refs = 0);<br />
-T     iter_type get(iter_type s, iter_type end, bool intl,<br />
-                    ios_base&amp; f, ios_base::iostate&amp; err,<br />
-                    long double&amp; units) const;<br />
-T     iter_type get(iter_type s, iter_type end, bool intl,<br />
-                    ios_base&amp; f, ios_base::iostate&amp; err,<br />
-                    string_type&amp; digits) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~money_get();                // virtual<br />
-S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
-                       ios_base::iostate&amp; err, long double&amp; units) const;<br />
-S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
-                       ios_base::iostate&amp; err, string_type&amp; digits) const;<br />
-    };<br />
-<br />
-   22.2.6.2  Template class money_put              [lib.locale.money.put]<br />
-<br />
-X   template &lt;class charT,<br />
-              class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
-    class money_put : public locale::facet {<br />
-    public:<br />
-T     typedef charT               char_type;<br />
-T     typedef OutputIterator      iter_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit money_put(size_t refs = 0);<br />
-T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
-                    char_type fill, long double units) const;<br />
-T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
-                    char_type fill, const string_type&amp; digits) const;<br />
-T     static locale::id id;<br />
-<br />
-    protected:<br />
-T    ~money_put();                // virtual<br />
-S     virtual iter_type<br />
-        do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
-               long double units) const;<br />
-S     virtual iter_type<br />
-        do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
-               const string_type&amp; digits) const;<br />
-    };<br />
-<br />
-<br />
-   22.2.6.3  Template class moneypunct            [lib.locale.moneypunct]<br />
-<br />
-T   class money_base {<br />
-    public:<br />
-T     enum part { none, space, symbol, sign, value };<br />
-T     struct pattern { char field[4]; };<br />
-    };<br />
-<br />
-X   template &lt;class charT, bool International = false&gt;<br />
-    class moneypunct : public locale::facet, public money_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit moneypunct(size_t refs = 0);<br />
-T     charT        decimal_point() const;<br />
-T     charT        thousands_sep() const;<br />
-T     string       grouping()      const;<br />
-T     string_type  curr_symbol()   const;<br />
-T     string_type  positive_sign() const;<br />
-T     string_type  negative_sign() const;<br />
-T     int          frac_digits()   const;<br />
-T     pattern      pos_format()    const;<br />
-T     pattern      neg_format()    const;<br />
-T     static locale::id id;<br />
-T     static const bool intl = International;<br />
-    protected:<br />
-T    ~moneypunct();               // virtual<br />
-S     virtual charT        do_decimal_point() const;<br />
-S     virtual charT        do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_curr_symbol()   const;<br />
-S     virtual string_type  do_positive_sign() const;<br />
-S     virtual string_type  do_negative_sign() const;<br />
-S     virtual int          do_frac_digits()   const;<br />
-T     virtual pattern      do_pos_format()    const;<br />
-T     virtual pattern      do_neg_format()    const;<br />
-    };<br />
-   }<br />
-<br />
-   22.2.6.4  Template class                [lib.locale.moneypunct.byname]<br />
-       moneypunct_byname<br />
-<br />
-X   template &lt;class charT, bool Intl = false&gt;<br />
-    class moneypunct_byname : public moneypunct&lt;charT, Intl&gt; {<br />
-    public:<br />
-T     typedef money_base::pattern pattern;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-<br />
-T     explicit moneypunct_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~moneypunct_byname();        // virtual<br />
-S     virtual charT        do_decimal_point() const;<br />
-S     virtual charT        do_thousands_sep() const;<br />
-S     virtual string       do_grouping()      const;<br />
-S     virtual string_type  do_curr_symbol()   const;<br />
-S     virtual string_type  do_positive_sign() const;<br />
-S     virtual string_type  do_negative_sign() const;<br />
-S     virtual int          do_frac_digits()   const;<br />
-S     virtual pattern      do_pos_format()    const;<br />
-S     virtual pattern      do_neg_format()    const;<br />
-    };<br />
-<br />
-   22.2.7.1  Template class messages                [lib.locale.messages]<br />
-<br />
-T   class messages_base {<br />
-    public:<br />
-T     typedef int catalog;<br />
-    };<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class messages : public locale::facet, public messages_base {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef basic_string&lt;charT&gt; string_type;<br />
-T     explicit messages(size_t refs = 0);<br />
-T     catalog open(const basic_string&lt;char&gt;&amp; fn, const locale&amp;) const;<br />
-T     string_type  get(catalog c, int set, int msgid,<br />
-                       const string_type&amp; dfault) const;<br />
-T     void    close(catalog c) const;<br />
-T     static locale::id id;<br />
-    protected:<br />
-T    ~messages();                 // virtual<br />
-S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
-S     virtual string_type  do_get(catalog, int set, int msgid,<br />
-                             const string_type&amp; dfault) const;<br />
-S     virtual void    do_close(catalog) const;<br />
-    };<br />
-<br />
-   22.2.7.2  Template class                  [lib.locale.messages.byname]<br />
-       messages_byname<br />
-<br />
-<br />
-X   template &lt;class charT&gt;<br />
-    class messages_byname : public messages&lt;charT&gt; {<br />
-    public:<br />
-T     typedef messages_base::catalog catalog;<br />
-T     typedef basic_string&lt;charT&gt;    string_type;<br />
-<br />
-T     explicit messages_byname(const char*, size_t refs = 0);<br />
-    protected:<br />
-T    ~messages_byname();          // virtual<br />
-S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
-S     virtual string_type  do_get(catalog, int set, int msgid,<br />
-                             const string_type&amp; dfault) const;<br />
-S     virtual void    do_close(catalog) const;<br />
-    };<br />
-<br />
-<br />
-   22.3  C Library Locales                                [lib.c.locales]<br />
-<br />
-<br />
-                   Table 13--Header &lt;clocale&gt; synopsis<br />
-            Macros:<br />
-X                        LC_ALL        LC_COLLATE   LC_CTYPE<br />
-X                        LC_MONETARY   LC_NUMERIC   LC_TIME<br />
-X                        NULL<br />
-X           Struct:      lconv<br />
-X           Functions:   localeconv    setlocale<br />
-<br />
-<br />
-   23.2  Sequences                                        [lib.sequences]<br />
-<br />
-   &lt;deque&gt;, &lt;list&gt;, &lt;queue&gt;, &lt;stack&gt;, and &lt;vector&gt;.<br />
-<br />
-   Header &lt;deque&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class deque;<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;list&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class list;<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;queue&gt; synopsis<br />
-<br />
-   namespace std {<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class queue;<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
-              class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
-T   class priority_queue;<br />
-   }<br />
-<br />
-   Header &lt;stack&gt; synopsis<br />
-<br />
-   namespace std {<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class stack;<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;vector&gt; synopsis<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class vector;<br />
-<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-T   template &lt;class Allocator&gt; class vector&lt;bool,Allocator&gt;;<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   23.2.1  Template class deque                               [lib.deque]<br />
-<br />
-    template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-T   class deque {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.deque.cons_ construct/copy/destroy:<br />
-T     explicit deque(const Allocator&amp; = Allocator());<br />
-T     explicit deque(size_type n, const T&amp; value = T(),<br />
-          const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        deque(InputIterator first, InputIterator last,<br />
-              const Allocator&amp; = Allocator());<br />
-T     deque(const deque&lt;T,Allocator&gt;&amp; x);<br />
-T    ~deque();<br />
-T     deque&lt;T,Allocator&gt;&amp; operator=(const deque&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.deque.capacity_ capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-T     bool      empty() const;<br />
-<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.deque.modifiers_ modifiers:<br />
-T     void push_front(const T&amp; x);<br />
-T     void push_back(const T&amp; x);<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert (iterator position,<br />
-                     InputIterator first, InputIterator last);<br />
-T     void pop_front();<br />
-T     void pop_back();<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void     swap(deque&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-    };<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
-                      const deque&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.2  Template class list                                 [lib.list]<br />
-<br />
-T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-    class list {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-<br />
-      // _lib.list.cons_ construct/copy/destroy:<br />
-T     explicit list(const Allocator&amp; = Allocator());<br />
-T     explicit list(size_type n, const T&amp; value = T(),<br />
-                    const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        list(InputIterator first, InputIterator last,<br />
-             const Allocator&amp; = Allocator());<br />
-T     list(const list&lt;T,Allocator&gt;&amp; x);<br />
-T    ~list();<br />
-T     list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.list.capacity_ capacity:<br />
-T     bool      empty() const;<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-      // element access:<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.list.modifiers_ modifiers:<br />
-T     void push_front(const T&amp; x);<br />
-T     void pop_front();<br />
-T     void push_back(const T&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(iterator position, InputIterator first,<br />
-                    InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator position, iterator last);<br />
-T     void     swap(list&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-      // _lib.list.ops_ list operations:<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x);<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator i);<br />
-T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator first,<br />
-                  iterator last);<br />
-T     void remove(const T&amp; value);<br />
-T     template &lt;class Predicate&gt; void remove_if(Predicate pred);<br />
-<br />
-T     void unique();<br />
-T     template &lt;class BinaryPredicate&gt;<br />
-        void unique(BinaryPredicate binary_pred);<br />
-T     void merge(list&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class Compare&gt; void merge(list&lt;T,Allocator&gt;&amp; x, Compare comp);<br />
-        void sort();<br />
-T     template &lt;class Compare&gt; void sort(Compare comp);<br />
-        void reverse();<br />
-    };<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.3.1  Template class queue                             [lib.queue]<br />
-<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
-    class queue {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-    public:<br />
-T     explicit queue(const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const             { return c.empty(); }<br />
-T     size_type size()  const             { return c.size(); }<br />
-T     value_type&amp;       front()           { return c.front(); }<br />
-T     const value_type&amp; front() const     { return c.front(); }<br />
-T     value_type&amp;       back()            { return c.back(); }<br />
-T     const value_type&amp; back() const      { return c.back(); }<br />
-T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
-T     void pop()                          { c.pop_front(); }<br />
-    };<br />
-<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
-                      const queue&lt;T, Container&gt;&amp; y);<br />
-<br />
-   23.2.3.2  Template class priority_queue           [lib.priority.queue]<br />
-<br />
-T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
-              class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
-    class priority_queue {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-T     Compare comp;<br />
-    public:<br />
-T     explicit priority_queue(const Compare&amp; x = Compare(),<br />
-                              const Container&amp; = Container());<br />
-T     template &lt;class InputIterator&gt;<br />
-        priority_queue(InputIterator first, InputIterator last,<br />
-                       const Compare&amp; x = Compare(),<br />
-                       const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const       { return c.empty(); }<br />
-T     size_type size()  const       { return c.size(); }<br />
-T     const value_type&amp; top() const { return c.front(); }<br />
-T     void push(const value_type&amp; x);<br />
-T     void pop();<br />
-    };<br />
-<br />
-   23.2.3.3  Template class stack                             [lib.stack]<br />
-<br />
-T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
-    class stack {<br />
-    public:<br />
-T     typedef typename Container::value_type            value_type;<br />
-T     typedef typename Container::size_type             size_type;<br />
-T     typedef          Container                        container_type;<br />
-    protected:<br />
-T     Container c;<br />
-    public:<br />
-T     explicit stack(const Container&amp; = Container());<br />
-<br />
-T     bool      empty() const             { return c.empty(); }<br />
-T     size_type size()  const             { return c.size(); }<br />
-T     value_type&amp;       top()             { return c.back(); }<br />
-T     const value_type&amp; top() const       { return c.back(); }<br />
-T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
-T     void pop()                          { c.pop_back(); }<br />
-    };<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-T   template &lt;class T, class Container&gt;<br />
-      bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
-                      const stack&lt;T, Container&gt;&amp; y);<br />
-<br />
-   23.2.4  Template class vector                             [lib.vector]<br />
-<br />
-    template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
-T   class vector {<br />
-    public:<br />
-      // types:<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef T                                     value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.vector.cons_ construct/copy/destroy:<br />
-T     explicit vector(const Allocator&amp; = Allocator());<br />
-T     explicit vector(size_type n, const T&amp; value = T(),<br />
-          const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        vector(InputIterator first, InputIterator last,<br />
-          const Allocator&amp; = Allocator());<br />
-T     vector(const vector&lt;T,Allocator&gt;&amp; x);<br />
-T    ~vector();<br />
-T     vector&lt;T,Allocator&gt;&amp; operator=(const vector&lt;T,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; u);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // _lib.vector.capacity_ capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, T c = T());<br />
-T     size_type capacity() const;<br />
-T     bool      empty() const;<br />
-T     void      reserve(size_type n);<br />
-<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // _lib.vector.modifiers_ modifiers:<br />
-T     void push_back(const T&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const T&amp; x);<br />
-T     void     insert(iterator position, size_type n, const T&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-          void insert(iterator position,<br />
-                      InputIterator first, InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void     swap(vector&lt;T,Allocator&gt;&amp;);<br />
-T     void     clear();<br />
-    };<br />
-<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
-                      const vector&lt;T,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class T, class Allocator&gt;<br />
-      void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.2.5  Class vector&lt;bool&gt;                           [lib.vector.bool]<br />
-<br />
-T   template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; {<br />
-    public:<br />
-      // types:<br />
-T     typedef bool                                  const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef bool                                  value_type;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef implementation defined                pointer;<br />
-T     typedef implementation defined                const_pointer<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // bit reference:<br />
-T     class reference {<br />
-       friend class vector;<br />
-T      reference();<br />
-      public:<br />
-T      ~reference();<br />
-T       operator bool() const;<br />
-T       reference&amp; operator=(const bool x);<br />
-T       reference&amp; operator=(const reference&amp; x);<br />
-T       void flip();              // flips the bit<br />
-      };<br />
-<br />
-      // construct/copy/destroy:<br />
-T     explicit vector(const Allocator&amp; = Allocator());<br />
-T     explicit vector(size_type n, const bool&amp; value = bool(),<br />
-                      const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        vector(InputIterator first, InputIterator last,<br />
-          const Allocator&amp; = Allocator());<br />
-T     vector(const vector&lt;bool,Allocator&gt;&amp; x);<br />
-T    ~vector();<br />
-T     vector&lt;bool,Allocator&gt;&amp; operator=(const vector&lt;bool,Allocator&gt;&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void assign(InputIterator first, InputIterator last);<br />
-T     void assign(size_type n, const T&amp; t);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-T     void      resize(size_type sz, bool c = false);<br />
-T     size_type capacity() const;<br />
-T     bool      empty() const;<br />
-T     void      reserve(size_type n);<br />
-      // element access:<br />
-T     reference       operator[](size_type n);<br />
-T     const_reference operator[](size_type n) const;<br />
-T     const_reference at(size_type n) const;<br />
-T     reference       at(size_type n);<br />
-T     reference       front();<br />
-T     const_reference front() const;<br />
-T     reference       back();<br />
-T     const_reference back() const;<br />
-      // modifiers:<br />
-T     void push_back(const bool&amp; x);<br />
-T     void pop_back();<br />
-T     iterator insert(iterator position, const bool&amp; x);<br />
-T     void     insert (iterator position, size_type n, const bool&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-          void insert(iterator position,<br />
-                      InputIterator first, InputIterator last);<br />
-T     iterator erase(iterator position);<br />
-T     iterator erase(iterator first, iterator last);<br />
-T     void swap(vector&lt;bool,Allocator&gt;&amp;);<br />
-T     static void swap(reference x, reference y);<br />
-T     void flip();                // flips all bits<br />
-T     void clear();<br />
-    };<br />
-<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-T   template &lt;class Allocator&gt;<br />
-      bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
-                      const vector&lt;bool,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Allocator&gt;<br />
-      void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
-<br />
-   23.3  Associative containers                         [lib.associative]<br />
-<br />
- &lt;map&gt; and &lt;set&gt;:<br />
-<br />
-   Header &lt;map&gt; synopsis<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T     class map;<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-      class multimap;<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   Header &lt;set&gt; synopsis<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T     class set;<br />
-<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-      class multiset;<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-   }<br />
-<br />
-   23.3.1  Template class map                                   [lib.map]<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T     class map {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef T                                     mapped_type;<br />
-T     typedef pair&lt;const Key, T&gt;                    value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-T     class value_compare<br />
-        : public binary_function&lt;value_type,value_type,bool&gt; {<br />
-      friend class map;<br />
-      protected:<br />
-T       Compare comp;<br />
-T       value_compare(Compare c) : comp(c) {}<br />
-      public:<br />
-T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
-          return comp(x.first, y.first);<br />
-        }<br />
-      };<br />
-<br />
-      // _lib.map.cons_ construct/copy/destroy:<br />
-T     explicit map(const Compare&amp; comp = Compare(),<br />
-                   const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        map(InputIterator first, InputIterator last,<br />
-            const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
-T     map(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T    ~map();<br />
-T     map&lt;Key,T,Compare,Allocator&gt;&amp;<br />
-        operator=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool      empty() const;<br />
-T     size_type size() const;<br />
-T     size_type max_size() const;<br />
-      // _lib.map.access_ element access:<br />
-T     T&amp; operator[](const key_type&amp; x);<br />
-      // modifiers:<br />
-T     pair&lt;iterator, bool&gt; insert(const value_type&amp; x);<br />
-T     iterator             insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(map&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // _lib.map.ops_ map operations:<br />
-T     iterator       find(const key_type&amp; x);<br />
-T     const_iterator find(const key_type&amp; x) const;<br />
-T     size_type      count(const key_type&amp; x) const;<br />
-T     iterator       lower_bound(const key_type&amp; x);<br />
-T     const_iterator lower_bound(const key_type&amp; x) const;<br />
-T     iterator       upper_bound(const key_type&amp; x);<br />
-T     const_iterator upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt;<br />
-          equal_range(const key_type&amp; x);<br />
-T     pair&lt;const_iterator,const_iterator&gt;<br />
-          equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.2  Template class multimap                         [lib.multimap]<br />
-<br />
-    template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
-T   class multimap {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef T                                     mapped_type;<br />
-T     typedef pair&lt;const Key,T&gt;                     value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-T     class value_compare<br />
-        : public binary_function&lt;value_type,value_type,bool&gt; {<br />
-      friend class multimap;<br />
-      protected:<br />
-T       Compare comp;<br />
-T       value_compare(Compare c) : comp(c) {}<br />
-      public:<br />
-T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
-          return comp(x.first, y.first);<br />
-        }<br />
-      };<br />
-      // construct/copy/destroy:<br />
-T     explicit multimap(const Compare&amp; comp = Compare(),<br />
-                        const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        multimap(InputIterator first, InputIterator last,<br />
-                 const Compare&amp; comp = Compare(),<br />
-                 const Allocator&amp; = Allocator());<br />
-T     multimap(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T    ~multimap();<br />
-T     multimap&lt;Key,T,Compare,Allocator&gt;&amp;<br />
-        operator=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool           empty() const;<br />
-T     size_type      size() const;<br />
-T     size_type      max_size() const;<br />
-      // modifiers:<br />
-T     iterator insert(const value_type&amp; x);<br />
-T     iterator insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare    key_comp() const;<br />
-T     value_compare  value_comp() const;<br />
-      // map operations:<br />
-T     iterator       find(const key_type&amp; x);<br />
-T     const_iterator find(const key_type&amp; x) const;<br />
-T     size_type      count(const key_type&amp; x) const;<br />
-T     iterator       lower_bound(const key_type&amp; x);<br />
-T     const_iterator lower_bound(const key_type&amp; x) const;<br />
-T     iterator       upper_bound(const key_type&amp; x);<br />
-T     const_iterator upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt;             equal_range(const key_type&amp; x);<br />
-T     pair&lt;const_iterator,const_iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                      const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
-      void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
-                multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
-<br />
-<br />
-   23.3.3  Template class set                                   [lib.set]<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T   class set {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef Key                                   value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Compare                               value_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type;<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-      // _lib.set.cons_ construct/copy/destroy:<br />
-T     explicit set(const Compare&amp; comp = Compare(),<br />
-                   const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        set(InputIterator first, InputIterator last,<br />
-            const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
-T     set(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T    ~set();<br />
-T     set&lt;Key,Compare,Allocator&gt;&amp;<br />
-        operator=(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool          empty() const;<br />
-T     size_type     size() const;<br />
-T     size_type     max_size() const;<br />
-      // modifiers:<br />
-T     pair&lt;iterator,bool&gt; insert(const value_type&amp; x);<br />
-T     iterator            insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-T         void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(set&lt;Key,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // set operations:<br />
-T     iterator  find(const key_type&amp; x) const;<br />
-T     size_type count(const key_type&amp; x) const;<br />
-T     iterator  lower_bound(const key_type&amp; x) const;<br />
-T     iterator  upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.4  Template class multiset                         [lib.multiset]<br />
-<br />
-    template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
-              class Allocator = allocator&lt;Key&gt; &gt;<br />
-T   class multiset {<br />
-    public:<br />
-      // types:<br />
-T     typedef Key                                   key_type;<br />
-T     typedef Key                                   value_type;<br />
-T     typedef Compare                               key_compare;<br />
-T     typedef Compare                               value_compare;<br />
-T     typedef Allocator                             allocator_type;<br />
-T     typedef typename Allocator::reference         reference;<br />
-T     typedef typename Allocator::const_reference   const_reference;<br />
-T     typedef implementation defined                iterator;<br />
-T     typedef implementation defined                const_iterator;<br />
-T     typedef implementation defined                size_type;<br />
-T     typedef implementation defined                difference_type<br />
-T     typedef typename Allocator::pointer           pointer;<br />
-T     typedef typename Allocator::const_pointer     const_pointer;<br />
-T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
-T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
-<br />
-      // construct/copy/destroy:<br />
-T     explicit multiset(const Compare&amp; comp = Compare(),<br />
-                        const Allocator&amp; = Allocator());<br />
-T     template &lt;class InputIterator&gt;<br />
-        multiset(InputIterator first, InputIterator last,<br />
-                 const Compare&amp; comp = Compare(),<br />
-                 const Allocator&amp; = Allocator());<br />
-T     multiset(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T    ~multiset();<br />
-T     multiset&lt;Key,Compare,Allocator&gt;&amp;<br />
-          operator=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
-T     allocator_type get_allocator() const;<br />
-      // iterators:<br />
-T     iterator               begin();<br />
-T     const_iterator         begin() const;<br />
-T     iterator               end();<br />
-T     const_iterator         end() const;<br />
-T     reverse_iterator       rbegin();<br />
-T     const_reverse_iterator rbegin() const;<br />
-T     reverse_iterator       rend();<br />
-T     const_reverse_iterator rend() const;<br />
-      // capacity:<br />
-T     bool          empty() const;<br />
-T     size_type     size() const;<br />
-T     size_type     max_size() const;<br />
-      // modifiers:<br />
-T     iterator insert(const value_type&amp; x);<br />
-T     iterator insert(iterator position, const value_type&amp; x);<br />
-T     template &lt;class InputIterator&gt;<br />
-        void insert(InputIterator first, InputIterator last);<br />
-T     void      erase(iterator position);<br />
-T     size_type erase(const key_type&amp; x);<br />
-T     void      erase(iterator first, iterator last);<br />
-T     void swap(multiset&lt;Key,Compare,Allocator&gt;&amp;);<br />
-T     void clear();<br />
-      // observers:<br />
-T     key_compare   key_comp() const;<br />
-T     value_compare value_comp() const;<br />
-      // set operations:<br />
-T     iterator  find(const key_type&amp; x) const;<br />
-T     size_type count(const key_type&amp; x) const;<br />
-T     iterator  lower_bound(const key_type&amp; x) const;<br />
-T     iterator  upper_bound(const key_type&amp; x) const;<br />
-T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
-    };<br />
-<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                      const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-    // specialized algorithms:<br />
-T   template &lt;class Key, class Compare, class Allocator&gt;<br />
-      void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
-                multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
-<br />
-   23.3.5  Template class bitset                    [lib.template.bitset]<br />
-<br />
-   Header &lt;bitset&gt; synopsis<br />
-<br />
-T   template &lt;size_t N&gt; class bitset;<br />
-    // _lib.bitset.operators_ bitset operations:<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator&amp;(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator|(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;size_t N&gt;<br />
-      bitset&lt;N&gt; operator^(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
-T   template &lt;class charT, class traits, size_t N&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp; is, bitset&lt;N&gt;&amp; x);<br />
-T   template &lt;class charT, class traits, size_t N&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os, const bitset&lt;N&gt;&amp; x);<br />
-<br />
-T   template&lt;size_t N&gt; class bitset {<br />
-    public:<br />
-      // bit reference:<br />
-T     class reference {<br />
-        friend class bitset;<br />
-T       reference();<br />
-      public:<br />
-T      ~reference();<br />
-T       reference&amp; operator=(bool x);             // for b[i] = x;<br />
-T       reference&amp; operator=(const reference&amp;);   // for b[i] = b[j];<br />
-T       bool operator~() const;                   // flips the bit<br />
-T       operator bool() const;                    // for x = b[i];<br />
-T       reference&amp; flip();                        // for b[i].flip();<br />
-      };<br />
-<br />
-      // _lib.bitset.cons_ constructors:<br />
-T     bitset();<br />
-T     bitset(unsigned long val);<br />
-T     template&lt;class charT, class traits, class Allocator&gt;<br />
-        explicit bitset(<br />
-          const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-          typename basic_string&lt;charT,traits,Allocator&gt;::size_type pos = 0,<br />
-          typename basic_string&lt;charT,traits,Allocator&gt;::size_type n =<br />
-            basic_string&lt;charT,traits,Allocator&gt;::npos);<br />
-      // _lib.bitset.members_ bitset operations:<br />
-T     bitset&lt;N&gt;&amp; operator&amp;=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator|=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator^=(const bitset&lt;N&gt;&amp; rhs);<br />
-T     bitset&lt;N&gt;&amp; operator&lt;&lt;=(size_t pos);<br />
-T     bitset&lt;N&gt;&amp; operator&gt;&gt;=(size_t pos);<br />
-T     bitset&lt;N&gt;&amp; set();<br />
-T     bitset&lt;N&gt;&amp; set(size_t pos, int val = true);<br />
-T     bitset&lt;N&gt;&amp; reset();<br />
-T     bitset&lt;N&gt;&amp; reset(size_t pos);<br />
-T     bitset&lt;N&gt;  operator~() const;<br />
-T     bitset&lt;N&gt;&amp; flip();<br />
-T     bitset&lt;N&gt;&amp; flip(size_t pos);<br />
-      // element access:<br />
-T     reference operator[](size_t pos);         // for b[i];<br />
-T     unsigned long  to_ulong() const;<br />
-T     template &lt;class charT, class traits, class Allocator&gt;<br />
-        basic_string&lt;charT, traits, Allocator&gt; to_string() const;<br />
-T     size_t count() const;<br />
-T     size_t size()  const;<br />
-T     bool operator==(const bitset&lt;N&gt;&amp; rhs) const;<br />
-T     bool operator!=(const bitset&lt;N&gt;&amp; rhs) const;<br />
-T     bool test(size_t pos) const;<br />
-T     bool any() const;<br />
-T     bool none() const;<br />
-T     bitset&lt;N&gt; operator&lt;&lt;(size_t pos) const;<br />
-T     bitset&lt;N&gt; operator&gt;&gt;(size_t pos) const;<br />
-    };<br />
-<br />
-<br />
-<br />
-<br />
-   24.2  Header &lt;iterator&gt; synopsis               [lib.iterator.synopsis]<br />
-<br />
-    // _lib.iterator.primitives_, primitives:<br />
-T   template&lt;class Iterator&gt; struct iterator_traits;<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt;;<br />
-<br />
-X   template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
-             class Pointer = T*, class Reference = T&amp;&gt; struct iterator;<br />
-T   struct input_iterator_tag {};<br />
-T   struct output_iterator_tag {};<br />
-T   struct forward_iterator_tag: public input_iterator_tag {};<br />
-T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
-T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
-    // _lib.iterator.operations_, iterator operations:<br />
-T   template &lt;class InputIterator, class Distance&gt;<br />
-      void advance(InputIterator&amp; i, Distance n);<br />
-T   template &lt;class InputIterator&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-      distance(InputIterator first, InputIterator last);<br />
-    // _lib.predef.iterators_, predefined iterators:<br />
-X   template &lt;class Iterator&gt; class reverse_iterator;<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator==(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator!=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      reverse_iterator&lt;Iterator&gt;<br />
-        operator+(<br />
-          typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
-          const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
-<br />
-X   template &lt;class Container&gt; class back_insert_iterator;<br />
-T   template &lt;class Container&gt;<br />
-      back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
-X   template &lt;class Container&gt; class front_insert_iterator;<br />
-T   template &lt;class Container&gt;<br />
-      front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
-X   template &lt;class Container&gt; class insert_iterator;<br />
-T   template &lt;class Container, class Iterator&gt;<br />
-      insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
-    // _lib.stream.iterators_, stream iterators:<br />
-X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
-              class Distance = ptrdiff_t&gt;<br />
-      class istream_iterator;<br />
-    template &lt;class T, class charT, class traits, class Distance&gt;<br />
-X     bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-    template &lt;class T, class charT, class traits, class Distance&gt;<br />
-X     bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
-        class ostream_iterator;<br />
-X   template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class istreambuf_iterator;<br />
-X   template &lt;class charT, class traits&gt;<br />
-      bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-X   template &lt;class charT, class traits&gt;<br />
-      bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class ostreambuf_iterator;<br />
-<br />
-   24.3  Iterator primitives                    [lib.iterator.primitives]<br />
-<br />
-T   template&lt;class Iterator&gt; struct iterator_traits {<br />
-T     typedef typename Iterator::difference_type difference_type;<br />
-T     typedef typename Iterator::value_type value_type;<br />
-T     typedef typename Iterator::pointer pointer;<br />
-T     typedef typename Iterator::reference reference;<br />
-T     typedef typename Iterator::iterator_category iterator_category;<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt; {<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T value_type;<br />
-T     typedef T* pointer;<br />
-T     typedef T&amp; reference;<br />
-T     typedef random_access_iterator_tag iterator_category;<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; struct iterator_traits&lt;const T*&gt; {<br />
-T     typedef ptrdiff_t difference_type;<br />
-T     typedef T value_type;<br />
-T     typedef const T* pointer;<br />
-T     typedef const T&amp; reference;<br />
-T     typedef random_access_iterator_tag iterator_category;<br />
-    };<br />
-<br />
-   24.3.2  Basic iterator                            [lib.iterator.basic]<br />
-<br />
-    template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
-             class Pointer = T*, class Reference = T&amp;&gt;<br />
-X     struct iterator {<br />
-T         typedef T         value_type;<br />
-T         typedef Distance  difference_type;<br />
-T         typedef Pointer   pointer;<br />
-T         typedef Reference reference;<br />
-T         typedef Category  iterator_category;<br />
-    };<br />
-<br />
-   24.3.3  Standard iterator tags                 [lib.std.iterator.tags]<br />
-<br />
-T   struct input_iterator_tag {};<br />
-T   struct output_iterator_tag {};<br />
-T   struct forward_iterator_tag: public input_iterator_tag {};<br />
-T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
-T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
-<br />
-<br />
-   24.4.1  Reverse iterators                      [lib.reverse.iterators]<br />
-<br />
-    template &lt;class Iterator&gt;<br />
-X   class reverse_iterator : public<br />
-          iterator&lt;typename iterator_traits&lt;Iterator&gt;::iterator_category,<br />
-                   typename iterator_traits&lt;Iterator&gt;::value_type,<br />
-                   typename iterator_traits&lt;Iterator&gt;::difference_type,<br />
-                   typename iterator_traits&lt;Iterator&gt;::pointer,<br />
-                   typename iterator_traits&lt;Iterator&gt;::reference&gt; {<br />
-    protected:<br />
-T     Iterator current;<br />
-    public:<br />
-T     typedef Iterator<br />
-          iterator_type;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::difference_type<br />
-          difference_type;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::reference<br />
-          reference;<br />
-T     typedef typename iterator_traits&lt;Iterator&gt;::pointer<br />
-          pointer;<br />
-<br />
-T     reverse_iterator();<br />
-T     explicit reverse_iterator(Iterator x);<br />
-T     template &lt;class U&gt; reverse_iterator(const reverse_iterator&lt;U&gt;&amp; u);<br />
-T     Iterator base() const;      // explicit<br />
-T     reference operator*() const;<br />
-T     pointer   operator-&gt;() const;<br />
-T     reverse_iterator&amp; operator++();<br />
-T     reverse_iterator  operator++(int);<br />
-T     reverse_iterator&amp; operator--();<br />
-T     reverse_iterator  operator--(int);<br />
-<br />
-T     reverse_iterator  operator+ (difference_type n) const;<br />
-T     reverse_iterator&amp; operator+=(difference_type n);<br />
-T     reverse_iterator  operator- (difference_type n) const;<br />
-T     reverse_iterator&amp; operator-=(difference_type n);<br />
-T     reference operator[](difference_type n) const;<br />
-    };<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator==(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator!=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&gt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      bool operator&lt;=(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
-T   template &lt;class Iterator&gt;<br />
-      reverse_iterator&lt;Iterator&gt; operator+(<br />
-        typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
-        const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
-<br />
-<br />
-   24.4.2.1  Template class                    [lib.back.insert.iterator]<br />
-       back_insert_iterator<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class back_insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     explicit back_insert_iterator(Container&amp; x);<br />
-T     back_insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-<br />
-T     back_insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     back_insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     back_insert_iterator&lt;Container&gt;  operator++(int);<br />
-    };<br />
-T   template &lt;class Container&gt;<br />
-      back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
-<br />
-<br />
-<br />
-   24.4.2.3  Template class                   [lib.front.insert.iterator]<br />
-       front_insert_iterator<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class front_insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     explicit front_insert_iterator(Container&amp; x);<br />
-T     front_insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-T     front_insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     front_insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     front_insert_iterator&lt;Container&gt;  operator++(int);<br />
-    };<br />
-T   template &lt;class Container&gt;<br />
-      front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
-<br />
-<br />
-   24.4.2.5  Template class insert_iterator         [lib.insert.iterator]<br />
-<br />
-    template &lt;class Container&gt;<br />
-X   class insert_iterator :<br />
-          public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
-    protected:<br />
-T     Container* container;<br />
-T     typename Container::iterator iter;<br />
-    public:<br />
-T     typedef Container container_type;<br />
-T     insert_iterator(Container&amp; x, typename Container::iterator i);<br />
-T     insert_iterator&lt;Container&gt;&amp;<br />
-        operator=(typename Container::const_reference value);<br />
-T     insert_iterator&lt;Container&gt;&amp; operator*();<br />
-T     insert_iterator&lt;Container&gt;&amp; operator++();<br />
-T     insert_iterator&lt;Container&gt;&amp; operator++(int);<br />
-    };<br />
-T   template &lt;class Container, class Iterator&gt;<br />
-      insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
-<br />
-   24.5.1  Template class istream_iterator         [lib.istream.iterator]<br />
-<br />
-    template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
-        class Distance = ptrdiff_t&gt;<br />
-X   class istream_iterator:<br />
-      public iterator&lt;input_iterator_tag, T, Distance, const T*, const T&amp;&gt; {<br />
-    public:<br />
-T     typedef charT char_type<br />
-T     typedef traits traits_type;<br />
-T     typedef basic_istream&lt;charT,traits&gt; istream_type;<br />
-T     istream_iterator();<br />
-T     istream_iterator(istream_type&amp; s);<br />
-T     istream_iterator(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x);<br />
-T    ~istream_iterator();<br />
-<br />
-T     const T&amp; operator*() const;<br />
-T     const T* operator-&gt;() const;<br />
-T     istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++();<br />
-T     istream_iterator&lt;T,charT,traits,Distance&gt;  operator++(int);<br />
-    };<br />
-<br />
-T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
-      bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
-      bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
-                      const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
-<br />
-<br />
-   24.5.2  Template class ostream_iterator         [lib.ostream.iterator]<br />
-<br />
-    template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class ostream_iterator:<br />
-      public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
-    public:<br />
-T     typedef charT char_type;<br />
-T     typedef traits traits_type;<br />
-T     typedef basic_ostream&lt;charT,traits&gt; ostream_type;<br />
-T     ostream_iterator(ostream_type&amp; s);<br />
-T     ostream_iterator(ostream_type&amp; s, const charT* delimiter);<br />
-T     ostream_iterator(const ostream_iterator&lt;T,charT,traits&gt;&amp; x);<br />
-T    ~ostream_iterator();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator=(const T&amp; value);<br />
-<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator*();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++();<br />
-T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++(int);<br />
-    };<br />
-<br />
-<br />
-   24.5.3  Template class                       [lib.istreambuf.iterator]<br />
-       istreambuf_iterator<br />
-<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class istreambuf_iterator<br />
-       : public iterator&lt;input_iterator_tag, charT,<br />
-                         typename traits::off_type, charT*, charT&amp;&gt; {<br />
-    public:<br />
-T     typedef charT                         char_type;<br />
-T     typedef traits                        traits_type;<br />
-T     typedef typename traits::int_type     int_type;<br />
-T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
-T     typedef basic_istream&lt;charT,traits&gt;   istream_type;<br />
-T     class proxy;                        // exposition only<br />
-T     istreambuf_iterator() throw();<br />
-T     istreambuf_iterator(istream_type&amp; s) throw();<br />
-T     istreambuf_iterator(streambuf_type* s) throw();<br />
-T     istreambuf_iterator(const proxy&amp; p) throw();<br />
-T     charT operator*() const;<br />
-T     istreambuf_iterator&lt;charT,traits&gt;&amp; operator++();<br />
-T     proxy operator++(int);<br />
-X     bool equal(istreambuf_iterator&amp; b);<br />
-    };<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
-                      const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
-<br />
-   24.5.3.1  Template class              [lib.istreambuf.iterator::proxy]<br />
-       istreambuf_iterator::proxy<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T     class istreambuf_iterator&lt;charT, traits&gt;::proxy<br />
-    {<br />
-T     charT keep_;<br />
-T     basic_streambuf&lt;charT,traits&gt;* sbuf_;<br />
-T     proxy(charT c,<br />
-            basic_streambuf&lt;charT,traits&gt;* sbuf);<br />
-        : keep_(c), sbuf_(sbuf) {}<br />
-    public:<br />
-T     charT operator*() { return keep_; }<br />
-    };<br />
-<br />
-<br />
-<br />
-   24.5.4  Template class                       [lib.ostreambuf.iterator]<br />
-       ostreambuf_iterator<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class ostreambuf_iterator:<br />
-      public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
-    public:<br />
-T     typedef charT                         char_type;<br />
-T     typedef traits                        traits_type;<br />
-T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
-T     typedef basic_ostream&lt;charT,traits&gt;   ostream_type;<br />
-    public:<br />
-T     ostreambuf_iterator(ostream_type&amp; s) throw();<br />
-T     ostreambuf_iterator(streambuf_type* s) throw();<br />
-T     ostreambuf_iterator&amp; operator=(charT c);<br />
-T     ostreambuf_iterator&amp; operator*();<br />
-T     ostreambuf_iterator&amp; operator++();<br />
-T     ostreambuf_iterator&amp; operator++(int);<br />
-T     bool failed() const throw();<br />
-    };<br />
-<br />
-<br />
-   Header &lt;algorithm&gt; synopsis<br />
-<br />
-<br />
-    // _lib.alg.nonmodifying_, non-modifying sequence operations:<br />
-T   template&lt;class InputIterator, class Function&gt;<br />
-      Function for_each(InputIterator first, InputIterator last, Function f);<br />
-T   template&lt;class InputIterator, class T&gt;<br />
-      InputIterator find(InputIterator first, InputIterator last,<br />
-                         const T&amp; value);<br />
-T   template&lt;class InputIterator, class Predicate&gt;<br />
-      InputIterator find_if(InputIterator first, InputIterator last,<br />
-                            Predicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1<br />
-        find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1<br />
-        find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                 BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1<br />
-        find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                      ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1<br />
-        find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                 ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                 BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator adjacent_find(ForwardIterator first,<br />
-                                    ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
-      ForwardIterator adjacent_find(ForwardIterator first,<br />
-          ForwardIterator last, BinaryPredicate pred);<br />
-T   template&lt;class InputIterator, class T&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-        count(InputIterator first, InputIterator last, const T&amp; value);<br />
-T   template&lt;class InputIterator, class Predicate&gt;<br />
-      typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
-        count_if(InputIterator first, InputIterator last, Predicate pred);<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      pair&lt;InputIterator1, InputIterator2&gt;<br />
-        mismatch(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
-      pair&lt;InputIterator1, InputIterator2&gt;<br />
-        mismatch(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2, BinaryPredicate pred);<br />
-<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool equal(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
-      bool equal(InputIterator1 first1, InputIterator1 last1,<br />
-                 InputIterator2 first2, BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                              ForwardIterator2 first2, ForwardIterator2 last2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
-             class BinaryPredicate&gt;<br />
-      ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
-                              ForwardIterator2 first2, ForwardIterator2 last2,<br />
-                              BinaryPredicate pred);<br />
-T   template&lt;class ForwardIterator, class Size, class T&gt;<br />
-      ForwardIterator  search_n(ForwardIterator first, ForwardIterator last,<br />
-                              Size count, const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Size, class T, class BinaryPredicate&gt;<br />
-      ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,<br />
-                              Size count, const T&amp; value,<br />
-                              BinaryPredicate pred);<br />
-    // _lib.alg.modifying.operations_, modifying sequence operations:<br />
-    // _lib.alg.copy_, copy:<br />
-T   template&lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator copy(InputIterator first, InputIterator last,<br />
-                          OutputIterator result);<br />
-T   template&lt;class BidirectionalIterator1, class BidirectionalIterator2&gt;<br />
-      BidirectionalIterator2<br />
-        copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,<br />
-                      BidirectionalIterator2 result);<br />
-    // _lib.alg.swap_, swap:<br />
-T   template&lt;class T&gt; void swap(T&amp; a, T&amp; b);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      ForwardIterator2 swap_ranges(ForwardIterator1 first1,<br />
-          ForwardIterator1 last1, ForwardIterator2 first2);<br />
-T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
-      void iter_swap(ForwardIterator1 a, ForwardIterator2 b);<br />
-T   template&lt;class InputIterator, class OutputIterator, class UnaryOperation&gt;<br />
-      OutputIterator transform(InputIterator first, InputIterator last,<br />
-                               OutputIterator result, UnaryOperation op);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class BinaryOperation&gt;<br />
-      OutputIterator transform(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, OutputIterator result,<br />
-                               BinaryOperation binary_op);<br />
-<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      void replace(ForwardIterator first, ForwardIterator last,<br />
-                   const T&amp; old_value, const T&amp; new_value);<br />
-T   template&lt;class ForwardIterator, class Predicate, class T&gt;<br />
-      void replace_if(ForwardIterator first, ForwardIterator last,<br />
-                      Predicate pred, const T&amp; new_value);<br />
-T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
-      OutputIterator replace_copy(InputIterator first, InputIterator last,<br />
-                                  OutputIterator result,<br />
-                                  const T&amp; old_value, const T&amp; new_value);<br />
-T   template&lt;class Iterator, class OutputIterator, class Predicate, class T&gt;<br />
-      OutputIterator replace_copy_if(Iterator first, Iterator last,<br />
-                                     OutputIterator result,<br />
-                                     Predicate pred, const T&amp; new_value);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      void fill(ForwardIterator first, ForwardIterator last, const T&amp; value);<br />
-T   template&lt;class OutputIterator, class Size, class T&gt;<br />
-      void fill_n(OutputIterator first, Size n, const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Generator&gt;<br />
-      void generate(ForwardIterator first, ForwardIterator last, Generator gen);<br />
-T   template&lt;class OutputIterator, class Size, class Generator&gt;<br />
-      void generate_n(OutputIterator first, Size n, Generator gen);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator remove(ForwardIterator first, ForwardIterator last,<br />
-                             const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class Predicate&gt;<br />
-      ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,<br />
-                                Predicate pred);<br />
-T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
-      OutputIterator remove_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result, const T&amp; value);<br />
-T   template&lt;class InputIterator, class OutputIterator, class Predicate&gt;<br />
-      OutputIterator remove_copy_if(InputIterator first, InputIterator last,<br />
-                                    OutputIterator result, Predicate pred);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator unique(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
-      ForwardIterator unique(ForwardIterator first, ForwardIterator last,<br />
-                             BinaryPredicate pred);<br />
-T   template&lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result);<br />
-T   template&lt;class InputIterator, class OutputIterator, class BinaryPredicate&gt;<br />
-      OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
-                                 OutputIterator result, BinaryPredicate pred);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      void reverse(BidirectionalIterator first, BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class OutputIterator&gt;<br />
-      OutputIterator reverse_copy(BidirectionalIterator first,<br />
-                                  BidirectionalIterator last,<br />
-                                  OutputIterator result);<br />
-<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      void rotate(ForwardIterator first, ForwardIterator middle,<br />
-                  ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class OutputIterator&gt;<br />
-      OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,<br />
-                                 ForwardIterator last, OutputIterator result);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void random_shuffle(RandomAccessIterator first,<br />
-                          RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class RandomNumberGenerator&gt;<br />
-      void random_shuffle(RandomAccessIterator first,<br />
-                          RandomAccessIterator last,<br />
-                          RandomNumberGenerator&amp; rand);<br />
-    // _lib.alg.partitions_, partitions:<br />
-T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
-      BidirectionalIterator partition(BidirectionalIterator first,<br />
-                                      BidirectionalIterator last,<br />
-                                      Predicate pred);<br />
-T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
-      BidirectionalIterator stable_partition(BidirectionalIterator first,<br />
-                                             BidirectionalIterator last,<br />
-                                             Predicate pred);<br />
-    // _lib.alg.sorting_, sorting and related operations:<br />
-    // _lib.alg.sort_, sorting:<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void sort(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
-                Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void stable_sort(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void stable_sort(RandomAccessIterator first, RandomAccessIterator last,<br />
-                       Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void partial_sort(RandomAccessIterator first,<br />
-                        RandomAccessIterator middle,<br />
-                        RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void partial_sort(RandomAccessIterator first,<br />
-                        RandomAccessIterator middle,<br />
-                        RandomAccessIterator last, Compare comp);<br />
-T   template&lt;class InputIterator, class RandomAccessIterator&gt;<br />
-      RandomAccessIterator<br />
-        partial_sort_copy(InputIterator first, InputIterator last,<br />
-                          RandomAccessIterator result_first,<br />
-                          RandomAccessIterator result_last);<br />
-T   template&lt;class InputIterator, class RandomAccessIterator, class Compare&gt;<br />
-      RandomAccessIterator<br />
-        partial_sort_copy(InputIterator first, InputIterator last,<br />
-                          RandomAccessIterator result_first,<br />
-                          RandomAccessIterator result_last,<br />
-                          Compare comp);<br />
-<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
-                       RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
-                       RandomAccessIterator last, Compare comp);<br />
-    // _lib.alg.binary.search_, binary search:<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
-                                  const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      pair&lt;ForwardIterator, ForwardIterator&gt;<br />
-        equal_range(ForwardIterator first, ForwardIterator last,<br />
-                    const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      pair&lt;ForwardIterator, ForwardIterator&gt;<br />
-        equal_range(ForwardIterator first, ForwardIterator last,<br />
-                    const T&amp; value, Compare comp);<br />
-T   template&lt;class ForwardIterator, class T&gt;<br />
-      bool binary_search(ForwardIterator first, ForwardIterator last,<br />
-                         const T&amp; value);<br />
-T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
-      bool binary_search(ForwardIterator first, ForwardIterator last,<br />
-                         const T&amp; value, Compare comp);<br />
-    // _lib.alg.merge_, merge:<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
-                           InputIterator2 first2, InputIterator2 last2,<br />
-                           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
-                           InputIterator2 first2, InputIterator2 last2,<br />
-                           OutputIterator result, Compare comp);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      void inplace_merge(BidirectionalIterator first,<br />
-                         BidirectionalIterator middle,<br />
-                         BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      void inplace_merge(BidirectionalIterator first,<br />
-                         BidirectionalIterator middle,<br />
-                         BidirectionalIterator last, Compare comp);<br />
-<br />
-    // _lib.alg.set.operations_, set operations:<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool includes(InputIterator1 first1, InputIterator1 last1,<br />
-                    InputIterator2 first2, InputIterator2 last2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
-      bool includes(InputIterator1 first1, InputIterator1 last1,<br />
-                    InputIterator2 first2, InputIterator2 last2, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, InputIterator2 last2,<br />
-                               OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
-                               InputIterator2 first2, InputIterator2 last2,<br />
-                               OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_intersection<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_intersection<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator set_difference<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-             class Compare&gt;<br />
-      OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                    InputIterator2 first2, InputIterator2 last2,<br />
-                                    OutputIterator result, Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
-      OutputIterator<br />
-        set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                 InputIterator2 first2, InputIterator2 last2,<br />
-                                 OutputIterator result);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
-              class Compare&gt;<br />
-      OutputIterator<br />
-        set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
-                                 InputIterator2 first2, InputIterator2 last2,<br />
-                                 OutputIterator result, Compare comp);<br />
-    // _lib.alg.heap.operations_, heap operations:<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void push_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void push_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void pop_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void pop_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                    Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void make_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void make_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-T   template&lt;class RandomAccessIterator&gt;<br />
-      void sort_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
-T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
-      void sort_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
-                     Compare comp);<br />
-    // _lib.alg.min.max_, minimum and maximum:<br />
-T   template&lt;class T&gt; const T&amp; min(const T&amp; a, const T&amp; b);<br />
-T   template&lt;class T, class Compare&gt;<br />
-      const T&amp; min(const T&amp; a, const T&amp; b, Compare comp);<br />
-T   template&lt;class T&gt; const T&amp; max(const T&amp; a, const T&amp; b);<br />
-T   template&lt;class T, class Compare&gt;<br />
-      const T&amp; max(const T&amp; a, const T&amp; b, Compare comp);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator min_element(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class Compare&gt;<br />
-      ForwardIterator min_element(ForwardIterator first, ForwardIterator last,<br />
-                                Compare comp);<br />
-T   template&lt;class ForwardIterator&gt;<br />
-      ForwardIterator max_element(ForwardIterator first, ForwardIterator last);<br />
-T   template&lt;class ForwardIterator, class Compare&gt;<br />
-      ForwardIterator max_element(ForwardIterator first, ForwardIterator last,<br />
-                                Compare comp);<br />
-T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
-      bool lexicographical_compare<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2);<br />
-T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
-      bool lexicographical_compare<br />
-          (InputIterator1 first1, InputIterator1 last1,<br />
-           InputIterator2 first2, InputIterator2 last2,<br />
-           Compare comp);<br />
-<br />
-    // _lib.alg.permutation.generators_, permutations<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      bool next_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      bool next_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last, Compare comp);<br />
-T   template&lt;class BidirectionalIterator&gt;<br />
-      bool prev_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last);<br />
-T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
-      bool prev_permutation(BidirectionalIterator first,<br />
-                            BidirectionalIterator last, Compare comp);<br />
-<br />
-<br />
-   25.4  C library algorithms                         [lib.alg.c.library]<br />
-<br />
-   1 Header &lt;cstdlib&gt; (partial, Table 2):<br />
-<br />
-                    Table 2--Header &lt;cstdlib&gt; synopsis<br />
-<br />
-                      Functions:   bsearch   qsort<br />
-<br />
-<br />
-X  extern "C" void *bsearch(const void *key, const void *base,<br />
-                          size_t nmemb, size_t size,<br />
-                          int (*compar)(const void *, const void *));<br />
-X  extern "C++" void *bsearch(const void *key, const void *base,<br />
-                          size_t nmemb, size_t size,<br />
-                          int (*compar)(const void *, const void *));<br />
-<br />
-X  extern "C" void qsort(void* base, size_t nmemb, size_t size,<br />
-                  int (*compar)(const void*, const void*));<br />
-X  extern "C++" void qsort(void* base, size_t nmemb, size_t size,<br />
-                  int (*compar)(const void*, const void*));<br />
-<br />
-<br />
-<br />
-   26.2  Complex numbers                            [lib.complex.numbers]<br />
-<br />
-<br />
-   26.2.1  Header &lt;complex&gt; synopsis               [lib.complex.synopsis]<br />
-<br />
-T   template&lt;class T&gt; class complex;<br />
-T   template&lt;&gt; class complex&lt;float&gt;;<br />
-T   template&lt;&gt; class complex&lt;double&gt;;<br />
-T   template&lt;&gt; class complex&lt;long double&gt;;<br />
-    // _lib.complex.ops_ operators:<br />
-T   template&lt;class T&gt;<br />
-      complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-    // _lib.complex.value.ops_ values:<br />
-T   template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; T abs(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T arg(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; T norm(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; conj(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;);<br />
-    // _lib.complex.transcendentals_ transcendentals:<br />
-T   template&lt;class T&gt; complex&lt;T&gt; cos  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; cosh (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; exp  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; log  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; log10(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, int);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; pow(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sin  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sinh (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; sqrt (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; tan  (const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; tanh (const complex&lt;T&gt;&amp;);<br />
-   }<br />
-<br />
-   26.2.2  Template class complex                           [lib.complex]<br />
-<br />
-    template&lt;class T&gt;<br />
-T   class complex {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     complex(const T&amp; re = T(), const T&amp; im = T());<br />
-T     complex(const complex&amp;);<br />
-T     template&lt;class X&gt; complex(const complex&lt;X&gt;&amp;);<br />
-<br />
-T     T real() const;<br />
-T     T imag() const;<br />
-<br />
-T     complex&lt;T&gt;&amp; operator= (const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator+=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator-=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator*=(const T&amp;);<br />
-T     complex&lt;T&gt;&amp; operator/=(const T&amp;);<br />
-<br />
-T     complex&amp; operator=(const complex&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
-      (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_istream&lt;charT, traits&gt;&amp;<br />
-      operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T, class charT, class traits&gt;<br />
-      basic_ostream&lt;charT, traits&gt;&amp;<br />
-      operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
-<br />
-<br />
-   26.2.3  complex specializations                  [lib.complex.special]<br />
-<br />
-T   template&lt;&gt; class complex&lt;float&gt; {<br />
-    public:<br />
-T     typedef float value_type;<br />
-<br />
-T     complex(float re = 0.0f, float im = 0.0f);<br />
-T     explicit complex(const complex&lt;double&gt;&amp;);<br />
-T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
-T     float real() const;<br />
-T     float imag() const;<br />
-<br />
-T     complex&lt;float&gt;&amp; operator= (float);<br />
-T     complex&lt;float&gt;&amp; operator+=(float);<br />
-T     complex&lt;float&gt;&amp; operator-=(float);<br />
-T     complex&lt;float&gt;&amp; operator*=(float);<br />
-T     complex&lt;float&gt;&amp; operator/=(float);<br />
-<br />
-T     complex&lt;float&gt;&amp; operator=(const complex&lt;float&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-T   template&lt;&gt; class complex&lt;double&gt; {<br />
-    public:<br />
-T     typedef double value_type;<br />
-<br />
-T     complex(double re = 0.0, double im = 0.0);<br />
-T     complex(const complex&lt;float&gt;&amp;);<br />
-T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
-T     double real() const;<br />
-T     double imag() const;<br />
-<br />
-T     complex&lt;double&gt;&amp; operator= (double);<br />
-T     complex&lt;double&gt;&amp; operator+=(double);<br />
-T     complex&lt;double&gt;&amp; operator-=(double);<br />
-T     complex&lt;double&gt;&amp; operator*=(double);<br />
-T     complex&lt;double&gt;&amp; operator/=(double);<br />
-<br />
-T     complex&lt;double&gt;&amp; operator=(const complex&lt;double&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-T   template&lt;&gt; class complex&lt;long double&gt; {<br />
-    public:<br />
-T     typedef long double value_type;<br />
-<br />
-T     complex(long double re = 0.0L, long double im = 0.0L);<br />
-T     complex(const complex&lt;float&gt;&amp;);<br />
-T     complex(const complex&lt;double&gt;&amp;);<br />
-T     long double real() const;<br />
-T     long double imag() const;<br />
-<br />
-T     complex&lt;long double&gt;&amp; operator=(const complex&lt;long double&gt;&amp;);<br />
-T     complex&lt;long double&gt;&amp; operator= (long double);<br />
-T     complex&lt;long double&gt;&amp; operator+=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator-=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator*=(long double);<br />
-T     complex&lt;long double&gt;&amp; operator/=(long double);<br />
-<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
-T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
-    };<br />
-<br />
-   26.3  Numeric arrays                                    [lib.numarray]<br />
-<br />
-   26.3.1  Header &lt;valarray&gt; synopsis             [lib.valarray.synopsis]<br />
-<br />
-T   template&lt;class T&gt; class valarray;         // An array of type T<br />
-T   class slice;<br />
-T   template&lt;class T&gt; class slice_array;<br />
-T   class gslice;<br />
-T   template&lt;class T&gt; class gslice_array;<br />
-T   template&lt;class T&gt; class mask_array;       // a masked array<br />
-T   template&lt;class T&gt; class indirect_array;   // an indirected array<br />
-<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator*<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator%<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator-<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator|<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt;<br />
-      valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; abs  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; acos (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; asin (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2<br />
-      (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; cos  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; cosh (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; exp  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; log  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; log10(const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; pow(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sin  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sinh (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; sqrt (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; tan  (const valarray&lt;T&gt;&amp;);<br />
-T   template&lt;class T&gt; valarray&lt;T&gt; tanh (const valarray&lt;T&gt;&amp;);<br />
-   }<br />
-<br />
-<br />
-   26.3.2  Template class valarray                [lib.template.valarray]<br />
-<br />
-T   template&lt;class T&gt; class valarray {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-      // _lib.valarray.cons_ construct/destroy:<br />
-T     valarray();<br />
-T     explicit valarray(size_t);<br />
-T     valarray(const T&amp;, size_t);<br />
-T     valarray(const T*, size_t);<br />
-T     valarray(const valarray&amp;);<br />
-T     valarray(const slice_array&lt;T&gt;&amp;);<br />
-T     valarray(const gslice_array&lt;T&gt;&amp;);<br />
-T     valarray(const mask_array&lt;T&gt;&amp;);<br />
-T     valarray(const indirect_array&lt;T&gt;&amp;);<br />
-T    ~valarray();<br />
-<br />
-      // _lib.valarray.assign_ assignment:<br />
-T     valarray&lt;T&gt;&amp; operator=(const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const slice_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const gslice_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const mask_array&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator=(const indirect_array&lt;T&gt;&amp;);<br />
-      // _lib.valarray.access_ element access:<br />
-T     T                 operator[](size_t) const;<br />
-T     T&amp;                operator[](size_t);<br />
-      // _lib.valarray.sub_ subset operations:<br />
-T     valarray&lt;T&gt;       operator[](slice) const;<br />
-T     slice_array&lt;T&gt;    operator[](slice);<br />
-T     valarray&lt;T&gt;       operator[](const gslice&amp;) const;<br />
-T     gslice_array&lt;T&gt;   operator[](const gslice&amp;);<br />
-T     valarray&lt;T&gt;       operator[](const valarray&lt;bool&gt;&amp;) const;<br />
-T     mask_array&lt;T&gt;     operator[](const valarray&lt;bool&gt;&amp;);<br />
-T     valarray&lt;T&gt;       operator[](const valarray&lt;size_t&gt;&amp;) const;<br />
-T     indirect_array&lt;T&gt; operator[](const valarray&lt;size_t&gt;&amp;);<br />
-      // _lib.valarray.unary_ unary operators:<br />
-T     valarray&lt;T&gt; operator+() const;<br />
-T     valarray&lt;T&gt; operator-() const;<br />
-T     valarray&lt;T&gt; operator~() const;<br />
-T     valarray&lt;T&gt; operator!() const;<br />
-      // _lib.valarray.cassign_ computed assignment:<br />
-T     valarray&lt;T&gt;&amp; operator*= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator/= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator%= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator+= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator-= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator^= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&amp;= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator|= (const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const T&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator*= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator/= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator%= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator+= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator-= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator^= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator|= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&amp;= (const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const valarray&lt;T&gt;&amp;);<br />
-T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const valarray&lt;T&gt;&amp;);<br />
-      // _lib.valarray.members_ member functions:<br />
-T     size_t size() const;<br />
-T     T    sum() const;<br />
-T     T    min() const;<br />
-T     T    max() const;<br />
-<br />
-T     valarray&lt;T&gt; shift (int) const;<br />
-T     valarray&lt;T&gt; cshift(int) const;<br />
-T     valarray&lt;T&gt; apply(T func(T)) const;<br />
-T     valarray&lt;T&gt; apply(T func(const T&amp;)) const;<br />
-T     void resize(size_t sz, T c = T());<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.4  Class slice                                  [lib.class.slice]<br />
-<br />
-T   class slice {<br />
-    public:<br />
-T     slice();<br />
-T     slice(size_t, size_t, size_t);<br />
-<br />
-T     size_t start() const;<br />
-T     size_t size() const;<br />
-T     size_t stride() const;<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.5  Template class slice_array          [lib.template.slice.array]<br />
-<br />
-T   template &lt;class T&gt; class slice_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~slice_array();<br />
-    private:<br />
-T     slice_array();<br />
-T     slice_array(const slice_array&amp;);<br />
-T     slice_array&amp; operator=(const slice_array&amp;);<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   26.3.6  The gslice class                            [lib.class.gslice]<br />
-<br />
-T   class gslice {<br />
-    public:<br />
-T     gslice();<br />
-T     gslice(size_t s, const valarray&lt;size_t&gt;&amp; l, const valarray&lt;size_t&gt;&amp; d);<br />
-<br />
-T     size_t           start() const;<br />
-T     valarray&lt;size_t&gt; size() const;<br />
-T     valarray&lt;size_t&gt; stride() const;<br />
-    };<br />
-<br />
-<br />
-   26.3.7  Template class gslice_array        [lib.template.gslice.array]<br />
-<br />
-T   template &lt;class T&gt; class gslice_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~gslice_array();<br />
-    private:<br />
-T     gslice_array();<br />
-T     gslice_array(const gslice_array&amp;);<br />
-T     gslice_array&amp; operator=(const gslice_array&amp;);<br />
-    };<br />
-<br />
-<br />
-   26.3.8  Template class mask_array            [lib.template.mask.array]<br />
-<br />
-T   template &lt;class T&gt; class mask_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~mask_array();<br />
-    private:<br />
-T     mask_array();<br />
-T     mask_array(const mask_array&amp;);<br />
-T     mask_array&amp; operator=(const mask_array&amp;);<br />
-      //  remainder implementation defined<br />
-    };<br />
-<br />
-<br />
-   26.3.9  Template class                   [lib.template.indirect.array]<br />
-       indirect_array<br />
-<br />
-T   template &lt;class T&gt; class indirect_array {<br />
-    public:<br />
-T     typedef T value_type;<br />
-<br />
-T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
-T     void operator=(const T&amp;);<br />
-T    ~indirect_array();<br />
-    private:<br />
-T     indirect_array();<br />
-T     indirect_array(const indirect_array&amp;);<br />
-T     indirect_array&amp; operator=(const indirect_array&amp;);<br />
-      //  remainder implementation defined<br />
-    };<br />
-<br />
-   26.4  Generalized numeric operations                 [lib.numeric.ops]<br />
-<br />
-   Header &lt;numeric&gt; synopsis<br />
-<br />
-T   template &lt;class InputIterator, class T&gt;<br />
-      T accumulate(InputIterator first, InputIterator last, T init);<br />
-<br />
-T   template &lt;class InputIterator, class T, class BinaryOperation&gt;<br />
-      T accumulate(InputIterator first, InputIterator last, T init,<br />
-                   BinaryOperation binary_op);<br />
-<br />
-T   template &lt;class InputIterator1, class InputIterator2, class T&gt;<br />
-      T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
-                      InputIterator2 first2, T init);<br />
-<br />
-T   template &lt;class InputIterator1, class InputIterator2, class T,<br />
-              class BinaryOperation1, class BinaryOperation2&gt;<br />
-      T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
-                      InputIterator2 first2, T init,<br />
-                      BinaryOperation1 binary_op1,<br />
-                      BinaryOperation2 binary_op2);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator partial_sum(InputIterator first,<br />
-                                 InputIterator last,<br />
-                                 OutputIterator result);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator,<br />
-              class BinaryOperation&gt;<br />
-      OutputIterator partial_sum(InputIterator first,<br />
-                                 InputIterator last,<br />
-                                 OutputIterator result,<br />
-                                 BinaryOperation binary_op);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator&gt;<br />
-      OutputIterator adjacent_difference(InputIterator first,<br />
-                                         InputIterator last,<br />
-                                         OutputIterator result);<br />
-<br />
-T   template &lt;class InputIterator, class OutputIterator,<br />
-              class BinaryOperation&gt;<br />
-      OutputIterator adjacent_difference(InputIterator first,<br />
-                                         InputIterator last,<br />
-                                         OutputIterator result,<br />
-                                         BinaryOperation binary_op);<br />
-<br />
-<br />
-   26.5  C Library                                           [lib.c.math]<br />
-<br />
-                     Table 2--Header &lt;cmath&gt; synopsis<br />
-X               Macro:   HUGE_VAL<br />
-                Functions:<br />
-X               acos     cos        fmod    modf   tan<br />
-X               asin     cosh       frexp   pow    tanh<br />
-X               atan     exp        ldexp   sin<br />
-X               atan2    fabs       log     sinh<br />
-X               ceil     floor      log10   sqrt<br />
-<br />
-                    Table 3--Header &lt;cstdlib&gt; synopsis<br />
-X                     Macros:   RAND_MAX<br />
-X                     Types:    div_t      ldiv_t<br />
-                      Functions:<br />
-X                     abs       labs       srand<br />
-X                     div       ldiv       rand<br />
-<br />
-X  long   abs(long);               // labs()<br />
-X  ldiv_t div(long, long);         // ldiv()<br />
-<br />
-X  float abs  (float);<br />
-X  float acos (float);<br />
-X  float asin (float);<br />
-X  float atan (float);<br />
-X  float atan2(float, float);<br />
-X  float ceil (float);<br />
-X  float cos  (float);<br />
-X  float cosh (float);<br />
-X  float exp  (float);<br />
-X  float fabs (float);<br />
-X  float floor(float);<br />
-X  float fmod (float, float);<br />
-X  float frexp(float, int*);<br />
-X  float ldexp(float, int);<br />
-X  float log  (float);<br />
-X  float log10(float);<br />
-X  float modf (float, float*);<br />
-X  float pow  (float, float);<br />
-X  float pow  (float, int);<br />
-X  float sin  (float);<br />
-X  float sinh (float);<br />
-X  float sqrt (float);<br />
-X  float tan  (float);<br />
-X  float tanh (float);<br />
-<br />
-X  double abs(double);            // fabs()<br />
-X  double pow(double, int);<br />
-<br />
-X  long double abs  (long double);<br />
-X  long double acos (long double);<br />
-X  long double asin (long double);<br />
-X  long double atan (long double);<br />
-X  long double atan2(long double, long double);<br />
-X  long double ceil (long double);<br />
-X  long double cos  (long double);<br />
-X  long double cosh (long double);<br />
-X  long double exp  (long double);<br />
-X  long double fabs (long double);<br />
-X  long double floor(long double);<br />
-X  long double fmod (long double, long double);<br />
-X  long double frexp(long double, int*);<br />
-X  long double ldexp(long double, int);<br />
-X  long double log  (long double);<br />
-X  long double log10(long double);<br />
-X  long double modf (long double, long double*);<br />
-X  long double pow  (long double, long double);<br />
-X  long double pow  (long double, int);<br />
-X  long double sin  (long double);<br />
-X  long double sinh (long double);<br />
-X  long double sqrt (long double);<br />
-X  long double tan  (long double);<br />
-X  long double tanh (long double);<br />
-<br />
-   Header &lt;iosfwd&gt; synopsis<br />
-<br />
-X   template&lt;class charT&gt; class char_traits;<br />
-X   template&lt;&gt; class char_traits&lt;char&gt;;<br />
-X   template&lt;&gt; class char_traits&lt;wchar_t&gt;;<br />
-X   template&lt;class T&gt; class allocator;<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ios;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_streambuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_istream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ostream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_iostream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringbuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_istringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_ostringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_filebuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ifstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ofstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_fstream;<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class istreambuf_iterator;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class ostreambuf_iterator;<br />
-X   typedef basic_ios&lt;char&gt;       ios;<br />
-X   typedef basic_ios&lt;wchar_t&gt;    wios;<br />
-X   typedef basic_streambuf&lt;char&gt; streambuf;<br />
-X   typedef basic_istream&lt;char&gt;   istream;<br />
-X   typedef basic_ostream&lt;char&gt;   ostream;<br />
-X   typedef basic_iostream&lt;char&gt;  iostream;<br />
-X   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
-X   typedef basic_istringstream&lt;char&gt; istringstream;<br />
-X   typedef basic_ostringstream&lt;char&gt; ostringstream;<br />
-X   typedef basic_stringstream&lt;char&gt;  stringstream;<br />
-X   typedef basic_filebuf&lt;char&gt;  filebuf;<br />
-X   typedef basic_ifstream&lt;char&gt; ifstream;<br />
-X   typedef basic_ofstream&lt;char&gt; ofstream;<br />
-X   typedef basic_fstream&lt;char&gt;  fstream;<br />
-X   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
-X   typedef basic_istream&lt;wchar_t&gt;   wistream;<br />
-X   typedef basic_ostream&lt;wchar_t&gt;   wostream;<br />
-X   typedef basic_iostream&lt;wchar_t&gt;  wiostream;<br />
-X   typedef basic_stringbuf&lt;wchar_t&gt;     wstringbuf;<br />
-X   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
-X   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
-X   typedef basic_stringstream&lt;wchar_t&gt;  wstringstream;<br />
-<br />
-X   typedef basic_filebuf&lt;wchar_t&gt;  wfilebuf;<br />
-X   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
-X   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
-X   typedef basic_fstream&lt;wchar_t&gt;  wfstream;<br />
-X   template &lt;class state&gt; class fpos;<br />
-X   typedef fpos&lt;char_traits&lt;char&gt;::state_type&gt;    streampos;<br />
-X   typedef fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt; wstreampos;<br />
-<br />
-   27.3  Standard iostream objects                 [lib.iostream.objects]<br />
-<br />
-   Header &lt;iostream&gt; synopsis<br />
-<br />
-T  [must also include &lt;istream&gt; and &lt;ostream&gt;]<br />
-T   extern istream cin;<br />
-T   extern ostream cout;<br />
-T   extern ostream cerr;<br />
-T   extern ostream clog;<br />
-<br />
-T   extern wistream wcin;<br />
-T   extern wostream wcout;<br />
-T   extern wostream wcerr;<br />
-T   extern wostream wclog;<br />
-<br />
-   27.4  Iostreams base classes                      [lib.iostreams.base]<br />
-<br />
-   Header &lt;ios&gt; synopsis<br />
-<br />
-   #include &lt;iosfwd&gt;<br />
-<br />
-T   typedef OFF_T  streamoff;<br />
-T   typedef SZ_T streamsize;<br />
-T   template &lt;class stateT&gt; class fpos;<br />
-<br />
-    class ios_base;<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ios;<br />
-   // _lib.std.ios.manip_, manipulators:<br />
-T   ios_base&amp; boolalpha  (ios_base&amp; str);<br />
-T   ios_base&amp; noboolalpha(ios_base&amp; str);<br />
-T   ios_base&amp; showbase   (ios_base&amp; str);<br />
-T   ios_base&amp; noshowbase (ios_base&amp; str);<br />
-T   ios_base&amp; showpoint  (ios_base&amp; str);<br />
-T   ios_base&amp; noshowpoint(ios_base&amp; str);<br />
-T   ios_base&amp; showpos    (ios_base&amp; str);<br />
-T   ios_base&amp; noshowpos  (ios_base&amp; str);<br />
-T   ios_base&amp; skipws     (ios_base&amp; str);<br />
-T   ios_base&amp; noskipws   (ios_base&amp; str);<br />
-T   ios_base&amp; nouppercase(ios_base&amp; str);<br />
-T   ios_base&amp; uppercase  (ios_base&amp; str);<br />
-M   ios_base&amp; unitbuf    (ios_base&amp; str);<br />
-M   ios_base&amp; nounitbuf  (ios_base&amp; str);<br />
-   // _lib.adjustfield.manip_ adjustfield:<br />
-T   ios_base&amp; internal   (ios_base&amp; str);<br />
-T   ios_base&amp; left       (ios_base&amp; str);<br />
-T   ios_base&amp; right      (ios_base&amp; str);<br />
-   // _lib.basefield.manip_ basefield:<br />
-T   ios_base&amp; dec        (ios_base&amp; str);<br />
-T   ios_base&amp; hex        (ios_base&amp; str);<br />
-T   ios_base&amp; oct        (ios_base&amp; str);<br />
-<br />
-   // _lib.floatfield.manip_ floatfield:<br />
-T   ios_base&amp; fixed      (ios_base&amp; str);<br />
-T   ios_base&amp; scientific (ios_base&amp; str);<br />
-<br />
-<br />
-   27.4.2  Class ios_base                                  [lib.ios.base]<br />
-<br />
-T   class ios_base {<br />
-    public:<br />
-      class failure;<br />
-T     typedef T1 fmtflags;<br />
-T     static const fmtflags boolalpha;<br />
-T     static const fmtflags dec;<br />
-T     static const fmtflags fixed;<br />
-T     static const fmtflags hex;<br />
-T     static const fmtflags internal;<br />
-T     static const fmtflags left;<br />
-T     static const fmtflags oct;<br />
-T     static const fmtflags right;<br />
-T     static const fmtflags scientific;<br />
-T     static const fmtflags showbase;<br />
-T     static const fmtflags showpoint;<br />
-T     static const fmtflags showpos;<br />
-T     static const fmtflags skipws;<br />
-X     static const fmtflags unitbuf;<br />
-T     static const fmtflags uppercase;<br />
-T     static const fmtflags adjustfield;<br />
-T     static const fmtflags basefield;<br />
-T     static const fmtflags floatfield;<br />
-<br />
-      typedef T2 iostate;<br />
-T     static const iostate badbit;<br />
-T     static const iostate eofbit;<br />
-T     static const iostate failbit;<br />
-T     static const iostate goodbit;<br />
-T     typedef T3 openmode;<br />
-T     static const openmode app;<br />
-T     static const openmode ate;<br />
-T     static const openmode binary;<br />
-T     static const openmode in;<br />
-T     static const openmode out;<br />
-T     static const openmode trunc;<br />
-T     typedef T4 seekdir;<br />
-T     static const seekdir beg;<br />
-T     static const seekdir cur;<br />
-T     static const seekdir end;<br />
-T     class Init;<br />
-      // _lib.fmtflags.state_ fmtflags state:<br />
-T     fmtflags flags() const;<br />
-T     fmtflags flags(fmtflags fmtfl);<br />
-T     fmtflags setf(fmtflags fmtfl);<br />
-T     fmtflags setf(fmtflags fmtfl, fmtflags mask);<br />
-T     void unsetf(fmtflags mask);<br />
-T     streamsize precision() const;<br />
-T     streamsize precision(streamsize prec);<br />
-T     streamsize width() const;<br />
-T     streamsize width(streamsize wide);<br />
-      // _lib.ios.base.locales_ locales:<br />
-T     locale imbue(const locale&amp; loc);<br />
-T     locale getloc() const;<br />
-      // _lib.ios.base.storage_ storage:<br />
-T     static int xalloc();<br />
-T     long&amp;  iword(int index);<br />
-T     void*&amp; pword(int index);<br />
-      // destructor<br />
-T     virtual ~ios_base();<br />
-      // _lib.ios.base.callback_ callbacks;<br />
-T     enum event { erase_event, imbue_event, copyfmt_event };<br />
-T     typedef void (*event_callback)(event, ios_base&amp;, int index);<br />
-T     void register_callback(event_call_back fn, int index);<br />
-T     static bool sync_with_stdio(bool sync = true);<br />
-    protected:<br />
-T     ios_base();<br />
-    };<br />
-<br />
-   27.4.2.1.1  Class ios_base::failure                 [lib.ios::failure]<br />
-<br />
-T   class ios_base::failure : public exception {<br />
-    public:<br />
-T     explicit failure(const string&amp; msg);<br />
-T     virtual ~failure();<br />
-T     virtual const char* what() const throw();<br />
-    };<br />
-<br />
-<br />
-   27.4.2.1.6  Class ios_base::Init                       [lib.ios::Init]<br />
-<br />
-T   class ios_base::Init {<br />
-    public:<br />
-T     Init();<br />
-T    ~Init();<br />
-    };<br />
-<br />
-<br />
-   27.4.3  Template class fpos                                 [lib.fpos]<br />
-<br />
-X   template &lt;class stateT&gt; class fpos {<br />
-    public:<br />
-      // _lib.fpos.members_ Members<br />
-T     stateT state() const;<br />
-T     void state(stateT);<br />
-    private;<br />
-T     stateT st; // exposition only<br />
-    };<br />
-<br />
-<br />
-   27.4.5  Template class basic_ios                             [lib.ios]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ios : public ios_base {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-T     operator void*() const<br />
-T     bool operator!() const<br />
-T     iostate rdstate() const;<br />
-T     void clear(iostate state = goodbit);<br />
-T     void setstate(iostate state);<br />
-T     bool good() const;<br />
-T     bool eof()  const;<br />
-T     bool fail() const;<br />
-T     bool bad()  const;<br />
-T     iostate exceptions() const;<br />
-T     void exceptions(iostate except);<br />
-      // _lib.basic.ios.cons_ Constructor/destructor:<br />
-T     explicit basic_ios(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_ios();<br />
-      // _lib.basic.ios.members_ Members:<br />
-T     basic_ostream&lt;charT,traits&gt;* tie() const;<br />
-T     basic_ostream&lt;charT,traits&gt;* tie(basic_ostream&lt;charT,traits&gt;* tiestr);<br />
-T     basic_streambuf&lt;charT,traits&gt;* rdbuf() const;<br />
-T     basic_streambuf&lt;charT,traits&gt;* rdbuf(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-X     basic_ios&amp; copyfmt(const basic_ios&amp; rhs);<br />
-T     char_type fill() const;<br />
-T     char_type fill(char_type ch);<br />
-      // _lib.ios.base.locales_ locales:<br />
-T     locale imbue(const locale&amp; loc);<br />
-X     char     narrow(char_type c, char dfault) const;<br />
-X     char_type widen(char c) const;<br />
-    protected:<br />
-      basic_ios();<br />
-T     void init(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-   private:<br />
-T     basic_ios(const basic_ios&amp; );       // not defined<br />
-T     basic_ios&amp; operator=(const basic_ios&amp;);     // not defined<br />
-    };<br />
-<br />
-<br />
-   27.5  Stream buffers                              [lib.stream.buffers]<br />
-<br />
-   Header &lt;streambuf&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_streambuf;<br />
-T   typedef basic_streambuf&lt;char&gt;     streambuf;<br />
-T   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
-<br />
-   27.5.2  Template class                                 [lib.streambuf]<br />
-       basic_streambuf&lt;charT,traits&gt;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_streambuf {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-T     virtual ~basic_streambuf();<br />
-      // _lib.streambuf.locales_ locales:<br />
-T     locale   pubimbue(const locale &amp;loc);<br />
-T     locale   getloc() const;<br />
-      // _lib.streambuf.buffer_ buffer and positioning:<br />
-T     basic_streambuf&lt;char_type,traits&gt;*<br />
-               pubsetbuf(char_type* s, streamsize n);<br />
-T     pos_type pubseekoff(off_type off, ios_base::seekdir way,<br />
-                          ios_base::openmode which =<br />
-                              ios_base::in | ios_base::out);<br />
-T     pos_type pubseekpos(pos_type sp,<br />
-                          ios_base::openmode which =<br />
-                              ios_base::in | ios_base::out);<br />
-T     int      pubsync();<br />
-<br />
-      // Get and put areas:<br />
-      // _lib.streambuf.pub.get_ Get area:<br />
-T     streamsize in_avail();<br />
-T     int_type snextc();<br />
-T     int_type sbumpc();<br />
-T     int_type sgetc();<br />
-T     streamsize sgetn(char_type* s, streamsize n);<br />
-      // _lib.streambuf.pub.pback_ Putback:<br />
-X     int_type sputbackc(char_type c);<br />
-X     int_type sungetc();<br />
-      // _lib.streambuf.pub.put_ Put area:<br />
-T     int_type   sputc(char_type c);<br />
-X     streamsize sputn(const char_type* s, streamsize n);<br />
-    protected:<br />
-T     basic_streambuf();<br />
-      // _lib.streambuf.get.area_ Get area:<br />
-T     char_type* eback() const;<br />
-T     char_type* gptr()  const;<br />
-T     char_type* egptr() const;<br />
-T     void       gbump(int n);<br />
-T     void       setg(char_type* gbeg, char_type* gnext, char_type* gend);<br />
-      // _lib.streambuf.put.area_ Put area:<br />
-T     char_type* pbase() const;<br />
-T     char_type* pptr() const;<br />
-T     char_type* epptr() const;<br />
-T     void       pbump(int n);<br />
-T     void       setp(char_type* pbeg, char_type* pend);<br />
-      // _lib.streambuf.virtuals_ virtual functions:<br />
-      // _lib.streambuf.virt.locales_ Locales:<br />
-T     virtual void imbue(const locale &amp;loc);<br />
-      // _lib.streambuf.virt.buffer_ Buffer management and positioning:<br />
-T     virtual basic_streambuf&lt;char_type,traits&gt;*<br />
-                       setbuf(char_type* s, streamsize n);<br />
-T     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                ios_base::openmode which = ios_base::in | ios_base::out);<br />
-T     virtual pos_type seekpos(pos_type sp,<br />
-                ios_base::openmode which = ios_base::in | ios_base::out);<br />
-T     virtual int      sync();<br />
-      // _lib.streambuf.virt.get_ Get area:<br />
-T     virtual int        showmanyc();<br />
-T     virtual streamsize xsgetn(char_type* s, streamsize n);<br />
-T     virtual int_type   underflow();<br />
-T     virtual int_type   uflow();<br />
-      // _lib.streambuf.virt.pback_ Putback:<br />
-T     virtual int_type   pbackfail(int_type c = traits::eof());<br />
-      // _lib.streambuf.virt.put_ Put area:<br />
-X     virtual streamsize xsputn(const char_type* s, streamsize n);<br />
-T     virtual int_type   overflow (int_type c = traits::eof());<br />
-    };<br />
-<br />
-   27.6  Formatting and manipulators                [lib.iostream.format]<br />
-<br />
-   Header &lt;istream&gt; synopsis<br />
-<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_istream;<br />
-T   typedef basic_istream&lt;char&gt;     istream;<br />
-T   typedef basic_istream&lt;wchar_t&gt; wistream;<br />
-<br />
-T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_iostream;<br />
-T   typedef basic_iostream&lt;char&gt;    iostream;<br />
-T   typedef basic_iostream&lt;wchar_t&gt; wiostream;<br />
-<br />
-X   template &lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; ws(basic_istream&lt;charT,traits&gt;&amp; is);<br />
-<br />
-   Header &lt;ostream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ostream;<br />
-T   typedef basic_ostream&lt;char&gt;     ostream;<br />
-T   typedef basic_ostream&lt;wchar_t&gt; wostream;<br />
-<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; endl(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; ends(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-T   template &lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; flush(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-<br />
-   Header &lt;iomanip&gt; synopsis<br />
-<br />
-      // Types T1, T2, ... are unspecified implementation types<br />
-T     T1 resetiosflags(ios_base::fmtflags mask);<br />
-T     T2 setiosflags  (ios_base::fmtflags mask);<br />
-T     T3 setbase(int base);<br />
-T     template&lt;charT&gt; T4 setfill(charT c);<br />
-T     T5 setprecision(int n);<br />
-T     T6 setw(int n);<br />
-<br />
-<br />
-   27.6.1.1  Template class basic_istream                   [lib.istream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class basic_istream : virtual public basic_ios&lt;charT,traits&gt; {<br />
-    public:<br />
-    // Types (inherited from basic_ios (_lib.ios_)):<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.istream.cons_ Constructor/destructor:<br />
-T     explicit basic_istream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_istream();<br />
-      // _lib.istream::sentry_ Prefix/suffix:<br />
-T     class sentry;<br />
-<br />
-      // _lib.istream.formatted_ Formatted input:<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_istream&lt;charT,traits&gt;&amp; (*pf)(basic_istream&lt;charT,traits&gt;&amp;))<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;))<br />
-T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (ios_base&amp; (*pf)(ios_base&amp;))<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(bool&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(short&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned short&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(int&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned int&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned long&amp; n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(float&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(double&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long double&amp; f);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(void*&amp; p);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
-          (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-      // _lib.istream.unformatted_ Unformatted input:<br />
-T     streamsize gcount() const;<br />
-S     int_type get();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type&amp; c);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n,<br />
-                        char_type delim);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; ignore<br />
-          (streamsize n = 1, int_type delim = traits::eof());<br />
-S     int_type                     peek();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; read    (char_type* s, streamsize n);<br />
-S     streamsize                   readsome(char_type* s, streamsize n);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; putback(char_type c);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; unget();<br />
-S     int sync();<br />
-<br />
-S     pos_type tellg();<br />
-S     basic_istream&lt;charT,traits&gt;&amp; seekg(pos_type);<br />
-S     basic_istream&lt;charT,traits&gt;&amp; seekg(off_type, ios_base::seekdir);<br />
-    };<br />
-<br />
-    // _lib.istream::extractors_ character extraction templates:<br />
-S   template&lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
-                                              charT&amp;);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char&amp;);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             signed char&amp;);<br />
-<br />
-S   template&lt;class charT, class traits&gt;<br />
-      basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
-                                              charT*);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char*);<br />
-S   template&lt;class traits&gt;<br />
-      basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
-                                             signed char*);<br />
-<br />
-   27.6.1.1.2  Class basic_istream::sentry          [lib.istream::sentry]<br />
-<br />
-<br />
-    template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
-S   class basic_istream&lt;charT,traits&gt;::sentry {<br />
-      typedef traits traits_type;<br />
-S     bool ok_; // exposition only<br />
-     public:<br />
-S     explicit sentry(basic_istream&lt;charT,traits&gt;&amp; is, bool noskipws = false);<br />
-S     ~sentry();<br />
-S     operator bool() const { return ok_; }<br />
-     private:<br />
-T     sentry(const sentry&amp;); //   not defined<br />
-T     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
-    };<br />
-<br />
-<br />
-   27.6.1.5  Template class basic_iostream            [lib.iostreamclass]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-T   class basic_iostream :<br />
-      public basic_istream&lt;charT,traits&gt;,<br />
-      public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-      // constructor/destructor<br />
-T     explicit basic_iostream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
-T     virtual ~basic_iostream();<br />
-    };<br />
-<br />
-<br />
-   27.6.2.1  Template class basic_ostream                   [lib.ostream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ostream : virtual public basic_ios&lt;charT,traits&gt; {<br />
-    public:<br />
-    // Types (inherited from basic_ios (_lib.ios_)):<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ostream.cons_ Constructor/destructor:<br />
-T     explicit basic_ostream(basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-T     virtual ~basic_ostream();<br />
-      // _lib.ostream::sentry_ Prefix/suffix:<br />
-T     class sentry;<br />
-      // _lib.ostream.formatted_ Formatted output:<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_ostream&lt;charT,traits&gt;&amp; (*pf)(basic_ostream&lt;charT,traits&gt;&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (ios_base&amp; (*pf)(ios_base&amp;));<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(bool n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(short n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned short n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(int n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned int n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long n);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned long n);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(float f);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(double f);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long double f);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(const void* p);<br />
-X     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
-          (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
-      // _lib.ostream.unformatted_ Unformatted output:<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; put(char_type c);<br />
-T     basic_ostream&lt;charT,traits&gt;&amp; write(const char_type* s, streamsize n);<br />
-X     basic_ostream&lt;charT,traits&gt;&amp; flush();<br />
-<br />
-      // _lib.ostream.seeks_ seeks:<br />
-S     pos_type tellp();<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; seekp(pos_type);<br />
-S     basic_ostream&lt;charT,traits&gt;&amp; seekp(off_type, ios_base::seekdir);<br />
-    };<br />
-    // _lib.ostream.inserters.character_ character inserters<br />
-X   template&lt;class charT, class traits&gt;<br />
-    basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                            charT);<br />
-X   template&lt;class charT, class traits&gt;<br />
-    basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                            char);<br />
-    // specialization<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             char);<br />
-    // signed and unsigned<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             signed char);<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             unsigned char)<br />
-X   template&lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                              const charT*);<br />
-X   template&lt;class charT, class traits&gt;<br />
-      basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
-                                              const char*);<br />
-    // partial specializationss<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const char*);<br />
-    //  signed and unsigned<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const signed char*);<br />
-X   template&lt;class traits&gt;<br />
-      basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
-                                             const unsigned char*);<br />
-<br />
-<br />
-   27.6.2.3  Class basic_ostream::sentry            [lib.ostream::sentry]<br />
-<br />
-    template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ostream&lt;charT,traits&gt;::sentry {<br />
-      bool ok_; // exposition only<br />
-     public:<br />
-X     explicit sentry(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
-X     ~sentry();<br />
-X     operator bool() const { return ok_; }<br />
-     private<br />
-X     sentry(const sentry&amp;); //   not defined<br />
-X     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
-    };<br />
-<br />
-   27.7  String-based streams                        [lib.string.streams]<br />
-<br />
-   Header &lt;sstream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-      class basic_stringbuf;<br />
-<br />
-T   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
-T   typedef basic_stringbuf&lt;wchar_t&gt; wstringbuf;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_istringstream;<br />
-<br />
-T   typedef basic_istringstream&lt;char&gt;     istringstream;<br />
-T   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_ostringstream;<br />
-T   typedef basic_ostringstream&lt;char&gt;     ostringstream;<br />
-T   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-                      class Allocator = allocator&lt;charT&gt; &gt;<br />
-X     class basic_stringstream;<br />
-T   typedef basic_stringstream&lt;char&gt;     stringstream;<br />
-T   typedef basic_stringstream&lt;wchar_t&gt; wstringstream;<br />
-<br />
-   27.7.1  Template class basic_stringbuf                 [lib.stringbuf]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_stringbuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.stringbuf.cons_ Constructors:<br />
-S     explicit basic_stringbuf(ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-S     explicit basic_stringbuf<br />
-          (const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-           ios_base::openmode which = ios_base::in | ios_base::out);<br />
-      // _lib.stringbuf.members_ Get and set:<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void               str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-<br />
-    protected:<br />
-      // _lib.stringbuf.virtuals_ Overridden virtual functions:<br />
-S     virtual int_type   underflow();<br />
-S     virtual int_type   pbackfail(int_type c = traits::eof());<br />
-S     virtual int_type   overflow (int_type c = traits::eof());<br />
-S     virtual  basic_streambuf&lt;charT,traits&gt;* setbuf(charT*, streamsize);<br />
-<br />
-S     virtual pos_type   seekoff(off_type off, ios_base::seekdir way,<br />
-                                 ios_base::openmode which<br />
-                                  = ios_base::in | ios_base::out);<br />
-S     virtual pos_type   seekpos(pos_type sp,<br />
-                                 ios_base::openmode which<br />
-                                  = ios_base::in | ios_base::out);<br />
-    };<br />
-<br />
-<br />
-   27.7.2  Template class basic_istringstream         [lib.istringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_istringstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.istringstream.cons_ Constructors:<br />
-S     explicit basic_istringstream(ios_base::openmode which = ios_base::in);<br />
-S     explicit basic_istringstream(<br />
-                         const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-                         ios_base::openmode which = ios_base::in);<br />
-<br />
-      // _lib.istringstream.members_ Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-   private:<br />
-   //  basic_stringbuf&lt;charT,traits,Allocator&gt; sb;   exposition only<br />
-    };<br />
-<br />
-   27.7.3  Class basic_ostringstream                  [lib.ostringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_ostringstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-<br />
-      // Types:<br />
-T     typedef charT            char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-      // _lib.ostringstream.cons_ Constructors/destructor:<br />
-S     explicit basic_ostringstream(ios_base::openmode which = ios_base::out);<br />
-S     explicit basic_ostringstream(<br />
-                           const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-                           ios_base::openmode which = ios_base::out);<br />
-      // _lib.ostringstream.members_ Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void    str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
-    };<br />
-<br />
-<br />
-   27.7.4  Template class basic_stringstream           [lib.stringstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
-              class Allocator = allocator&lt;charT&gt; &gt;<br />
-X   class basic_stringstream<br />
-      : public basic_iostream&lt;charT,traits&gt; {<br />
-    public:<br />
-      // Types<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-      // constructors/destructors<br />
-S     explicit basic_stringstream(<br />
-          ios_base::openmode which = ios_base::out|ios_base::in);<br />
-S     explicit basic_stringstream(<br />
-          const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
-          ios_base::openmode which = ios_base::out|ios_base::in);<br />
-      // Members:<br />
-S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
-S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
-S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.1  File streams                                    [lib.fstreams]<br />
-<br />
-<br />
-   Header &lt;fstream&gt; synopsis<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_filebuf;<br />
-T   typedef basic_filebuf&lt;char&gt;    filebuf;<br />
-T   typedef basic_filebuf&lt;wchar_t&gt; wfilebuf;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ifstream;<br />
-T   typedef basic_ifstream&lt;char&gt;    ifstream;<br />
-T   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_ofstream;<br />
-T   typedef basic_ofstream&lt;char&gt;    ofstream;<br />
-T   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
-<br />
-X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-      class basic_fstream;<br />
-T   typedef basic_fstream&lt;char&gt;     fstream;<br />
-T   typedef basic_fstream&lt;wchar_t&gt; wfstream;<br />
-<br />
-   27.8.1.1  Template class basic_filebuf                   [lib.filebuf]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.filebuf.cons_ Constructors/destructor:<br />
-X     basic_filebuf();<br />
-X     virtual ~basic_filebuf();<br />
-       // _lib.filebuf.members_ Members:<br />
-T     bool is_open() const;<br />
-X     basic_filebuf&lt;charT,traits&gt;* open<br />
-          (const char* s, ios_base::openmode mode);<br />
-X     basic_filebuf&lt;charT,traits&gt;* close();<br />
-    protected:<br />
-      // _lib.filebuf.virtuals_ Overridden virtual functions:<br />
-X     virtual streamsize showmanyc();<br />
-X     virtual int_type underflow();<br />
-X     virtual int_type uflow();<br />
-X     virtual int_type pbackfail(int_type c = traits::eof());<br />
-X     virtual int_type overflow (int_type c = traits::eof());<br />
-S     virtual basic_streambuf&lt;charT,traits&gt;*<br />
-                       setbuf(char_type* s, streamsize n);<br />
-S     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                               ios_base::openmode which<br />
-                                 = ios_base::in | ios_base::out);<br />
-S     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
-                                 = ios_base::in | ios_base::out);<br />
-S     virtual int      sync();<br />
-S     virtual void     imbue(const locale&amp; loc);<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.1.5  Template class basic_ifstream                 [lib.ifstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ifstream.cons_ Constructors:<br />
-S     basic_ifstream();<br />
-S     explicit basic_ifstream(const char* s,<br />
-                              ios_base::openmode mode = ios_base::in);<br />
-      // _lib.ifstream.members_ Members:<br />
-S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-S     bool is_open();<br />
-S     void open(const char* s, ios_base::openmode mode = ios_base::in);<br />
-S     void close();<br />
-    };<br />
-<br />
-<br />
-   27.8.1.8  Template class basic_ofstream                 [lib.ofstream]<br />
-<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-X   class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // _lib.ofstream.cons_ Constructors:<br />
-X     basic_ofstream();<br />
-X     explicit basic_ofstream(const char* s,<br />
-                              ios_base::openmode mode<br />
-                                = ios_base::out);<br />
-      // _lib.ofstream.members_ Members:<br />
-X     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-T     bool is_open();<br />
-X     void open(const char* s, ios_base::openmode mode = ios_base::out);<br />
-X     void close();<br />
-    };<br />
-<br />
-<br />
-   27.8.1.11  Template class basic_fstream                  [lib.fstream]<br />
-<br />
-    template &lt;class charT, class traits=char_traits&lt;charT&gt; &gt;<br />
-X   class basic_fstream<br />
-      : public basic_iostream&lt;charT,traits&gt; {<br />
-    public:<br />
-T     typedef charT                     char_type;<br />
-T     typedef typename traits::int_type int_type;<br />
-T     typedef typename traits::pos_type pos_type;<br />
-T     typedef typename traits::off_type off_type;<br />
-T     typedef traits                    traits_type;<br />
-      // constructors/destructor<br />
-S     basic_fstream();<br />
-S     explicit basic_fstream(<br />
-          const char* s,<br />
-          ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-<br />
-      // Members:<br />
-S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
-S     bool is_open();<br />
-S     void open(<br />
-          const char* s,<br />
-          ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-S     void close();<br />
-    };<br />
-<br />
-<br />
-<br />
-   27.8.2  C Library files                                  [lib.c.files]<br />
-<br />
-<br />
-                    Table 13--Header &lt;cstdio&gt; synopsis<br />
-    Macros:<br />
-X   BUFSIZ         L_tmpnam        SEEK_SET   TMP_MAX<br />
-X   EOF            NULL &lt;cstdio&gt;   stderr     _IOFBF<br />
-X   FILENAME_MAX   SEEK_CUR        stdin      _IOLBF<br />
-X   FOPEN_MAX      SEEK_END        stdout     _IONBF<br />
-<br />
-X   Types:         FILE            fpos_t     size_t &lt;cstdio&gt;<br />
-    Functions:<br />
-X   clearerr       fgets           fscanf     gets     rewind<br />
-X   fclose         fopen           fseek      perror   scanf     tmpnam<br />
-X   feof           fprintf         fsetpos    printf   setbuf    ungetc<br />
-X   ferror         fputc           ftell      putc     setvbuf   vprintf<br />
-X   fflush         fputs           fwrite     puts     sprintf   vfprintf<br />
-X   fgetc          fread           getc       remove   sscanf    vsprintf<br />
-X   fgetpos        freopen         getchar    putchar  rename    tmpfile<br />
-<br />
-<br />
-<br />
-<br />
-   1.5  Standard C library headers                       [depr.c.headers]<br />
-<br />
-X     &lt;assert.h&gt;   &lt;iso646.h&gt;   &lt;setjmp.h&gt;   &lt;stdio.h&gt;    &lt;wchar.h&gt;<br />
-      &lt;ctype.h&gt;    &lt;limits.h&gt;   &lt;signal.h&gt;   &lt;stdlib.h&gt;   &lt;wctype.h&gt;<br />
-      &lt;errno.h&gt;    &lt;locale.h&gt;   &lt;stdarg.h&gt;   &lt;string.h&gt;<br />
-      &lt;float.h&gt;    &lt;math.h&gt;     &lt;stddef.h&gt;   &lt;time.h&gt;<br />
-<br />
-   1.6  Old iostreams members                          [depr.ios.members]<br />
-<br />
-   [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
-   namespace std {<br />
-    class ios_base {<br />
-    public:<br />
-T     typedef T1  io_state;<br />
-T     typedef T2 open_mode;<br />
-T     typedef T3  seek_dir;<br />
-T     typedef OFF_T  streamoff;<br />
-T     typedef OFF_T  streampos;<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-   [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
-   namespace std {<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_streambuf {<br />
-    public:<br />
-T     void stossc();<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-   8 An implementation may provide  the  following  member  functions  that<br />
-   overload signatures specified in clause _lib.iostreams_:<br />
-<br />
-   [Note: the following overloads should be #ifdef'd to permit<br />
-    diagnostics to be emitted, by default, if used.]<br />
-<br />
-    template&lt;class charT, class Traits&gt; class basic_ios {<br />
-    public:<br />
-M     void clear(io_state state);<br />
-M     void setstate(io_state state);<br />
-      // remainder unchanged<br />
-    };<br />
-    class ios_base {<br />
-    public:<br />
-M     void exceptions(io_state);<br />
-      // remainder unchanged<br />
-    };<br />
-    template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_streambuf {<br />
-    public:<br />
-M     pos_type pubseekoff(off_type off, ios_base::seek_dir way,<br />
-                ios_base::open_mode which = ios_base::in | ios_base::out);<br />
-M     pos_type pubseekpos(pos_type sp,<br />
-                ios_base::open_mode which = ios_base::in | ios_base::out);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
-    public:<br />
-M     basic_filebuf&lt;charT,traits&gt;* open<br />
-          (const char* s, ios_base::open_mode mode);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
-    public:<br />
-M     void open(const char* s, ios_base::open_mode mode = in);<br />
-      // remainder unchanged<br />
-    };<br />
-    template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
-    class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
-    public:<br />
-M     void open(const char* s, ios_base::open_mode mode = out | trunc);<br />
-      // remainder unchanged<br />
-    };<br />
-   }<br />
-<br />
-<br />
-<br />
-   1.7.1  Class strstreambuf                          [depr.strstreambuf]<br />
-<br />
-   [Note: It should be possible to adopt these components with only<br />
-    minor changes from the 2.8 version of the library.]<br />
-<br />
-M   class strstreambuf : public basic_streambuf&lt;char&gt; {<br />
-    public:<br />
-M     explicit strstreambuf(streamsize alsize_arg = 0);<br />
-M     strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));<br />
-M     strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0);<br />
-M     strstreambuf(const char* gnext_arg, streamsize n);<br />
-M     strstreambuf(signed char* gnext_arg, streamsize n,<br />
-                   signed char* pbeg_arg = 0);<br />
-M     strstreambuf(const signed char* gnext_arg, streamsize n);<br />
-M     strstreambuf(unsigned char* gnext_arg, streamsize n,<br />
-                   unsigned char* pbeg_arg = 0);<br />
-M     strstreambuf(const unsigned char* gnext_arg, streamsize n);<br />
-M     virtual ~strstreambuf();<br />
-M     void  freeze(bool freezefl = true);<br />
-M     char* str();<br />
-M     int   pcount();<br />
-    protected:<br />
-M     virtual int_type overflow (int_type c = EOF);<br />
-M     virtual int_type pbackfail(int_type c = EOF);<br />
-M     virtual int_type underflow();<br />
-M     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
-                               ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-M     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
-                                = ios_base::in | ios_base::out);<br />
-M     virtual streambuf&lt;char&gt;* setbuf(char* s, streamsize n);<br />
-   }<br />
-<br />
-   1.7.4  Class strstream                                [depr.strstream]<br />
-<br />
-M   class strstream<br />
-      : public basic_iostream&lt;char&gt; {<br />
-    public:<br />
-      // Types<br />
-M     typedef char                                char_type;<br />
-M     typedef typename char_traits&lt;char&gt;::int_type int_type<br />
-M     typedef typename char_traits&lt;char&gt;::pos_type pos_type;<br />
-M     typedef typename char_traits&lt;char&gt;::off_type off_type;<br />
-      // consturctors/destructor<br />
-M     strstream();<br />
-M     strstream(char* s, int n,<br />
-                ios_base::openmode mode = ios_base::in|ios_base::out);<br />
-M     virtual ~strstream();<br />
-      // Members:<br />
-M     strstreambuf* rdbuf() const;<br />
-M     void freeze(bool freezefl = true);<br />
-M     int pcount() const;<br />
-M     char* str();<br />
-    };<br />
-</p></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>
- The ISO standard defines the following phrase:
- </p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl><dt><span class="term">
- <code class="code">[1.3.5] implementation-defined behavior</code>
- </span></dt><dd><p>
- Behavior, for a well-formed program construct and correct data, that
- depends on the implementation <span class="emphasis"><em>and that each implementation
- shall document</em></span>.
- </p></dd></dl></div></blockquote></div><p>
- We do so here, for the C++ library only. Behavior of the
- compiler, linker, runtime loader, and other elements of "the
- implementation" are documented elsewhere. Everything listed
- in Annex B, Implementation Qualities, are also part of the
- compiler, not the library.
- </p><p>
- For each entry, we give the section number of the standard, when
- applicable. This list is probably incomplet and inkorrekt.
- </p><p>
- <span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
- interactive stream support is implied.
- </p><p>
- <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
- discussed in the various sections on multithreading (see above).
- </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
- <a class="ulink" href="../18_support/howto.html#1" target="_top">here</a>.
- </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
- sections, libstdc++ has zero control over what the cleanup code hands
- back to the runtime loader. Talk to the compiler people. :-)
- </p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
- <span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
- <span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
- <span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
- <span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception): The <code class="code">what()</code>
- member function of class <code class="code">std::exception</code>, and these other
- classes publicly derived from it, simply returns the name of the
- class. But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call
- <code class="code">c++filt</code> and pass the names as command-line parameters to
- demangle them, or call a
- <a class="ulink" href="../18_support/howto.html#5" target="_top">runtime demangler function</a>.
- (The classes in <code class="code">&lt;stdexcept&gt;</code> have constructors which
- require an argument to use later for <code class="code">what()</code> calls, so the
- problem of <code class="code">what()</code>'s value does not arise in most
- user-defined exceptions.)
- </p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
- <code class="code">std::type_info::name()</code> is the mangled type name (see the
- previous entry for more).
- </p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
- supply libraries that can accept allocators that encapsulate more
- general memory models and that support non-equal instances. In such
- implementations, any requirements imposed on allocators by containers
- beyond those requirements that appear in Table 32, and the semantics
- of containers and algorithms when allocator instances compare
- non-equal, are implementation-defined."</em></span> As yet we don't
- have any allocators which compare non-equal, so we can't describe how
- they behave.
- </p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
- <span class="emphasis"><em>[21.1.3.2]/2</em></span>,
- <span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
- <span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
- <span class="emphasis"><em>others...</em></span>
- Nope, these types are called implementation-defined because you
- shouldn't be taking advantage of their underlying types. Listing them
- here would defeat the purpose. :-)
- </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t
- stuff... see the <a class="ulink" href="../22_locale/howto.html" target="_top">chapter 22 notes</a>
- for what does exist.
- </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
- implementation will be described
- <a class="ulink" href="../22_locale/howto.html" target="_top">over here</a>.
- </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
- <code class="code">complex&lt;T&gt;</code>'s pow(0,0) returns.
- </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
- <code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
- performed on the standard stream objects will
- flush the buffers, and
- destroy and recreate the underlying buffer instances. Whether or not
- the previously-written I/O is destroyed in this process depends mostly
- on the --enable-libio choice: for stdio, if the written data is
- already in the stdio buffer, the data may be completely safe!
- </p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
- <span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
- additional work than the minimum required. We are not currently taking
- advantage of this yet.
- </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
- <span class="emphasis"><em>[27.8.1.4]/10</em></span>
- The effects of <code class="code">pubsetbuf/setbuf</code> are described
- <a class="ulink" href="../27_io/howto.html#2" target="_top">in this chapter</a>.
- </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
- a get area exists will... whatever <code class="code">fflush()</code> does, I think.
- </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.tr1"></a>C++ TR1</h3></div></div></div><p>
-This table is based on the table of contents of ISO/IEC DTR 19768
-Doc No: N1836=05-0096 Date: 2005-06-24
-Draft Technical Report on C++ Library Extensions
-</p><p>
-In this implementation the header names are prefixed by
-<code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
-<code class="code">&lt;tr1/memory&gt;</code>, and so on.
-</p><p>
-This page describes the TR1 support in mainline GCC SVN, not in any particular
-release.
-</p><div class="table"><a id="id549759"></a><p class="title"><b>Table 1.1. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes</td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code">&lt;functional&gt; synopsis</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code">&lt;unordered_set&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code">&lt;unordered_map&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">7.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
-Footnotes
-</p><p>
- The shared_ptr implementation uses some code from the
- <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
- shared_ptr</a> library.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.200x"></a>C++ 200x</h3></div></div></div><p>
-This table is based on the table of contents of ISO/IEC
-Doc No: N2461=07-0331 Date: 2007-10-22
-Working Draft, Standard for Programming Language C++
-</p><p>
-In this implementation <code class="literal">-std=gnu++0x</code> or
-<code class="literal">-std=c++0x</code> flags must be used to enable language and
-library features. The pre-defined symbol
-<code class="constant">__GXX_EXPERIMENTAL_CXX0X__</code> is used to check for the
-presence of the required flag.
-</p><p>
-This page describes the C++0x support in mainline GCC SVN, not in any
-particular release.
-</p><div class="table"><a id="id466249"></a><p class="title"><b>Table 1.2. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>20</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">20.2</td><td align="left">Utility Components</td><td align="left"> </td><td align="left"> </td><td align="left">incomplete</td><td align="left"> </td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.2</td><td align="left">forward/move helpers</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.3</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4</td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">20.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5 </td><td align="left">Function Objects</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.2</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.3</td><td align="left">Base</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.14</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11</td><td align="left">Template function bind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.16</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left">missing <code class="code">unique_ptr</code></td></tr><tr><td align="left">20.6.5</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes.</td></tr><tr><td align="left">20.6.6.2.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.6</td><td align="left"><code class="code">shared_ptr</code> creation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">
- <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">N2351</a>
- </td></tr><tr><td align="left">20.6.6.2.7</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.8</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.9</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.10</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.11</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.4</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>23</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Class template array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.3</td><td align="left"><code class="code">array </code>size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.4</td><td align="left"><code class="code">array </code>data</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.5</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.6</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>26</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerics</em></span></td></tr><tr><td align="left">26.4</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.3</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4</td><td align="left">Random number engine adaptor class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.4</td><td align="left">Class template <code class="code">xor_combine_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">26.4.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7</td><td align="left">Utilities</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8</td><td align="left">Random number generation class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">general_pdf_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>28</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">28.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>C</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">C2.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">C2.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">C2.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>D</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Compatibility Features</em></span></td></tr><tr><td align="left">D.6</td><td align="left">Old iostream members</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">Binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr><tr><td align="left">D.9</td><td align="left">Class template <code class="code">auto_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr></tbody></table></div></div><br class="table-break" /><p>
-Footnotes
-</p><p>
- The shared_ptr implementation uses some code from the
- <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
- shared_ptr</a> library.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part I. Introduction </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html
deleted file mode 100644
index efdbda2..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01s02.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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>License</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="prev" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="next" href="bk01pt01ch01s03.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p>
- There are two licenses affecting GNU libstdc++: one for the code,
- and one for the documentation.
- </p><p>
- There is a license section in the FAQ regarding common <a class="link" href="../faq.html#faq.license" title="License">questions</a>. If you have more
- questions, ask the FSF or the <a class="ulink" href="http://gcc.gnu.org/lists.html" target="_top">gcc mailing list</a>.
- </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.gpl"></a>The Code: GPL</h3></div></div></div><p>
- The source code is distributed under the <a class="link" href="bk01apd.html" title="Appendix D. GNU General Public License">GNU General Public License version 2</a>,
- with the so-called “<span class="quote">Runtime Exception</span>”
- as follows (or see any header or implementation file):
- </p><div class="literallayout"><p><br />
-      As a special exception, you may use this file as part of a free software<br />
-      library without restriction.  Specifically, if other files instantiate<br />
-      templates or use macros or inline functions from this file, or you compile<br />
-      this file and link it with other files to produce an executable, this<br />
-      file does not by itself cause the resulting executable to be covered by<br />
-      the GNU General Public License.  This exception does not however<br />
-      invalidate any other reasons why the executable file might be covered by<br />
-      the GNU General Public License.<br />
-    </p></div><p>
- Hopefully that text is self-explanatory. If it isn't, you need to speak
- to your lawyer, or the Free Software Foundation.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.license.fdl"></a>The Documentation: GPL, FDL</h3></div></div></div><p>
- The documentation shipped with the library and made available over
- the web, excluding the pages generated from source comments, are
- copyrighted by the Free Software Foundation, and placed under the
- <a class="link" href="bk01ape.html" title="Appendix E. GNU Free Documentation License"> GNU Free Documentation
- License version 1.2</a>. There are no Front-Cover Texts, no
- Back-Cover Texts, and no Invariant Sections.
- </p><p>
- For documentation generated by doxygen or other automated tools
- via processing source code comments and markup, the original source
- code license applies to the generated files. Thus, the doxygen
- documents are licensed <a class="link" href="bk01apd.html" title="Appendix D. GNU General Public License">GPL</a>.
- </p><p>
- If you plan on making copies of the documentation, please let us know.
- We can probably offer suggestions.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Status </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Bugs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html b/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html
deleted file mode 100644
index d8ecde5..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch01s03.html
+++ /dev/null
@@ -1,330 +0,0 @@
-<?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>Bugs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch01.html" title="Chapter 1. Status" /><link rel="prev" href="bk01pt01ch01s02.html" title="License" /><link rel="next" href="bk01pt01ch02.html" title="Chapter 2. Setup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Bugs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01s02.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch02.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.bugs"></a>Bugs</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.impl"></a>Implementation Bugs</h3></div></div></div><p>
- Information on known bugs, details on efforts to fix them, and
- fixed bugs are all available as part of the GCC bug tracking
- system, <a class="ulink" href="http://gcc.gnu.org/bugzilla" target="_top">bugzilla</a>, with the
- category set to <code class="literal">libstdc++</code>.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.bugs.iso"></a>Standard Bugs</h3></div></div></div><p>
- Everybody's got issues. Even the C++ Standard Library.
- </p><p>
- The Library Working Group, or LWG, is the ISO subcommittee responsible
- for making changes to the library. They periodically publish an
- Issues List containing problems and possible solutions. As they reach
- a consensus on proposed solutions, we often incorporate the solution.
- </p><p>
- Here are the issues which have resulted in code changes to the library.
- The links are to the specific defect reports from a <span class="emphasis"><em>partial
- copy</em></span> of the Issues List. You can read the full version online
- at the <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/" target="_top">ISO C++
- Committee homepage</a>, linked to on the
- <a class="ulink" href="http://gcc.gnu.org/readings.html" target="_top">GCC "Readings"
- page</a>. If
- you spend a lot of time reading the issues, we recommend downloading
- the ZIP file and reading them locally.
- </p><p>
- (NB: <span class="emphasis"><em>partial copy</em></span> means that not all
- links within the lwg-*.html pages will work. Specifically,
- links to defect reports that have not been accorded full DR
- status will probably break. Rather than trying to mirror the
- entire issues list on our overworked web server, we recommend
- you go to the LWG homepage instead.)
- </p><p>
- If a DR is not listed here, we may simply not have gotten to
- it yet; feel free to submit a patch. Search the include/bits
- and src directories for appearances of
- <code class="constant">_GLIBCXX_RESOLVE_LIB_DEFECTS</code> for examples
- of style. Note that we usually do not make changes to the
- code until an issue has reached <a class="ulink" href="lwg-active.html#DR" target="_top">DR</a> status.
- </p><div class="variablelist"><dl><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#5" target="_top">5</a>:
- <span class="emphasis"><em>string::compare specification questionable</em></span>
- </span></dt><dd><p>This should be two overloaded functions rather than a single function.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#17" target="_top">17</a>:
- <span class="emphasis"><em>Bad bool parsing</em></span>
- </span></dt><dd><p>Apparently extracting Boolean values was messed up...
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#19" target="_top">19</a>:
- <span class="emphasis"><em>"Noconv" definition too vague</em></span>
- </span></dt><dd><p>If <code class="code">codecvt::do_in</code> returns <code class="code">noconv</code> there are
- no changes to the values in <code class="code">[to, to_limit)</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#22" target="_top">22</a>:
- <span class="emphasis"><em>Member open vs flags</em></span>
- </span></dt><dd><p>Re-opening a file stream does <span class="emphasis"><em>not</em></span> clear the state flags.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#23" target="_top">23</a>:
- <span class="emphasis"><em>Num_get overflow result</em></span>
- </span></dt><dd><p>Implement the proposed resolution.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#25" target="_top">25</a>:
- <span class="emphasis"><em>String operator&lt;&lt; uses width() value wrong</em></span>
- </span></dt><dd><p>Padding issues.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#48" target="_top">48</a>:
- <span class="emphasis"><em>Use of non-existent exception constructor</em></span>
- </span></dt><dd><p>An instance of <code class="code">ios_base::failure</code> is constructed instead.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#49" target="_top">49</a>:
- <span class="emphasis"><em>Underspecification of ios_base::sync_with_stdio</em></span>
- </span></dt><dd><p>The return type is the <span class="emphasis"><em>previous</em></span> state of synchronization.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#50" target="_top">50</a>:
- <span class="emphasis"><em>Copy constructor and assignment operator of ios_base</em></span>
- </span></dt><dd><p>These members 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><span class="term"><a class="ulink" href="../ext/lwg-defects.html#60" target="_top">60</a>:
- <span class="emphasis"><em>What is a formatted input function?</em></span>
- </span></dt><dd><p>This DR made many widespread changes to <code class="code">basic_istream</code>
- and <code class="code">basic_ostream</code> all of which have been implemented.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#63" target="_top">63</a>:
- <span class="emphasis"><em>Exception-handling policy for unformatted output</em></span>
- </span></dt><dd><p>Make the policy consistent with that of formatted input, unformatted
- input, and formatted output.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#68" target="_top">68</a>:
- <span class="emphasis"><em>Extractors for char* should store null at end</em></span>
- </span></dt><dd><p>And they do now. An editing glitch in the last item in the list of
- [27.6.1.2.3]/7.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#74" target="_top">74</a>:
- <span class="emphasis"><em>Garbled text for codecvt::do_max_length</em></span>
- </span></dt><dd><p>The text of the standard was gibberish. Typos gone rampant.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#75" target="_top">75</a>:
- <span class="emphasis"><em>Contradiction in codecvt::length's argument types</em></span>
- </span></dt><dd><p>Change the first parameter to <code class="code">stateT&amp;</code> and implement
- the new effects paragraph.
- </p></dd><dt><span class="term"><a class="ulink" href="lwg-defects.html#83" target="_top">83</a>:
- <span class="emphasis"><em>string::npos vs. string::max_size()</em></span>
- </span></dt><dd><p>Safety checks on the size of the string should test against
- <code class="code">max_size()</code> rather than <code class="code">npos</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#90" target="_top">90</a>:
- <span class="emphasis"><em>Incorrect description of operator&gt;&gt; for strings</em></span>
- </span></dt><dd><p>The effect contain <code class="code">isspace(c,getloc())</code> which must be
- replaced by <code class="code">isspace(c,is.getloc())</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#91" target="_top">91</a>:
- <span class="emphasis"><em>Description of operator&gt;&gt; and getline() for string&lt;&gt;
- might cause endless loop</em></span>
- </span></dt><dd><p>They behave as a formatted input function and as an unformatted
- input function, respectively (except that <code class="code">getline</code> is
- not required to set <code class="code">gcount</code>).
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#103" target="_top">103</a>:
- <span class="emphasis"><em>set::iterator is required to be modifiable, but this allows
- modification of keys.</em></span>
- </span></dt><dd><p>For associative containers where the value type is the same as
- the key type, both <code class="code">iterator</code> and <code class="code">const_iterator
- </code> are constant iterators.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#109" target="_top">109</a>:
- <span class="emphasis"><em>Missing binders for non-const sequence elements</em></span>
- </span></dt><dd><p>The <code class="code">binder1st</code> and <code class="code">binder2nd</code> didn't have an
- <code class="code">operator()</code> taking a non-const parameter.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#110" target="_top">110</a>:
- <span class="emphasis"><em>istreambuf_iterator::equal not const</em></span>
- </span></dt><dd><p>This was not a const member function. Note that the DR says to
- replace the function with a const one; we have instead provided an
- overloaded version with identical contents.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#117" target="_top">117</a>:
- <span class="emphasis"><em>basic_ostream uses nonexistent num_put member functions</em></span>
- </span></dt><dd><p><code class="code">num_put::put()</code> was overloaded on the wrong types.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#118" target="_top">118</a>:
- <span class="emphasis"><em>basic_istream uses nonexistent num_get member functions</em></span>
- </span></dt><dd><p>Same as 117, but for <code class="code">num_get::get()</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#129" target="_top">129</a>:
- <span class="emphasis"><em>Need error indication from seekp() and seekg()</em></span>
- </span></dt><dd><p>These functions set <code class="code">failbit</code> on error now.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#136" target="_top">136</a>:
- <span class="emphasis"><em>seekp, seekg setting wrong streams?</em></span>
- </span></dt><dd><p><code class="code">seekp</code> should only set the output stream, and
- <code class="code">seekg</code> should only set the input stream.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#167" target="_top">167</a>:
- <span class="emphasis"><em>Improper use of traits_type::length()</em></span>
- </span></dt><dd><p><code class="code">op&lt;&lt;</code> with a <code class="code">const char*</code> was
- calculating an incorrect number of characters to write.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#169" target="_top">169</a>:
- <span class="emphasis"><em>Bad efficiency of overflow() mandated</em></span>
- </span></dt><dd><p>Grow efficiently the internal array object.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#171" target="_top">171</a>:
- <span class="emphasis"><em>Strange seekpos() semantics due to joint position</em></span>
- </span></dt><dd><p>Quite complex to summarize...
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#181" target="_top">181</a>:
- <span class="emphasis"><em>make_pair() unintended behavior</em></span>
- </span></dt><dd><p>This function used to take its arguments as reference-to-const, now
- it copies them (pass by value).
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#195" target="_top">195</a>:
- <span class="emphasis"><em>Should basic_istream::sentry's constructor ever set eofbit?</em></span>
- </span></dt><dd><p>Yes, it can, specifically if EOF is reached while skipping whitespace.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#211" target="_top">211</a>:
- <span class="emphasis"><em>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</em></span>
- </span></dt><dd><p>If nothing is extracted into the string, <code class="code">op&gt;&gt;</code> now
- sets <code class="code">failbit</code> (which can cause an exception, etc., etc.).
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#214" target="_top">214</a>:
- <span class="emphasis"><em>set::find() missing const overload</em></span>
- </span></dt><dd><p>Both <code class="code">set</code> and <code class="code">multiset</code> were missing
- overloaded find, lower_bound, upper_bound, and equal_range functions
- for const instances.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#231" target="_top">231</a>:
- <span class="emphasis"><em>Precision in iostream?</em></span>
- </span></dt><dd><p>For conversion from a floating-point type, <code class="code">str.precision()</code>
- is specified in the conversion specification.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#233" target="_top">233</a>:
- <span class="emphasis"><em>Insertion hints in associative containers</em></span>
- </span></dt><dd><p>Implement N1780, first check before then check after, insert as close
- to hint as possible.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#235" target="_top">235</a>:
- <span class="emphasis"><em>No specification of default ctor for reverse_iterator</em></span>
- </span></dt><dd><p>The declaration of <code class="code">reverse_iterator</code> lists a default constructor.
- However, no specification is given what this constructor should do.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#241" target="_top">241</a>:
- <span class="emphasis"><em>Does unique_copy() require CopyConstructible and Assignable?</em></span>
- </span></dt><dd><p>Add a helper for forward_iterator/output_iterator, fix the existing
- one for input_iterator/output_iterator to not rely on Assignability.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#243" target="_top">243</a>:
- <span class="emphasis"><em>get and getline when sentry reports failure</em></span>
- </span></dt><dd><p>Store a null character only if the character array has a non-zero size.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#251" target="_top">251</a>:
- <span class="emphasis"><em>basic_stringbuf missing allocator_type</em></span>
- </span></dt><dd><p>This nested typedef was originally not specified.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#253" target="_top">253</a>:
- <span class="emphasis"><em>valarray helper functions are almost entirely useless</em></span>
- </span></dt><dd><p>Make the copy constructor and copy-assignment operator declarations
- public in gslice_array, indirect_array, mask_array, slice_array; provide
- definitions.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#265" target="_top">265</a>:
- <span class="emphasis"><em>std::pair::pair() effects overly restrictive</em></span>
- </span></dt><dd><p>The default ctor would build its members from copies of temporaries;
- now it simply uses their respective default ctors.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#266" target="_top">266</a>:
- <span class="emphasis"><em>bad_exception::~bad_exception() missing Effects clause</em></span>
- </span></dt><dd><p>The <code class="code">bad_</code>* classes no longer have destructors (they
- are trivial), since no description of them was ever given.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#271" target="_top">271</a>:
- <span class="emphasis"><em>basic_iostream missing typedefs</em></span>
- </span></dt><dd><p>The typedefs it inherits from its base classes can't be used, since
- (for example) <code class="code">basic_iostream&lt;T&gt;::traits_type</code> is ambiguous.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#275" target="_top">275</a>:
- <span class="emphasis"><em>Wrong type in num_get::get() overloads</em></span>
- </span></dt><dd><p>Similar to 118.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#280" target="_top">280</a>:
- <span class="emphasis"><em>Comparison of reverse_iterator to const reverse_iterator</em></span>
- </span></dt><dd><p>Add global functions with two template parameters.
- (NB: not added for now a templated assignment operator)
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#292" target="_top">292</a>:
- <span class="emphasis"><em>Effects of a.copyfmt (a)</em></span>
- </span></dt><dd><p>If <code class="code">(this == &amp;rhs)</code> do nothing.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#300" target="_top">300</a>:
- <span class="emphasis"><em>List::merge() specification incomplete</em></span>
- </span></dt><dd><p>If <code class="code">(this == &amp;x)</code> do nothing.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#303" target="_top">303</a>:
- <span class="emphasis"><em>Bitset input operator underspecified</em></span>
- </span></dt><dd><p>Basically, compare the input character to
- <code class="code">is.widen(0)</code> and <code class="code">is.widen(1)</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#305" target="_top">305</a>:
- <span class="emphasis"><em>Default behavior of codecvt&lt;wchar_t, char,
- mbstate_t&gt;::length()</em></span>
- </span></dt><dd><p>Do not specify what <code class="code">codecvt&lt;wchar_t, char,
- mbstate_t&gt;::do_length</code> must return.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#328" target="_top">328</a>:
- <span class="emphasis"><em>Bad sprintf format modifier in
- money_put&lt;&gt;::do_put()</em></span>
- </span></dt><dd><p>Change the format string to "%.0Lf".
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#365" target="_top">365</a>:
- <span class="emphasis"><em>Lack of const-qualification in clause 27</em></span>
- </span></dt><dd><p>Add const overloads of <code class="code">is_open</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#387" target="_top">387</a>:
- <span class="emphasis"><em>std::complex over-encapsulated</em></span>
- </span></dt><dd><p>Add the <code class="code">real(T)</code> and <code class="code">imag(T)</code>
- members; in C++0x mode, also adjust the existing
- <code class="code">real()</code> and <code class="code">imag()</code> members and
- free functions.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#389" target="_top">389</a>:
- <span class="emphasis"><em>Const overload of valarray::operator[] returns
- by value</em></span>
- </span></dt><dd><p>Change it to return a <code class="code">const T&amp;</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#396" target="_top">396</a>:
- <span class="emphasis"><em>what are characters zero and one</em></span>
- </span></dt><dd><p>Implement the proposed resolution.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#402" target="_top">402</a>:
- <span class="emphasis"><em>Wrong new expression in [some_]allocator::construct</em></span>
- </span></dt><dd><p>Replace "new" with "::new".
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#409" target="_top">409</a>:
- <span class="emphasis"><em>Closing an fstream should clear the error state</em></span>
- </span></dt><dd><p>Have <code class="code">open</code> clear the error flags.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#431" target="_top">431</a>:
- <span class="emphasis"><em>Swapping containers with unequal allocators</em></span>
- </span></dt><dd><p>Implement Option 3, as per N1599.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#432" target="_top">432</a>:
- <span class="emphasis"><em>stringbuf::overflow() makes only one write position
- available</em></span>
- </span></dt><dd><p>Implement the resolution, beyond DR 169.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#434" target="_top">434</a>:
- <span class="emphasis"><em>bitset::to_string() hard to use</em></span>
- </span></dt><dd><p>Add three overloads, taking fewer template arguments.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#438" target="_top">438</a>:
- <span class="emphasis"><em>Ambiguity in the "do the right thing" clause</em></span>
- </span></dt><dd><p>Implement the resolution, basically cast less.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#453" target="_top">453</a>:
- <span class="emphasis"><em>basic_stringbuf::seekoff need not always fail for an empty stream</em></span>
- </span></dt><dd><p>Don't fail if the next pointer is null and newoff is zero.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#455" target="_top">455</a>:
- <span class="emphasis"><em>cerr::tie() and wcerr::tie() are overspecified</em></span>
- </span></dt><dd><p>Initialize cerr tied to cout and wcerr tied to wcout.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#464" target="_top">464</a>:
- <span class="emphasis"><em>Suggestion for new member functions in standard containers</em></span>
- </span></dt><dd><p>Add <code class="code">data()</code> to <code class="code">std::vector</code> and
- <code class="code">at(const key_type&amp;)</code> to <code class="code">std::map</code>.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#508" target="_top">508</a>:
- <span class="emphasis"><em>Bad parameters for ranlux64_base_01</em></span>
- </span></dt><dd><p>Fix the parameters.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-closed.html#512" target="_top">512</a>:
- <span class="emphasis"><em>Seeding subtract_with_carry_01 from a single unsigned long</em></span>
- </span></dt><dd><p>Construct a <code class="code">linear_congruential</code> engine and seed with it.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-closed.html#526" target="_top">526</a>:
- <span class="emphasis"><em>Is it undefined if a function in the standard changes in
- parameters?</em></span>
- </span></dt><dd><p>Use &amp;value.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#538" target="_top">538</a>:
- <span class="emphasis"><em>241 again: Does unique_copy() require CopyConstructible
- and Assignable?</em></span>
- </span></dt><dd><p>In case of input_iterator/output_iterator rely on Assignability of
- input_iterator' value_type.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#541" target="_top">541</a>:
- <span class="emphasis"><em>shared_ptr template assignment and void</em></span>
- </span></dt><dd><p>Add an auto_ptr&lt;void&gt; specialization.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#543" target="_top">543</a>:
- <span class="emphasis"><em>valarray slice default constructor</em></span>
- </span></dt><dd><p>Follow the straightforward proposed resolution.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#550" target="_top">550</a>:
- <span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span>
- </span></dt><dd><p>In C++0x mode, remove the pow(float,int), etc., signatures.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#586" target="_top">586</a>:
- <span class="emphasis"><em>string inserter not a formatted function</em></span>
- </span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions).
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#596" target="_top">596</a>:
- <span class="emphasis"><em>27.8.1.3 Table 112 omits "a+" and "a+b" modes</em></span>
- </span></dt><dd><p>Add the missing modes to fopen_mode.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#660" target="_top">660</a>:
- <span class="emphasis"><em>Missing bitwise operations</em></span>
- </span></dt><dd><p>Add the missing operations.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#691" target="_top">691</a>:
- <span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span>
- </span></dt><dd><p>In C++0x mode add cbegin(size_type) and cend(size_type)
- to the unordered containers.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#693" target="_top">693</a>:
- <span class="emphasis"><em>std::bitset::all() missing</em></span>
- </span></dt><dd><p>Add it, consistently with the discussion.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#695" target="_top">695</a>:
- <span class="emphasis"><em>ctype&lt;char&gt;::classic_table() not accessible</em></span>
- </span></dt><dd><p>Make the member functions table and classic_table public.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#761" target="_top">761</a>:
- <span class="emphasis"><em>unordered_map needs an at() member function</em></span>
- </span></dt><dd><p>In C++0x mode, add at() and at() const.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#775" target="_top">775</a>:
- <span class="emphasis"><em>Tuple indexing should be unsigned?</em></span>
- </span></dt><dd><p>Implement the int -&gt; size_t replacements.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#776" target="_top">776</a>:
- <span class="emphasis"><em>Undescribed assign function of std::array</em></span>
- </span></dt><dd><p>In C++0x mode, remove assign, add fill.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#781" target="_top">781</a>:
- <span class="emphasis"><em>std::complex should add missing C99 functions</em></span>
- </span></dt><dd><p>In C++0x mode, add std::proj.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#809" target="_top">809</a>:
- <span class="emphasis"><em>std::swap should be overloaded for array types</em></span>
- </span></dt><dd><p>Add the overload.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#844" target="_top">844</a>:
- <span class="emphasis"><em>complex pow return type is ambiguous</em></span>
- </span></dt><dd><p>In C++0x mode, remove the pow(complex&lt;T&gt;, int) signature.
- </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#853" target="_top">853</a>:
- <span class="emphasis"><em>to_string needs updating with zero and one</em></span>
- </span></dt><dd><p>Update / add the signatures.
- </p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Setup</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch02.html b/libstdc++-v3/doc/html/manual/bk01pt01ch02.html
deleted file mode 100644
index b673873..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch02.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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>Chapter 2. Setup</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="bk01pt01ch01s03.html" title="Bugs" /><link rel="next" href="configure.html" title="Configure" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch01s03.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.setup"></a>Chapter 2. Setup</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt01ch02.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="bk01pt01ch02s03.html">Make</a></span></dt><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt></dl></dd></dl></div><p>To transform libstdc++ sources into installed include files
- and properly built binaries useful for linking to other software is
- a multi-step process. Steps include getting the sources,
- configuring and building the sources, testing, and installation.
- </p><p>The general outline of commands is something like:
- </p><pre class="programlisting">
- <span class="emphasis"><em>get gcc sources</em></span>
- <span class="emphasis"><em>extract into gccsrcdir</em></span>
- mkdir <span class="emphasis"><em>gccbuilddir</em></span>
- cd <span class="emphasis"><em>gccbuilddir</em></span>
- <span class="emphasis"><em>gccsrcdir</em></span>/configure --prefix=<span class="emphasis"><em>destdir</em></span> --other-opts...
- make
- make check
- make install
- </pre><p>
- Each step is described in more detail in the following sections.
- </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.prereq"></a>Prerequisites</h2></div></div></div><p>
- Because libstdc++ is part of GCC, the primary source for
- installation instructions is
- <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">the GCC install page</a>.
- In particular, list of prerequisite software needed to build the library
- <a class="ulink" href="http://gcc.gnu.org/install/prerequisites.html" target="_top">
- starts with those requirements.</a> The same pages also list
- the tools you will need if you wish to modify the source.
-</p><p>
- Additional data is given here only where it applies to libstdc++.
- </p><p>As of GCC 4.0.1 the minimum version of binutils required to build
- libstdc++ is <code class="code">2.15.90.0.1.1</code>. You can get snapshots
- (as well as releases) of binutils from
- <a class="ulink" href="ftp://sources.redhat.com/pub/binutils" target="_top">
- ftp://sources.redhat.com/pub/binutils</a>.
- Older releases of libstdc++ do not require such a recent version,
- but to take full advantage of useful space-saving features and
- bug-fixes you should use a recent binutils whenever possible.
- The configure process will automatically detect and use these
- features if the underlying support is present.
- </p><p>
- Finally, a few system-specific requirements:
- </p><div class="variablelist"><dl><dt><span class="term">linux</span></dt><dd><p>
- If gcc 3.1.0 or later on is being used on linux, an attempt
- will be made to use "C" library functionality necessary for
- C++ named locale support. For gcc 3.2.1 and later, this
- means that glibc 2.2.5 or later is required and the "C"
- library de_DE locale information must be installed.
- </p><p>
- Note however that the sanity checks involving the de_DE
- locale are skipped when an explicit --enable-clocale=gnu
- configure option is used: only the basic checks are carried
- out, defending against misconfigurations.
- </p><p>
- If the 'gnu' locale model is being used, the following
- locales are used and tested in the libstdc++ testsuites.
- The first column is the name of the locale, the second is
- the character set it is expected to use.
- </p><pre class="programlisting">
-de_DE ISO-8859-1
-de_DE@euro ISO-8859-15
-en_HK ISO-8859-1
-en_PH ISO-8859-1
-en_US ISO-8859-1
-en_US.ISO-8859-1 ISO-8859-1
-en_US.ISO-8859-15 ISO-8859-15
-en_US.UTF-8 UTF-8
-es_ES ISO-8859-1
-es_MX ISO-8859-1
-fr_FR ISO-8859-1
-fr_FR@euro ISO-8859-15
-is_IS UTF-8
-it_IT ISO-8859-1
-ja_JP.eucjp EUC-JP
-se_NO.UTF-8 UTF-8
-ta_IN UTF-8
-zh_TW BIG5
-</pre><p>Failure to have the underlying "C" library locale
- information installed will mean that C++ named locales for the
- above regions will not work: because of this, the libstdc++
- testsuite will skip the named locale tests. If this isn't an
- issue, don't worry about it. If named locales are needed, the
- underlying locale information must be installed. Note that
- rebuilding libstdc++ after the "C" locales are installed is not
- necessary.
- </p><p>
- To install support for locales, do only one of the following:
- </p><div class="itemizedlist"><ul type="disc"><li><p>install all locales</p><div class="itemizedlist"><ul type="circle"><li><p>with RedHat Linux:
- </p><p> <code class="code"> export LC_ALL=C </code>
- </p><p> <code class="code"> rpm -e glibc-common --nodeps </code>
- </p><p>
- <code class="code"> rpm -i --define "_install_langs all"
- glibc-common-2.2.5-34.i386.rpm
- </code>
- </p></li><li><p>
- Instructions for other operating systems solicited.
- </p></li></ul></div></li><li><p>install just the necessary locales</p><div class="itemizedlist"><ul type="circle"><li><p>with Debian Linux:</p><p> Add the above list, as shown, to the file
- <code class="code">/etc/locale.gen</code> </p><p> run <code class="code">/usr/sbin/locale-gen</code> </p></li><li><p>on most Unix-like operating systems:</p><p><code class="code"> localedef -i de_DE -f ISO-8859-1 de_DE </code></p><p>(repeat for each entry in the above list) </p></li><li><p>
- Instructions for other operating systems solicited.
- </p></li></ul></div></li></ul></div></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch01s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="configure.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Bugs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Configure</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html b/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html
deleted file mode 100644
index 51d0c8c..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch02s03.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<?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>Make</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt01ch02.html" title="Chapter 2. Setup" /><link rel="prev" href="configure.html" title="Configure" /><link rel="next" href="test.html" title="Test" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Make</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Setup</th><td width="20%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.make"></a>Make</h2></div></div></div><p>If you have never done this before, you should read the basic
- <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">GCC Installation
- Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>.
- <span class="emphasis"><em>Twice.</em></span>
- </p><p>Then type:<span class="command"><strong>make</strong></span>, and congratulations, you're
-started to build.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt01ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="test.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Test</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html
deleted file mode 100644
index 537a34b..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s02.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<?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>Headers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using.html" title="Chapter 3. Using" /><link rel="next" href="bk01pt01ch03s03.html" title="Namespaces" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.headers"></a>Headers</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.all"></a>Header Files</h3></div></div></div><p>
- The C++ standard specifies the entire set of header files that
- must be available to all hosted implementations. Actually, the
- word "files" is a misnomer, since the contents of the
- headers don't necessarily have to be in any kind of external
- file. The only rule is that when one <code class="code">#include</code>'s a
- header, the contents of that header become available, no matter
- how.
- </p><p>
- That said, in practice files are used.
- </p><p>
- There are two main types of include files: header files related
- to a specific version of the ISO C++ standard (called Standard
- Headers), and all others (TR1, C++ ABI, and Extensions).
- </p><p>
- Two dialects of standard headers are supported, corresponding to
- the 1998 standard as updated for 2003, and the draft of the
- upcoming 200x standard.
- </p><p>
- C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
- </p><div class="table"><a id="id516690"></a><p class="title"><b>Table 3.1. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id508989"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
-C++0x include files. These are only available in C++0x compilation
-mode, i.e. <code class="literal">-std=c++0x</code> or <code class="literal">-std=gnu++0x</code>.
-</p><p></p><div class="table"><a id="id506064"></a><p class="title"><b>Table 3.3. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td><td align="left"><code class="filename">new</code></td></tr><tr><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td><td align="left"><code class="filename">ratio</code></td></tr><tr><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td><td align="left"><code class="filename">stdexcept</code></td></tr><tr><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td><td align="left"><code class="filename">tuple</code></td></tr><tr><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="filename">utility</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id450972"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdatomic</code></td></tr><tr><td align="left"><code class="filename">cstdbool</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td></tr><tr><td align="left"><code class="filename">cstring</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td></tr><tr><td align="left"><code class="filename">cwctype</code></td><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
- In addition, TR1 includes as:
-</p><div class="table"><a id="id474709"></a><p class="title"><b>Table 3.5. C++ TR1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id474193"></a><p class="title"><b>Table 3.6. C++ TR1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
- Also included are files for the C++ ABI interface:
-</p><div class="table"><a id="id466545"></a><p class="title"><b>Table 3.7. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
- And a large variety of extensions.
-</p><div class="table"><a id="id458800"></a><p class="title"><b>Table 3.8. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id471622"></a><p class="title"><b>Table 3.9. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id475105"></a><p class="title"><b>Table 3.10. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
-</p><p>First, mixing different dialects of the standard headers is not
-possible. It's an all-or-nothing affair. Thus, code like
-</p><pre class="programlisting">
-#include &lt;array&gt;
-#include &lt;functional&gt;
-</pre><p>Implies C++0x mode. To use the entities in &lt;array&gt;, the C++0x
-compilation mode must be used, which implies the C++0x functionality
-(and deprecations) in &lt;functional&gt; will be present.
-</p><p>Second, the other headers can be included with either dialect of
-the standard headers, although features and types specific to C++0x
-are still only enabled when in C++0x compilation mode. So, to use
-rvalue references with <code class="code">__gnu_cxx::vstring</code>, or to use the
-debug-mode versions of <code class="code">std::unordered_map</code>, one must use
-the <code class="code">std=gnu++0x</code> compiler flag. (Or <code class="code">std=c++0x</code>, of course.)
-</p><p>A special case of the second rule is the mixing of TR1 and C++0x
-facilities. It is possible (although not especially prudent) to
-include both the TR1 version and the C++0x version of header in the
-same translation unit:
-</p><pre class="programlisting">
-#include &lt;tr1/type_traits&gt;
-#include &lt;type_traits&gt;
-</pre><p> Several parts of C++0x diverge quite substantially from TR1 predecessors.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.cheaders"></a>The C Headers and <code class="code">namespace std</code></h3></div></div></div><p>
- The standard specifies that if one includes the C-style header
- (&lt;math.h&gt; in this case), the symbols will be available
- in the global namespace and perhaps in
- namespace <code class="code">std::</code> (but this is no longer a firm
- requirement.) One the other hand, including the C++-style
- header (&lt;cmath&gt;) guarantees that the entities will be
- found in namespace std and perhaps in the global namespace.
- </p><p>
-Usage of C++-style headers is recommended, as then
-C-linkage names can be disambiguated by explicit qualification, such
-as by <code class="code">std::abort</code>. In addition, the C++-style headers can
-use function overloading to provide a simpler interface to certain
-families of C-functions. For instance in &lt;cmath&gt;, the
-function <code class="code">std::sin</code> has overloads for all the builtin
-floating-point types. This means that <code class="code">std::sin</code> can be
-used uniformly, instead of a combination
-of <code class="code">std::sinf</code>, <code class="code">std::sin</code>,
-and <code class="code">std::sinl</code>.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.pre"></a>Precompiled Headers</h3></div></div></div><p>There are three base header files that are provided. They can be
-used to precompile the standard headers and extensions into binary
-files that may the be used to speed compiles that use these headers.
-</p><div class="itemizedlist"><ul type="disc"><li><p>stdc++.h</p><p>Includes all standard headers. Actual content varies depending on
-language dialect.
-</p></li><li><p>stdtr1c++.h</p><p>Includes all of &lt;stdc++.h&gt;, and adds all the TR1 headers.
-</p></li><li><p>extc++.h</p><p>Includes all of &lt;stdtr1c++.h&gt;, and adds all the Extension headers.
-</p></li></ul></div><p>How to construct a .gch file from one of these base header files.</p><p>First, find the include directory for the compiler. One way to do
-this is:</p><pre class="programlisting">
-g++ -v hello.cc
-
-#include &lt;...&gt; search starts here:
- /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0
-...
-End of search list.
-</pre><p>Then, create a precompiled header file with the same flags that
-will be used to compile other projects.</p><pre class="programlisting">
-g++ -Winvalid-pch -x c++-header -g -O2 -o ./stdc++.h.gch /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0/x86_64-unknown-linux-gnu/bits/stdc++.h
-</pre><p>The resulting file will be quite large: the current size is around
-thirty megabytes. </p><p>How to use the resulting file.</p><pre class="programlisting">
-g++ -I. -include stdc++.h -H -g -O2 hello.cc
-</pre><p>Verification that the PCH file is being used is easy:</p><pre class="programlisting">
-g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe
-! ./stdc++.h.gch
-. /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0/iostream
-. /mnt/share/bld/H-x86-gcc.20071201include/c++/4.3.0/string
-</pre><p>The exclamation point to the left of the <code class="code">stdc++.h.gch</code> listing means that the generated PCH file was used, and thus the </p><p></p><p> Detailed information about creating precompiled header files can be found in the GCC <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html" target="_top">documentation</a>.
-</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Namespaces</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html
deleted file mode 100644
index 2250ea6..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s03.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<?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>Namespaces</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s02.html" title="Headers" /><link rel="next" href="bk01pt01ch03s04.html" title="Macros" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Namespaces</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.namespaces"></a>Namespaces</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.all"></a>Available Namespaces</h3></div></div></div><p> There are three main namespaces.
-</p><div class="itemizedlist"><ul type="disc"><li><p>std</p><p>The ISO C++ standards specify that "all library entities are defined
-within namespace std." This includes namespaces nested
-within <code class="code">namespace std</code>, such as <code class="code">namespace
-std::tr1</code>.
-</p></li><li><p>abi</p><p>Specified by the C++ ABI. This ABI specifies a number of type and
-function APIs supplemental to those required by the ISO C++ Standard,
-but necessary for interoperability.
-</p></li><li><p>__gnu_</p><p>Indicating one of several GNU extensions. Choices
-include <code class="code">__gnu_cxx</code>, <code class="code">__gnu_debug</code>, <code class="code">__gnu_parallel</code>,
-and <code class="code">__gnu_pbds</code>.
-</p></li></ul></div><p> A complete list of implementation namespaces (including namespace contents) is available in the generated source <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html" target="_top">documentation</a>.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.std"></a>namespace std</h3></div></div></div><p>
- One standard requirement is that the library components are defined
- in <code class="code">namespace std::</code>. Thus, in order to use these types or
- functions, one must do one of two things:
-</p><div class="itemizedlist"><ul type="disc"><li><p>put a kind of <span class="emphasis"><em>using-declaration</em></span> in your source
-(either <code class="code">using namespace std;</code> or i.e. <code class="code">using
-std::string;</code>) This approach works well for individual source files, but
-should not be used in a global context, like header files.
- </p></li><li><p>use a <span class="emphasis"><em>fully
-qualified name</em></span>for each library symbol
-(i.e. <code class="code">std::string</code>, <code class="code">std::cout</code>) Always can be
-used, and usually enhanced, by strategic use of typedefs. (In the
-cases where the qualified verbiage becomes unwieldy.)
- </p></li></ul></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.namespaces.comp"></a>Using Namespace Composition</h3></div></div></div><p>
-Best practice in programming suggests sequestering new data or
-functionality in a sanely-named, unique namespace whenever
-possible. This is considered an advantage over dumping everything in
-the global namespace, as then name look-up can be explicitly enabled or
-disabled as above, symbols are consistently mangled without repetitive
-naming prefixes or macros, etc.
-</p><p>For instance, consider a project that defines most of its classes in <code class="code">namespace gtk</code>. It is possible to
- adapt <code class="code">namespace gtk</code> to <code class="code">namespace std</code> by using a C++-feature called
- <span class="emphasis"><em>namespace composition</em></span>. This is what happens if
- a <span class="emphasis"><em>using</em></span>-declaration is put into a
- namespace-definition: the imported symbol(s) gets imported into the
- currently active namespace(s). For example:
-</p><pre class="programlisting">
-namespace gtk
-{
- using std::string;
- using std::tr1::array;
-
- class Window { ... };
-}
-</pre><p>
- In this example, <code class="code">std::string</code> gets imported into
- <code class="code">namespace gtk</code>. The result is that use of
- <code class="code">std::string</code> inside namespace gtk can just use <code class="code">string</code>, without the explicit qualification.
- 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
- 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
- <code class="email">&lt;<a class="email" href="mailto:llewelly@dbritsch.dsl.xmission.com">llewelly@dbritsch.dsl.xmission.com</a>&gt;</code>, Karl Nelson <code class="email">&lt;<a class="email" href="mailto:kenelson@ece.ucdavis.edu">kenelson@ece.ucdavis.edu</a>&gt;</code>)
-</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Headers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Macros</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html
deleted file mode 100644
index 3d839e9..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s04.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<?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>Macros</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s03.html" title="Namespaces" /><link rel="next" href="bk01pt01ch03s05.html" title="Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Macros</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.macros"></a>Macros</h2></div></div></div><p>All pre-processor switches and configurations are all gathered
- in the file <code class="code">c++config.h</code>, which is generated during
- the libstdc++ configuration and build process, and included by
- files part of the public libstdc++ API. Most of these macros
- should not be used by consumers of libstdc++, and are reserved
- for internal implementation use. <span class="emphasis"><em>These macros cannot be
- redefined</em></span>. However, a select handful of these macro
- control libstdc++ extensions and extra features, or provide
- versioning information for the API, and are able to be used.
- </p><p>All library macros begin with <code class="code">_GLIBCXX_</code> (except for
- versions 3.1.x to 3.3.x, which use <code class="code">_GLIBCPP_</code>).
- </p><p>Below is the macro which users may check for library version
- information. </p><div class="variablelist"><dl><dt><span class="term"><code class="code">__GLIBCXX__</code></span></dt><dd><p>The current version of
- libstdc++ in compressed ISO date format, form of an unsigned
- long. For details on the value of this particular macro for a
- particular release, please consult this <a class="ulink" href="abi.html" target="_top">
- document</a>.
- </p></dd></dl></div><p>Below are the macros which users may change with #define/#undef or
- with -D/-U compiler flags. The default state of the symbol is
- listed.</p><p>“<span class="quote">Configurable</span>” (or “<span class="quote">Not configurable</span>”) means
- that the symbol is initially chosen (or not) based on
- --enable/--disable options at library build and configure time
- (documented <a class="link" href="configure.html" title="Configure">here</a>), with the
- various --enable/--disable choices being translated to
- #define/#undef).
- </p><p> <acronym class="acronym">ABI</acronym> means that changing from the default value may
- mean changing the <acronym class="acronym">ABI</acronym> of compiled code. In other words, these
- choices control code which has already been compiled (i.e., in a
- binary such as libstdc++.a/.so). If you explicitly #define or
- #undef these macros, the <span class="emphasis"><em>headers</em></span> may see different code
- paths, but the <span class="emphasis"><em>libraries</em></span> which you link against will not.
- Experimenting with different values with the expectation of
- consistent linkage requires changing the config headers before
- building/installing the library.
- </p><div class="variablelist"><dl><dt><span class="term"><code class="code">_GLIBCXX_DEPRECATED</code></span></dt><dd><p>
- Defined by default. Not configurable. ABI-changing. Turning this off
- removes older ARM-style iostreams code, and other anachronisms
- from the API. This macro is dependent on the version of the
- standard being tracked, and as a result may give different results for
- <code class="code">-std=c++98</code> and <code class="code">-std=c++0x</code>. This may
- be useful in updating old C++ code which no longer meet the
- requirements of the language, or for checking current code
- against new language standards.
- </p></dd><dt><span class="term"><code class="code">_GLIBCXX_FORCE_NEW</code></span></dt><dd><p>
- Undefined by default. When defined, memory allocation and
- allocators controlled by libstdc++ call operator new/delete
- without caching and pooling. Configurable via
- <code class="code">--enable-libstdcxx-allocator</code>. ABI-changing.
- </p></dd><dt><span class="term"><code class="code">_GLIBCXX_CONCEPT_CHECKS</code></span></dt><dd><p>
- Undefined by default. Configurable via
- <code class="code">--enable-concept-checks</code>. 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 class="ulink" href="../19_diagnostics/howto.html#3" target="_top">here</a>.
- </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG</code></span></dt><dd><p>
- Undefined by default. When defined, compiles
- user code using the <a class="ulink" href="../ext/debug.html#safe" target="_top">libstdc++ debug
- mode</a>.
- </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG_PEDANTIC</code></span></dt><dd><p>
- Undefined by default. When defined while
- compiling with the <a class="ulink" href="../ext/debug.html#safe" target="_top">libstdc++ debug
- mode</a>, makes the debug mode extremely picky by making the use
- of libstdc++ extensions and libstdc++-specific behavior into
- errors.
- </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles
- user code using the <a class="ulink" href="../ext/parallel_mode.html" target="_top">libstdc++ parallel
- mode</a>.
- </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Namespaces </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Concurrency</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
deleted file mode 100644
index d814ad6..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s05.html
+++ /dev/null
@@ -1,219 +0,0 @@
-<?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>Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s04.html" title="Macros" /><link rel="next" href="bk01pt01ch03s06.html" title="Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s04.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch03s06.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.concurrency"></a>Concurrency</h2></div></div></div><p>This section discusses issues surrounding the proper compilation
- 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="sect2" lang="en" xml:lang="en"><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
- 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
- final application is actually single-threaded, then it should be
- safe to mix user code built with a thread model of
- <span class="emphasis"><em>single</em></span> with a libstdc++ and other C++ libraries built
- with another thread model useful on the platform. Other mixes
- may or may not work but are not considered supported. (Thus, if
- you distribute a shared C++ library in binary form only, it may
- be best to compile it with a GCC configured with
- --enable-threads for maximal interchangeability and usefulness
- with a user population that may have built GCC with either
- --enable-threads or --disable-threads.)
- </p><p>When you link a multithreaded application, you will probably
- need to add a library or flag to g++. This is a very
- non-standardized area of GCC across ports. Some ports support a
- special flag (the spelling isn't even standardized yet) to add
- all required macros to a compilation (if any such flags are
- required then you must provide the flag for all compilations not
- just linking) and link-library additions and/or replacements at
- link time. The documentation is weak. Here is a quick summary
- to display how ad hoc this is: On Solaris, both -pthreads and
- -threads (with subtly different meanings) are honored. On OSF,
- -pthread and -threads (with subtly different meanings) are
- honored. On Linux/i386, -pthread is honored. On FreeBSD,
- -pthread is honored. Some other ports use other switches.
- AFAIK, none of this is properly documented anywhere other than
- in ``gcc -dumpspecs'' (look at lib and cpp entries).
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.thread_safety"></a>Thread Safety</h3></div></div></div><p>
-We currently use the <a class="ulink" href="http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI STL</a> definition of thread safety.
-</p><p>The library strives to be thread-safe when all of the following
- conditions are met:
- </p><div class="itemizedlist"><ul type="disc"><li><p>The system's libc is itself thread-safe,
- </p></li><li><p>
- The compiler in use reports a thread model other than
- 'single'. This can be tested via output from <code class="code">gcc
- -v</code>. Multi-thread capable versions of gcc output
- something like this:
- </p><pre class="programlisting">
-%gcc -v
-Using built-in specs.
-...
-Thread model: posix
-gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
-</pre><p>Look for "Thread model" lines that aren't equal to "single."</p></li><li><p>
- Requisite command-line flags are used for atomic operations
- and threading. Examples of this include <code class="code">-pthread</code>
- and <code class="code">-march=native</code>, although specifics vary
- depending on the host environment. See <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html" target="_top">Machine
- Dependent Options</a>.
- </p></li><li><p>
- An implementation of atomicity.h functions
- exists for the architecture in question. See the internals documentation for more <a class="ulink" href="../ext/concurrence.html" target="_top">details</a>.
- </p></li></ul></div><p>The user-code must guard against concurrent method calls which may
- access any particular library object's state. Typically, the
- application programmer may infer what object locks must be held
- based on the objects referenced in a method call. Without getting
- into great detail, here is an example which requires user-level
- locks:
- </p><pre class="programlisting">
- library_class_a shared_object_a;
-
- thread_main () {
- library_class_b *object_b = new library_class_b;
- shared_object_a.add_b (object_b); // must hold lock for shared_object_a
- shared_object_a.mutate (); // must hold lock for shared_object_a
- }
-
- // Multiple copies of thread_main() are started in independent threads.</pre><p>Under the assumption that object_a and object_b are never exposed to
- another thread, here is an example that should not require any
- user-level locks:
- </p><pre class="programlisting">
- thread_main () {
- library_class_a object_a;
- library_class_b *object_b = new library_class_b;
- object_a.add_b (object_b);
- object_a.mutate ();
- } </pre><p>All library objects are safe to use in a multithreaded program as
- long as each thread carefully locks out access by any other
- thread while it uses any object visible to another thread, i.e.,
- treat library objects like any other shared resource. In general,
- this requirement includes both read and write access to objects;
- unless otherwise documented as safe, do not assume that two threads
- may access a shared standard library object at the same time.
- </p><p>See chapters <a class="ulink" href="../17_intro/howto.html#3" target="_top">17</a> (library
- introduction), <a class="ulink" href="../23_containers/howto.html#3" target="_top">23</a>
- (containers), and <a class="ulink" href="../27_io/howto.html#9" target="_top">27</a> (I/O) for
- more information.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.atomics"></a>Atomics</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.io"></a>IO</h3></div></div></div><p>I'll assume that you have already read the
- <a class="ulink" href="../17_intro/howto.html#3" target="_top">general notes on library threads</a>,
- and the
- <a class="ulink" href="../23_containers/howto.html#3" target="_top">notes on threaded container
- access</a> (you might not think of an I/O stream as a container, but
- the points made there also hold here). If you have not read them,
- please do so first.
- </p><p>This gets a bit tricky. Please read carefully, and bear with me.
- </p><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="concurrency.io.structure"></a>Structure</h4></div></div></div><p>A wrapper
- type called <code class="code">__basic_file</code> provides our abstraction layer
- for the <code class="code">std::filebuf</code> classes. Nearly all decisions dealing
- with actual input and output must be made in <code class="code">__basic_file</code>.
- </p><p>A generic locking mechanism is somewhat in place at the filebuf layer,
- but is not used in the current code. Providing locking at any higher
- level is akin to providing locking within containers, and is not done
- for the same reasons (see the links above).
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="concurrency.io.defaults"></a>Defaults</h4></div></div></div><p>The __basic_file type is simply a collection of small wrappers around
- the C stdio layer (again, see the link under Structure). We do no
- locking ourselves, but simply pass through to calls to <code class="code">fopen</code>,
- <code class="code">fwrite</code>, and so forth.
- </p><p>So, for 3.0, the question of "is multithreading safe for I/O"
- must be answered with, "is your platform's C library threadsafe
- for I/O?" Some are by default, some are not; many offer multiple
- implementations of the C library with varying tradeoffs of threadsafety
- and efficiency. You, the programmer, are always required to take care
- with multiple threads.
- </p><p>(As an example, the POSIX standard requires that C stdio FILE*
- operations are atomic. POSIX-conforming C libraries (e.g, on Solaris
- and GNU/Linux) have an internal mutex to serialize operations on
- FILE*s. However, you still need to not do stupid things like calling
- <code class="code">fclose(fs)</code> in one thread followed by an access of
- <code class="code">fs</code> in another.)
- </p><p>So, if your platform's C library is threadsafe, then your
- <code class="code">fstream</code> I/O operations will be threadsafe at the lowest
- level. For higher-level operations, such as manipulating the data
- contained in the stream formatting classes (e.g., setting up callbacks
- inside an <code class="code">std::ofstream</code>), you need to guard such accesses
- like any other critical shared resource.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="concurrency.io.future"></a>Future</h4></div></div></div><p> A
- second choice may be available for I/O implementations: libio. This is
- disabled by default, and in fact will not currently work due to other
- issues. It will be revisited, however.
- </p><p>The libio code is a subset of the guts of the GNU libc (glibc) I/O
- implementation. When libio is in use, the <code class="code">__basic_file</code>
- type is basically derived from FILE. (The real situation is more
- complex than that... it's derived from an internal type used to
- implement FILE. See libio/libioP.h to see scary things done with
- vtbls.) The result is that there is no "layer" of C stdio
- to go through; the filebuf makes calls directly into the same
- functions used to implement <code class="code">fread</code>, <code class="code">fwrite</code>,
- and so forth, using internal data structures. (And when I say
- "makes calls directly," I mean the function is literally
- replaced by a jump into an internal function. Fast but frightening.
- *grin*)
- </p><p>Also, the libio internal locks are used. This requires pulling in
- large chunks of glibc, such as a pthreads implementation, and is one
- of the issues preventing widespread use of libio as the libstdc++
- cstdio implementation.
- </p><p>But we plan to make this work, at least as an option if not a future
- default. Platforms running a copy of glibc with a recent-enough
- version will see calls from libstdc++ directly into the glibc already
- installed. For other platforms, a copy of the libio subsection will
- be built and included in libstdc++.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="concurrency.io.alt"></a>Alternatives</h4></div></div></div><p>Don't forget that other cstdio implementations are possible. You could
- easily write one to perform your own forms of locking, to solve your
- "interesting" problems.
- </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.concurrency.containers"></a>Containers</h3></div></div></div><p>This section discusses issues surrounding the design of
- multithreaded applications which use Standard C++ containers.
- All information in this section is current as of the gcc 3.0
- release and all later point releases. Although earlier gcc
- releases had a different approach to threading configuration and
- proper compilation, the basic code design rules presented here
- were similar. For information on all other aspects of
- multithreading as it relates to libstdc++, including details on
- the proper compilation of threaded code (and compatibility between
- threaded and non-threaded code), see Chapter 17.
- </p><p>Two excellent pages to read when working with the Standard C++
- containers and threads are
- <a class="ulink" href="http://www.sgi.com/tech/stl/thread_safety.html" target="_top">SGI's
- http://www.sgi.com/tech/stl/thread_safety.html</a> and
- <a class="ulink" href="http://www.sgi.com/tech/stl/Allocators.html" target="_top">SGI's
- http://www.sgi.com/tech/stl/Allocators.html</a>.
- </p><p><span class="emphasis"><em>However, please ignore all discussions about the user-level
- configuration of the lock implementation inside the STL
- container-memory allocator on those pages. For the sake of this
- discussion, libstdc++ configures the SGI STL implementation,
- not you. This is quite different from how gcc pre-3.0 worked.
- In particular, past advice was for people using g++ to
- explicitly define _PTHREADS or other macros or port-specific
- compilation options on the command line to get a thread-safe
- STL. This is no longer required for any port and should no
- longer be done unless you really know what you are doing and
- assume all responsibility.</em></span>
- </p><p>Since the container implementation of libstdc++ uses the SGI
- code, we use the same definition of thread safety as SGI when
- discussing design. A key point that beginners may miss is the
- fourth major paragraph of the first page mentioned above
- ("For most clients,"...), 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
- 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
- trivial to provide a wrapper class which obtains the lock (as
- SGI suggests), performs the container operation, and then
- releases the lock. This could be templatized <span class="emphasis"><em>to a certain
- extent</em></span>, on the underlying container and/or a locking
- mechanism. Trying to provide a catch-all general template
- solution would probably be more trouble than it's worth.
- </p><p>The STL implementation is currently configured to use the
- high-speed caching memory allocator. Some people like to
- test and/or normally run threaded programs with a different
- default. For all details about how to globally override this
- at application run-time see <a class="ulink" href="../ext/howto.html#3" target="_top">here</a>.
- </p><p>There is a better way (not standardized yet): It is possible to
- force the malloc-based allocator on a per-case-basis for some
- application code. The library team generally believes that this
- is a better way to tune an application for high-speed using this
- implementation of the STL. There is
- <a class="ulink" href="../ext/howto.html#3" target="_top">more information on allocators here</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch03s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Macros </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html b/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html
deleted file mode 100644
index 3fbe4e4..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt01ch03s06.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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>Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="bk01pt01ch03s05.html" title="Concurrency" /><link rel="next" href="debug.html" title="Debugging Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt01ch03s05.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.exception"></a>Exceptions</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.propagating"></a>Propagating Exceptions aka Exception Neutrality</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p>
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.no"></a>Support for <code class="literal">-fno-exceptions</code></h3></div></div></div><p>
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt01ch03s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04.html b/libstdc++-v3/doc/html/manual/bk01pt02ch04.html
deleted file mode 100644
index fd3c1ec..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch04.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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>Chapter 4. Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02pr01.html" title="" /><link rel="next" href="bk01pt02ch04s02.html" title="Numeric Properties" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.types"></a>Chapter 4. Types</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt02ch04.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.fundamental"></a>Fundamental Types</h2></div></div></div><p>
- C++ has the following builtin types:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- char
- </p></li><li><p>
- signed char
- </p></li><li><p>
- unsigned char
- </p></li><li><p>
- signed short
- </p></li><li><p>
- signed int
- </p></li><li><p>
- signed long
- </p></li><li><p>
- unsigned short
- </p></li><li><p>
- unsigned int
- </p></li><li><p>
- unsigned long
- </p></li><li><p>
- bool
- </p></li><li><p>
- wchar_t
- </p></li><li><p>
- float
- </p></li><li><p>
- double
- </p></li><li><p>
- long double
- </p></li></ul></div><p>
- These fundamental types are always available, without having to
- include a header file. These types are exactly the same in
- either C++ or in C.
- </p><p>
- Specializing parts of the library on these types is prohibited:
- instead, use a POD.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Numeric Properties</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch05.html b/libstdc++-v3/doc/html/manual/bk01pt02ch05.html
deleted file mode 100644
index e48894d..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch05.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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>Chapter 5. Dynamic Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02ch04s03.html" title="NULL" /><link rel="next" href="bk01pt02ch06.html" title="Chapter 6. Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch06.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.memory"></a>Chapter 5. Dynamic Memory</h2></div></div></div><p>
- There are six flavors each of <code class="function">new</code> and
- <code class="function">delete</code>, so make certain that you're using the right
- ones. Here are quickie descriptions of <code class="function">new</code>:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- single object form, throwing a
- <code class="classname">bad_alloc</code> on errors; this is what most
- people are used to using
- </p></li><li><p>
- Single object "nothrow" form, returning NULL on errors
- </p></li><li><p>
- Array <code class="function">new</code>, throwing
- <code class="classname">bad_alloc</code> on errors
- </p></li><li><p>
- Array nothrow <code class="function">new</code>, returning
- <code class="constant">NULL</code> on errors
- </p></li><li><p>
- Placement <code class="function">new</code>, which does nothing (like
- it's supposed to)
- </p></li><li><p>
- Placement array <code class="function">new</code>, which also does
- nothing
- </p></li></ul></div><p>
- They are distinguished by the parameters that you pass to them, like
- any other overloaded function. The six flavors of <code class="function">delete</code>
- are distinguished the same way, but none of them are allowed to throw
- an exception under any circumstances anyhow. (They match up for
- completeness' sake.)
- </p><p>
- Remember that it is perfectly okay to call <code class="function">delete</code> on a
- NULL pointer! Nothing happens, by definition. That is not the
- same thing as deleting a pointer twice.
- </p><p>
- By default, if one of the “<span class="quote">throwing <code class="function">new</code>s</span>” can't
- allocate the memory requested, it tosses an instance of a
- <code class="classname">bad_alloc</code> exception (or, technically, some class derived
- from it). You can change this by writing your own function (called a
- new-handler) and then registering it with <code class="function">set_new_handler()</code>:
- </p><pre class="programlisting">
- typedef void (*PFV)(void);
-
- static char* safety;
- static PFV old_handler;
-
- void my_new_handler ()
- {
- delete[] safety;
- popup_window ("Dude, you are running low on heap memory. You
- should, like, close some windows, or something.
- The next time you run out, we're gonna burn!");
- set_new_handler (old_handler);
- return;
- }
-
- int main ()
- {
- safety = new char[500000];
- old_handler = set_new_handler (&amp;my_new_handler);
- ...
- }
- </pre><p>
- <code class="classname">bad_alloc</code> is derived from the base <code class="classname">exception</code>
- class defined in Chapter 19.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">NULL </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Termination</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch06.html b/libstdc++-v3/doc/html/manual/bk01pt02ch06.html
deleted file mode 100644
index f3ec921..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch06.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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>Chapter 6. Termination</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02ch05.html" title="Chapter 5. Dynamic Memory" /><link rel="next" href="bk01pt02ch06s02.html" title="Verbose Terminate Handler" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch05.html">Prev</a> </td><th width="60%" align="center">Part II. Support</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch06s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.termination"></a>Chapter 6. Termination</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt02ch06.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch06s02.html">Verbose Terminate Handler</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.handlers"></a>Termination Handlers</h2></div></div></div><p>
- Not many changes here to <code class="filename">cstdlib</code>. You should note that the
- <code class="function">abort()</code> function does not call the
- destructors of automatic nor static objects, so if you're
- depending on those to do cleanup, it isn't going to happen.
- (The functions registered with <code class="function">atexit()</code>
- don't get called either, so you can forget about that
- possibility, too.)
- </p><p>
- The good old <code class="function">exit()</code> function can be a bit
- funky, too, until you look closer. Basically, three points to
- remember are:
- </p><div class="orderedlist"><ol type="1"><li><p>
- Static objects are destroyed in reverse order of their creation.
- </p></li><li><p>
- Functions registered with <code class="function">atexit()</code> are called in
- reverse order of registration, once per registration call.
- (This isn't actually new.)
- </p></li><li><p>
- The previous two actions are “<span class="quote">interleaved,</span>” that is,
- given this pseudocode:
- </p><pre class="programlisting">
- extern "C or C++" void f1 (void);
- extern "C or C++" void f2 (void);
-
- static Thing obj1;
- atexit(f1);
- static Thing obj2;
- atexit(f2);
-</pre><p>
- then at a call of <code class="function">exit()</code>,
- <code class="varname">f2</code> will be called, then
- <code class="varname">obj2</code> will be destroyed, then
- <code class="varname">f1</code> will be called, and finally
- <code class="varname">obj1</code> will be destroyed. If
- <code class="varname">f1</code> or <code class="varname">f2</code> allow an
- exception to propagate out of them, Bad Things happen.
- </p></li></ol></div><p>
- Note also that <code class="function">atexit()</code> is only required to store 32
- functions, and the compiler/library might already be using some of
- those slots. If you think you may run out, we recommend using
- the <code class="function">xatexit</code>/<code class="function">xexit</code> combination from <code class="literal">libiberty</code>, which has no such limit.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch06s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Dynamic Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Verbose Terminate Handler</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html b/libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html
deleted file mode 100644
index 9f3f401..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt02ch06s02.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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>Verbose Terminate Handler</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02ch06.html" title="Chapter 6. Termination" /><link rel="prev" href="bk01pt02ch06.html" title="Chapter 6. Termination" /><link rel="next" href="diagnostics.html" title="Part III. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Verbose Terminate Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch06.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Termination</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.verbose"></a>Verbose Terminate Handler</h2></div></div></div><p>
- If you are having difficulty with uncaught exceptions and want a
- little bit of help debugging the causes of the core dumps, you can
- make use of a GNU extension, the verbose terminate handler.
- </p><pre class="programlisting">
-#include &lt;exception&gt;
-
-int main()
-{
- std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
- ...
-
- throw <em class="replaceable"><code>anything</code></em>;
-}
-</pre><p>
- The <code class="function">__verbose_terminate_handler</code> function
- obtains the name of the current exception, attempts to demangle
- it, and prints it to stderr. If the exception is derived from
- <code class="classname">exception</code> then the output from
- <code class="function">what()</code> will be included.
- </p><p>
- Any replacement termination function is required to kill the
- program without returning; this one calls abort.
- </p><p>
- For example:
- </p><pre class="programlisting">
-#include &lt;exception&gt;
-#include &lt;stdexcept&gt;
-
-struct argument_error : public std::runtime_error
-{
- argument_error(const std::string&amp; s): std::runtime_error(s) { }
-};
-
-int main(int argc)
-{
- std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
- if (argc &gt; 5)
- throw argument_error(“<span class="quote">argc is greater than 5!</span>”);
- else
- throw argc;
-}
-</pre><p>
- With the verbose terminate handler active, this gives:
- </p><pre class="screen">
- <code class="computeroutput">
- % ./a.out
- terminate called after throwing a `int'
- Aborted
- % ./a.out f f f f f f f f f f f
- terminate called after throwing an instance of `argument_error'
- what(): argc is greater than 5!
- Aborted
- </code>
- </pre><p>
- The 'Aborted' line comes from the call to
- <code class="function">abort()</code>, of course.
- </p><p>
- This is the default termination handler; nothing need be done to
- use it. To go back to the previous “<span class="quote">silent death</span>”
- method, simply include <code class="filename">exception</code> and
- <code class="filename">cstdlib</code>, and call
- </p><pre class="programlisting">
- std::set_terminate(std::abort);
- </pre><p>
- After this, all calls to <code class="function">terminate</code> will use
- <code class="function">abort</code> as the terminate handler.
- </p><p>
- Note: the verbose terminate handler will attempt to write to
- stderr. If your application closes stderr or redirects it to an
- inappropriate location,
- <code class="function">__verbose_terminate_handler</code> will behave in
- an unspecified manner.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02ch06.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. Termination </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. Diagnostics</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07.html
deleted file mode 100644
index c8d622c..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt03ch07.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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>Chapter 7. Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="next" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III. Diagnostics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt03ch07.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s03.html">Cancellation</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p>
- All exception objects are defined in one of the standard header
- files: <code class="filename">exception</code>,
- <code class="filename">stdexcept</code>, <code class="filename">new</code>, and
- <code class="filename">typeinfo</code>.
- </p><p>
- The base exception object is <code class="classname">exception</code>,
- located in <code class="filename">exception</code>. This object has no
- <code class="classname">string</code> member.
- </p><p>
- Derived from this are several classes that may have a
- <code class="classname">string</code> member: a full hierarchy can be
- found in the <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00233.html" target="_top">source documentation</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. Diagnostics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Adding Data to Exceptions</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch09.html b/libstdc++-v3/doc/html/manual/bk01pt04ch09.html
deleted file mode 100644
index 9182ef7..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch09.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<?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>Chapter 9. Functors</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="utilities.html" title="Part IV. Utilities" /><link rel="next" href="bk01pt04ch10.html" title="Chapter 10. Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Functors</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch10.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.functors"></a>Chapter 9. Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people
- get slightly the wrong idea. In the interest of not reinventing
- the wheel, we will refer you to the introduction to the functor
- concept written by SGI as part of their STL, in
- <a class="ulink" href="http://www.sgi.com/tech/stl/functors.html" target="_top">their
- http://www.sgi.com/tech/stl/functors.html</a>.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IV. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. Pairs</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch10.html b/libstdc++-v3/doc/html/manual/bk01pt04ch10.html
deleted file mode 100644
index 84177cd..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch10.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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>Chapter 10. Pairs</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="bk01pt04ch09.html" title="Chapter 9. Functors" /><link rel="next" href="bk01pt04ch11.html" title="Chapter 11. Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04ch09.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04ch11.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.pairs"></a>Chapter 10. Pairs</h2></div></div></div><p>The <code class="code">pair&lt;T1,T2&gt;</code> is a simple and handy way to
- carry around a pair of objects. One is of type T1, and another of
- type T2; they may be the same type, but you don't get anything
- extra if they are. The two members can be accessed directly, as
- <code class="code">.first</code> and <code class="code">.second</code>.
- </p><p>Construction is simple. The default ctor initializes each member
- with its respective default ctor. The other simple ctor,
- </p><pre class="programlisting">
- pair (const T1&amp; x, const T2&amp; y);
- </pre><p>does what you think it does, <code class="code">first</code> getting <code class="code">x</code>
- and <code class="code">second</code> getting <code class="code">y</code>.
- </p><p>There is a copy constructor, but it requires that your compiler
- handle member function templates:
- </p><pre class="programlisting">
- template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
- </pre><p>The compiler will convert as necessary from U to T1 and from
- V to T2 in order to perform the respective initializations.
- </p><p>The comparison operators are done for you. Equality
- of two <code class="code">pair&lt;T1,T2&gt;</code>s is defined as both <code class="code">first</code>
- members comparing equal and both <code class="code">second</code> members comparing
- equal; this simply delegates responsibility to the respective
- <code class="code">operator==</code> functions (for types like MyClass) or builtin
- comparisons (for types like int, char, etc).
- </p><p>
- The less-than operator is a bit odd the first time you see it. It
- is defined as evaluating to:
- </p><pre class="programlisting">
- x.first &lt; y.first ||
- ( !(y.first &lt; x.first) &amp;&amp; x.second &lt; y.second )
- </pre><p>The other operators are not defined using the <code class="code">rel_ops</code>
- functions above, but their semantics are the same.
- </p><p>Finally, there is a template function called <code class="function">make_pair</code>
- that takes two references-to-const objects and returns an
- instance of a pair instantiated on their respective types:
- </p><pre class="programlisting">
- pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
- </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04ch09.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04ch11.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Functors </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. Memory</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html b/libstdc++-v3/doc/html/manual/bk01pt04ch11.html
deleted file mode 100644
index 24d4a7f..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch11.html
+++ /dev/null
@@ -1,346 +0,0 @@
-<?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>Chapter 11. Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="bk01pt04ch10.html" title="Chapter 10. Pairs" /><link rel="next" href="auto_ptr.html" title="auto_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04ch10.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.memory"></a>Chapter 11. Memory</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt04ch11.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="bk01pt04ch11.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></div><p>
- Memory contains three general areas. First, function and operator
- calls via <code class="function">new</code> and <code class="function">delete</code>
- operator or member function calls. Second, allocation via
- <code class="classname">allocator</code>. And finally, smart pointer and
- intelligent pointer abstractions.
- </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.allocator"></a>Allocators</h2></div></div></div><p>
- Memory management for Standard Library entities is encapsulated in a
- class template called <code class="classname">allocator</code>. The
- <code class="classname">allocator</code> abstraction is used throughout the
- library in <code class="classname">string</code>, container classes,
- algorithms, and parts of iostreams. This class, and base classes of
- it, are the superset of available free store (“<span class="quote">heap</span>”)
- management classes.
-</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.req"></a>Requirements</h3></div></div></div><p>
- The C++ standard only gives a few directives in this area:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- When you add elements to a container, and the container must
- allocate more memory to hold them, the container makes the
- request via its <span class="type">Allocator</span> template
- parameter, which is usually aliased to
- <span class="type">allocator_type</span>. This includes adding chars
- to the string class, which acts as a regular STL container in
- this respect.
- </p></li><li><p>
- The default <span class="type">Allocator</span> argument of every
- container-of-T is <code class="classname">allocator&lt;T&gt;</code>.
- </p></li><li><p>
- The interface of the <code class="classname">allocator&lt;T&gt;</code> class is
- extremely simple. It has about 20 public declarations (nested
- typedefs, member functions, etc), but the two which concern us most
- are:
- </p><pre class="programlisting">
- T* allocate (size_type n, const void* hint = 0);
- void deallocate (T* p, size_type n);
- </pre><p>
- The <code class="varname">n</code> arguments in both those
- functions is a <span class="emphasis"><em>count</em></span> of the number of
- <span class="type">T</span>'s to allocate space for, <span class="emphasis"><em>not their
- total size</em></span>.
- (This is a simplification; the real signatures use nested typedefs.)
- </p></li><li><p>
- The storage is obtained by calling <code class="function">::operator
- new</code>, but it is unspecified when or how
- often this function is called. The use of the
- <code class="varname">hint</code> is unspecified, but intended as an
- aid to locality if an implementation so
- desires. <code class="constant">[20.4.1.1]/6</code>
- </p></li></ul></div><p>
- Complete details cam be found in the C++ standard, look in
- <code class="constant">[20.4 Memory]</code>.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.design_issues"></a>Design Issues</h3></div></div></div><p>
- The easiest way of fulfilling the requirements is to call
- <code class="function">operator new</code> each time a container needs
- memory, and to call <code class="function">operator delete</code> each time
- the container releases memory. This method may be <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html" target="_top">slower</a>
- than caching the allocations and re-using previously-allocated
- memory, but has the advantage of working correctly across a wide
- variety of hardware and operating systems, including large
- clusters. The <code class="classname">__gnu_cxx::new_allocator</code>
- implements the simple operator new and operator delete semantics,
- while <code class="classname">__gnu_cxx::malloc_allocator</code>
- implements much the same thing, only with the C language functions
- <code class="function">std::malloc</code> and <code class="function">free</code>.
- </p><p>
- Another approach is to use intelligence within the allocator
- class to cache allocations. This extra machinery can take a variety
- of forms: a bitmap index, an index into an exponentially increasing
- power-of-two-sized buckets, or simpler fixed-size pooling cache.
- The cache is shared among all the containers in the program: when
- your program's <code class="classname">std::vector&lt;int&gt;</code> gets
- cut in half and frees a bunch of its storage, that memory can be
- reused by the private
- <code class="classname">std::list&lt;WonkyWidget&gt;</code> brought in from
- a KDE library that you linked against. And operators
- <code class="function">new</code> and <code class="function">delete</code> are not
- always called to pass the memory on, either, which is a speed
- bonus. Examples of allocators that use these techniques are
- <code class="classname">__gnu_cxx::bitmap_allocator</code>,
- <code class="classname">__gnu_cxx::pool_allocator</code>, and
- <code class="classname">__gnu_cxx::__mt_alloc</code>.
- </p><p>
- Depending on the implementation techniques used, the underlying
- operating system, and compilation environment, scaling caching
- allocators can be tricky. In particular, order-of-destruction and
- order-of-creation for memory pools may be difficult to pin down
- with certainty, which may create problems when used with plugins
- or loading and unloading shared objects in memory. As such, using
- caching allocators on systems that do not support
- <code class="function">abi::__cxa_atexit</code> is not recommended.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id495307"></a>Interface Design</h4></div></div></div><p>
- The only allocator interface that
- is support is the standard C++ interface. As such, all STL
- containers have been adjusted, and all external allocators have
- been modified to support this change.
- </p><p>
- The class <code class="classname">allocator</code> just has typedef,
- constructor, and rebind members. It inherits from one of the
- high-speed extension allocators, covered below. Thus, all
- allocation and deallocation depends on the base class.
- </p><p>
- The base class that <code class="classname">allocator</code> is derived from
- may not be user-configurable.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id462480"></a>Selecting Default Allocation Policy</h4></div></div></div><p>
- It's difficult to pick an allocation strategy that will provide
- maximum utility, without excessively penalizing some behavior. In
- fact, it's difficult just deciding which typical actions to measure
- for speed.
- </p><p>
- Three synthetic benchmarks have been created that provide data
- that is used to compare different C++ allocators. These tests are:
- </p><div class="orderedlist"><ol type="1"><li><p>
- Insertion.
- </p><p>
- Over multiple iterations, various STL container
- objects have elements inserted to some maximum amount. A variety
- of allocators are tested.
- Test source for <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup" target="_top">sequence</a>
- and <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup" target="_top">associative</a>
- containers.
- </p></li><li><p>
- Insertion and erasure in a multi-threaded environment.
- </p><p>
- This test shows the ability of the allocator to reclaim memory
- on a pre-thread basis, as well as measuring thread contention
- for memory resources.
- Test source
- <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup" target="_top">here</a>.
- </p></li><li><p>
- A threaded producer/consumer model.
- </p><p>
- Test source for
- <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup" target="_top">sequence</a>
- and
- <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup" target="_top">associative</a>
- containers.
- </p></li></ol></div><p>
- The current default choice for
- <code class="classname">allocator</code> is
- <code class="classname">__gnu_cxx::new_allocator</code>.
- </p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id531789"></a>Disabling Memory Caching</h4></div></div></div><p>
- In use, <code class="classname">allocator</code> may allocate and
- deallocate using implementation-specified strategies and
- heuristics. Because of this, every call to an allocator object's
- <code class="function">allocate</code> member function may not actually
- call the global operator new. This situation is also duplicated
- for calls to the <code class="function">deallocate</code> member
- function.
- </p><p>
- This can be confusing.
- </p><p>
- In particular, this can make debugging memory errors more
- difficult, especially when using third party tools like valgrind or
- debug versions of <code class="function">new</code>.
- </p><p>
- There are various ways to solve this problem. One would be to use
- a custom allocator that just called operators
- <code class="function">new</code> and <code class="function">delete</code>
- directly, for every allocation. (See
- <code class="filename">include/ext/new_allocator.h</code>, for instance.)
- However, that option would involve changing source code to use
- a non-default allocator. Another option is to force the
- default allocator to remove caching and pools, and to directly
- allocate with every call of <code class="function">allocate</code> and
- directly deallocate with every call of
- <code class="function">deallocate</code>, regardless of efficiency. As it
- turns out, this last option is also available.
- </p><p>
- To globally disable memory caching within the library for the
- default allocator, merely set
- <code class="constant">GLIBCXX_FORCE_NEW</code> (with any value) in the
- 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
- cached allocations...).
- </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.using"></a>Using a Specific Allocator</h3></div></div></div><p>
- You can specify different memory management schemes on a
- per-container basis, by overriding the default
- <span class="type">Allocator</span> template parameter. For example, an easy
- (but non-portable) method of specifying that only <code class="function">malloc</code> or <code class="function">free</code>
- should be used instead of the default node allocator is:
- </p><pre class="programlisting">
- std::list &lt;int, __gnu_cxx::malloc_allocator&lt;int&gt; &gt; malloc_list;</pre><p>
- Likewise, a debugging form of whichever allocator is currently in use:
- </p><pre class="programlisting">
- std::deque &lt;int, __gnu_cxx::debug_allocator&lt;std::allocator&lt;int&gt; &gt; &gt; debug_deque;
- </pre></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.custom"></a>Custom Allocators</h3></div></div></div><p>
- Writing a portable C++ allocator would dictate that the interface
- would look much like the one specified for
- <code class="classname">allocator</code>. Additional member functions, but
- not subtractions, would be permissible.
- </p><p>
- Probably the best place to start would be to copy one of the
- extension allocators: say a simple one like
- <code class="classname">new_allocator</code>.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.ext"></a>Extension Allocators</h3></div></div></div><p>
- Several other allocators are provided as part of this
- implementation. The location of the extension allocators and their
- names have changed, but in all cases, functionality is
- equivalent. Starting with gcc-3.4, all extension allocators are
- standard style. Before this point, SGI style was the norm. Because of
- this, the number of template arguments also changed. Here's a simple
- chart to track the changes.
- </p><p>
- More details on each of these extension allocators follows.
- </p><div class="orderedlist"><ol type="1"><li><p>
- <code class="classname">new_allocator</code>
- </p><p>
- Simply wraps <code class="function">::operator new</code>
- and <code class="function">::operator delete</code>.
- </p></li><li><p>
- <code class="classname">malloc_allocator</code>
- </p><p>
- Simply wraps <code class="function">malloc</code> and
- <code class="function">free</code>. There is also a hook for an
- out-of-memory handler (for
- <code class="function">new</code>/<code class="function">delete</code> this is
- taken care of elsewhere).
- </p></li><li><p>
- <code class="classname">array_allocator</code>
- </p><p>
- Allows allocations of known and fixed sizes using existing
- global or external storage allocated via construction of
- <code class="classname">std::tr1::array</code> objects. By using this
- allocator, fixed size containers (including
- <code class="classname">std::string</code>) can be used without
- instances calling <code class="function">::operator new</code> and
- <code class="function">::operator delete</code>. This capability
- allows the use of STL abstractions without runtime
- complications or overhead, even in situations such as program
- startup. For usage examples, please consult the testsuite.
- </p></li><li><p>
- <code class="classname">debug_allocator</code>
- </p><p>
- A wrapper around an arbitrary allocator A. It passes on
- slightly increased size requests to A, and uses the extra
- memory to store size information. When a pointer is passed
- to <code class="function">deallocate()</code>, the stored size is
- checked, and <code class="function">assert()</code> is used to
- guarantee they match.
- </p></li><li><p>
- <code class="classname">throw_allocator</code>
- </p><p>
- Includes memory tracking and marking abilities as well as hooks for
- throwing exceptions at configurable intervals (including random,
- all, none).
- </p></li><li><p>
- <code class="classname">__pool_alloc</code>
- </p><p>
- A high-performance, single pool allocator. The reusable
- memory is shared among identical instantiations of this type.
- It calls through <code class="function">::operator new</code> to
- obtain new memory when its lists run out. If a client
- container requests a block larger than a certain threshold
- size, then the pool is bypassed, and the allocate/deallocate
- request is passed to <code class="function">::operator new</code>
- directly.
- </p><p>
- Older versions of this class take a boolean template
- parameter, called <code class="varname">thr</code>, and an integer template
- parameter, called <code class="varname">inst</code>.
- </p><p>
- The <code class="varname">inst</code> number is used to track additional memory
- pools. The point of the number is to allow multiple
- instantiations of the classes without changing the semantics at
- all. All three of
- </p><pre class="programlisting">
- typedef __pool_alloc&lt;true,0&gt; normal;
- typedef __pool_alloc&lt;true,1&gt; private;
- typedef __pool_alloc&lt;true,42&gt; also_private;
- </pre><p>
- behave exactly the same way. However, the memory pool for each type
- (and remember that different instantiations result in different types)
- remains separate.
- </p><p>
- The library uses <span class="emphasis"><em>0</em></span> in all its instantiations. If you
- wish to keep separate free lists for a particular purpose, use a
- different number.
- </p><p>The <code class="varname">thr</code> boolean determines whether the
- pool should be manipulated atomically or not. When
- <code class="varname">thr</code> = <code class="constant">true</code>, the allocator
- is is thread-safe, while <code class="varname">thr</code> =
- <code class="constant">false</code>, and is slightly faster but unsafe for
- multiple threads.
- </p><p>
- For thread-enabled configurations, the pool is locked with a
- single big lock. In some situations, this implementation detail
- may result in severe performance degradation.
- </p><p>
- (Note that the GCC thread abstraction layer allows us to provide
- safe zero-overhead stubs for the threading routines, if threads
- were disabled at configuration time.)
- </p></li><li><p>
- <code class="classname">__mt_alloc</code>
- </p><p>
- A high-performance fixed-size allocator with
- exponentially-increasing allocations. It has its own
- documentation, found <a class="link" href="bk01pt12ch32.html#manual.ext.allocator.mt" title="mt_allocator">here</a>.
- </p></li><li><p>
- <code class="classname">bitmap_allocator</code>
- </p><p>
- A high-performance allocator that uses a bit-map to keep track
- of the used and unused memory locations. It has its own
- documentation, found <a class="link" href="bitmap_allocator.html" title="bitmap_allocator">here</a>.
- </p></li></ol></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id505299"></a><p><span class="title"><i>
- ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span>
- isoc++_1998
- <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id465950"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good
- </i>. </span>
- austernm
- <span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername">
- C/C++ Users Journal
- . </span></span><span class="biblioid">
- <a class="ulink" href="http://www.cuj.com/documents/s=8000/cujcexp1812austern/" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id515746"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span>
- emeryb
- <span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="biblioid">
- <a class="ulink" href="http://www.cs.umass.edu/~emery/hoard/" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id507784"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span>
- bergerzorn
- <span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span><span class="biblioid">
- <a class="ulink" href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id467782"></a><p><span class="title"><i>Allocator Types</i>. </span>
- kreftlanger
- <span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername">
- C/C++ Users Journal
- . </span></span><span class="biblioid">
- <a class="ulink" href="http://www.langer.camelot.de/Articles/C++Report/Allocators/Allocators.html" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id470766"></a><p><span class="title"><i>The C++ Programming Language</i>. </span>
- tcpl
- <span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername">
- Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id468765"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span>
- yenf
- <span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span><span class="copyright">Copyright © . </span><span class="biblioid">
- <a class="ulink" href="http://home.earthlink.net/~brimar/yalloc/" target="_top">
- </a>
- . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04ch10.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 10. Pairs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> auto_ptr</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt04ch12.html b/libstdc++-v3/doc/html/manual/bk01pt04ch12.html
deleted file mode 100644
index b771aaf..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt04ch12.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<?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>Chapter 12. Traits</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="strings.html" title="Part V. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">Part IV. Utilities</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.traits"></a>Chapter 12. Traits</h2></div></div></div><p>
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part V. Strings</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt06ch14.html b/libstdc++-v3/doc/html/manual/bk01pt06ch14.html
deleted file mode 100644
index c988682..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt06ch14.html
+++ /dev/null
@@ -1,422 +0,0 @@
-<?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>Chapter 14. Locales</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="localization.html" title="Part VI. Localization" /><link rel="next" href="bk01pt06ch15.html" title="Chapter 15. Facets aka Categories" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Locales</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Part VI. Localization</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt06ch15.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.locales"></a>Chapter 14. Locales</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt06ch14.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch14.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.locales.locale"></a>locale</h2></div></div></div><p>
-Describes the basic locale object, including nested
-classes id, facet, and the reference-counted implementation object,
-class _Impl.
-</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.req"></a>Requirements</h3></div></div></div><p>
-Class locale is non-templatized and has two distinct types nested
-inside of it:
-</p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em>
-class facet
-22.1.1.1.2 Class locale::facet
-</em></span>
-</p></blockquote></div><p>
-Facets actually implement locale functionality. For instance, a facet
-called numpunct is the data objects that can be used to query for the
-thousands separator is in the German locale.
-</p><p>
-Literally, a facet is strictly defined:
-</p><div class="itemizedlist"><ul type="disc"><li><p>
- Containing the following public data member:
- </p><p>
- <code class="code">static locale::id id;</code>
- </p></li><li><p>
- Derived from another facet:
- </p><p>
- <code class="code">class gnu_codecvt: public std::ctype&lt;user-defined-type&gt;</code>
- </p></li></ul></div><p>
-Of interest in this class are the memory management options explicitly
-specified as an argument to facet's constructor. Each constructor of a
-facet class takes a std::size_t __refs argument: if __refs == 0, the
-facet is deleted when the locale containing it is destroyed. If __refs
-== 1, the facet is not destroyed, even when it is no longer
-referenced.
-</p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em>
-class id
-22.1.1.1.3 - Class locale::id
-</em></span>
-</p></blockquote></div><p>
-Provides an index for looking up specific facets.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.design"></a>Design</h3></div></div></div><p>
-The major design challenge is fitting an object-orientated and
-non-global locale design on top of POSIX and other relevant standards,
-which include the Single Unix (nee X/Open.)
-</p><p>
-Because C and earlier versions of POSIX fall down so completely,
-portability is an issue.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="locale.impl.c"></a>Interacting with "C" locales</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
- <code class="code">`locale -a`</code> displays available locales.
- </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting">
-af_ZA
-ar_AE
-ar_AE.utf8
-ar_BH
-ar_BH.utf8
-ar_DZ
-ar_DZ.utf8
-ar_EG
-ar_EG.utf8
-ar_IN
-ar_IQ
-ar_IQ.utf8
-ar_JO
-ar_JO.utf8
-ar_KW
-ar_KW.utf8
-ar_LB
-ar_LB.utf8
-ar_LY
-ar_LY.utf8
-ar_MA
-ar_MA.utf8
-ar_OM
-ar_OM.utf8
-ar_QA
-ar_QA.utf8
-ar_SA
-ar_SA.utf8
-ar_SD
-ar_SD.utf8
-ar_SY
-ar_SY.utf8
-ar_TN
-ar_TN.utf8
-ar_YE
-ar_YE.utf8
-be_BY
-be_BY.utf8
-bg_BG
-bg_BG.utf8
-br_FR
-bs_BA
-C
-ca_ES
-ca_ES@euro
-ca_ES.utf8
-ca_ES.utf8@euro
-cs_CZ
-cs_CZ.utf8
-cy_GB
-da_DK
-da_DK.iso885915
-da_DK.utf8
-de_AT
-de_AT@euro
-de_AT.utf8
-de_AT.utf8@euro
-de_BE
-de_BE@euro
-de_BE.utf8
-de_BE.utf8@euro
-de_CH
-de_CH.utf8
-de_DE
-de_DE@euro
-de_DE.utf8
-de_DE.utf8@euro
-de_LU
-de_LU@euro
-de_LU.utf8
-de_LU.utf8@euro
-el_GR
-el_GR.utf8
-en_AU
-en_AU.utf8
-en_BW
-en_BW.utf8
-en_CA
-en_CA.utf8
-en_DK
-en_DK.utf8
-en_GB
-en_GB.iso885915
-en_GB.utf8
-en_HK
-en_HK.utf8
-en_IE
-en_IE@euro
-en_IE.utf8
-en_IE.utf8@euro
-en_IN
-en_NZ
-en_NZ.utf8
-en_PH
-en_PH.utf8
-en_SG
-en_SG.utf8
-en_US
-en_US.iso885915
-en_US.utf8
-en_ZA
-en_ZA.utf8
-en_ZW
-en_ZW.utf8
-es_AR
-es_AR.utf8
-es_BO
-es_BO.utf8
-es_CL
-es_CL.utf8
-es_CO
-es_CO.utf8
-es_CR
-es_CR.utf8
-es_DO
-es_DO.utf8
-es_EC
-es_EC.utf8
-es_ES
-es_ES@euro
-es_ES.utf8
-es_ES.utf8@euro
-es_GT
-es_GT.utf8
-es_HN
-es_HN.utf8
-es_MX
-es_MX.utf8
-es_NI
-es_NI.utf8
-es_PA
-es_PA.utf8
-es_PE
-es_PE.utf8
-es_PR
-es_PR.utf8
-es_PY
-es_PY.utf8
-es_SV
-es_SV.utf8
-es_US
-es_US.utf8
-es_UY
-es_UY.utf8
-es_VE
-es_VE.utf8
-et_EE
-et_EE.utf8
-eu_ES
-eu_ES@euro
-eu_ES.utf8
-eu_ES.utf8@euro
-fa_IR
-fi_FI
-fi_FI@euro
-fi_FI.utf8
-fi_FI.utf8@euro
-fo_FO
-fo_FO.utf8
-fr_BE
-fr_BE@euro
-fr_BE.utf8
-fr_BE.utf8@euro
-fr_CA
-fr_CA.utf8
-fr_CH
-fr_CH.utf8
-fr_FR
-fr_FR@euro
-fr_FR.utf8
-fr_FR.utf8@euro
-fr_LU
-fr_LU@euro
-fr_LU.utf8
-fr_LU.utf8@euro
-ga_IE
-ga_IE@euro
-ga_IE.utf8
-ga_IE.utf8@euro
-gl_ES
-gl_ES@euro
-gl_ES.utf8
-gl_ES.utf8@euro
-gv_GB
-gv_GB.utf8
-he_IL
-he_IL.utf8
-hi_IN
-hr_HR
-hr_HR.utf8
-hu_HU
-hu_HU.utf8
-id_ID
-id_ID.utf8
-is_IS
-is_IS.utf8
-it_CH
-it_CH.utf8
-it_IT
-it_IT@euro
-it_IT.utf8
-it_IT.utf8@euro
-iw_IL
-iw_IL.utf8
-ja_JP.eucjp
-ja_JP.utf8
-ka_GE
-kl_GL
-kl_GL.utf8
-ko_KR.euckr
-ko_KR.utf8
-kw_GB
-kw_GB.utf8
-lt_LT
-lt_LT.utf8
-lv_LV
-lv_LV.utf8
-mi_NZ
-mk_MK
-mk_MK.utf8
-mr_IN
-ms_MY
-ms_MY.utf8
-mt_MT
-mt_MT.utf8
-nl_BE
-nl_BE@euro
-nl_BE.utf8
-nl_BE.utf8@euro
-nl_NL
-nl_NL@euro
-nl_NL.utf8
-nl_NL.utf8@euro
-nn_NO
-nn_NO.utf8
-no_NO
-no_NO.utf8
-oc_FR
-pl_PL
-pl_PL.utf8
-POSIX
-pt_BR
-pt_BR.utf8
-pt_PT
-pt_PT@euro
-pt_PT.utf8
-pt_PT.utf8@euro
-ro_RO
-ro_RO.utf8
-ru_RU
-ru_RU.koi8r
-ru_RU.utf8
-ru_UA
-ru_UA.utf8
-se_NO
-sk_SK
-sk_SK.utf8
-sl_SI
-sl_SI.utf8
-sq_AL
-sq_AL.utf8
-sr_YU
-sr_YU@cyrillic
-sr_YU.utf8
-sr_YU.utf8@cyrillic
-sv_FI
-sv_FI@euro
-sv_FI.utf8
-sv_FI.utf8@euro
-sv_SE
-sv_SE.iso885915
-sv_SE.utf8
-ta_IN
-te_IN
-tg_TJ
-th_TH
-th_TH.utf8
-tl_PH
-tr_TR
-tr_TR.utf8
-uk_UA
-uk_UA.utf8
-ur_PK
-uz_UZ
-vi_VN
-vi_VN.tcvn
-wa_BE
-wa_BE@euro
-yi_US
-zh_CN
-zh_CN.gb18030
-zh_CN.gbk
-zh_CN.utf8
-zh_HK
-zh_HK.utf8
-zh_TW
-zh_TW.euctw
-zh_TW.utf8
-</pre></blockquote></div></li><li><p>
- <code class="code">`locale`</code> displays environmental variables that
- impact how locale("") will be deduced.
- </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting">
-LANG=en_US
-LC_CTYPE="en_US"
-LC_NUMERIC="en_US"
-LC_TIME="en_US"
-LC_COLLATE="en_US"
-LC_MONETARY="en_US"
-LC_MESSAGES="en_US"
-LC_PAPER="en_US"
-LC_NAME="en_US"
-LC_ADDRESS="en_US"
-LC_TELEPHONE="en_US"
-LC_MEASUREMENT="en_US"
-LC_IDENTIFICATION="en_US"
-LC_ALL=
-</pre></blockquote></div></li></ul></div><p>
-From Josuttis, p. 697-698, which says, that "there is only *one*
-relation (of the C++ locale mechanism) to the C locale mechanism: the
-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
- 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.
-</p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
- Locale initialization: at what point does _S_classic, _S_global
- get initialized? Can named locales assume this initialization
- has already taken place?
- </p></li><li><p>
- Document how named locales error check when filling data
- members. I.e., a fr_FR locale that doesn't have
- numpunct::truename(): does it use "true"? Or is it a blank
- string? What's the convention?
- </p></li><li><p>
- Explain how locale aliasing happens. When does "de_DE" use "de"
- information? What is the rule for locales composed of just an
- ISO language code (say, "de") and locales with both an ISO
- language code and ISO country code (say, "de_DE").
- </p></li><li><p>
- What should non-required facet instantiations do? If the
- generic implementation is provided, then how to end-users
- provide specializations?
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id459942"></a><p><span class="title"><i>
- The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id551010"></a><p><span class="title"><i>
- Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id551039"></a><p><span class="title"><i>
- ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id474312"></a><p><span class="title"><i>
- ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id474331"></a><p><span class="title"><i>
- System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
- </i>. </span><span class="copyright">Copyright © 1999
- The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
- <a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id516648"></a><p><span class="title"><i>
- The C++ Programming Language, Special Edition
- </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
- Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id481148"></a><p><span class="title"><i>
- Standard C++ IOStreams and Locales
- </i>. </span><span class="subtitle">
- Advanced Programmer's Guide and Reference
- . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
- Addison Wesley Longman
- . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt06ch15.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VI. Localization </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 15. Facets aka Categories</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html b/libstdc++-v3/doc/html/manual/bk01pt06ch15.html
deleted file mode 100644
index fdb34a4..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt06ch15.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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>Chapter 15. Facets aka Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="bk01pt06ch14.html" title="Chapter 14. Locales" /><link rel="next" href="codecvt.html" title="codecvt" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Facets aka Categories</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt06ch14.html">Prev</a> </td><th width="60%" align="center">Part VI. Localization</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt06ch15.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt06ch15.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="id461922"></a>Specializations</h4></div></div></div><p>
-For the required specialization codecvt&lt;wchar_t, char, mbstate_t&gt; ,
-conversions are made between the internal character set (always UCS4
-on GNU/Linux) and whatever the currently selected locale for the
-LC_CTYPE category implements.
-</p><p>
-The two required specializations are implemented as follows:
-</p><p>
-<code class="code">
-ctype&lt;char&gt;
-</code>
-</p><p>
-This is simple specialization. Implementing this was a piece of cake.
-</p><p>
-<code class="code">
-ctype&lt;wchar_t&gt;
-</code>
-</p><p>
-This specialization, by specifying all the template parameters, pretty
-much ties the hands of implementors. As such, the implementation is
-straightforward, involving mcsrtombs for the conversions between char
-to wchar_t and wcsrtombs for conversions between wchar_t and char.
-</p><p>
-Neither of these two required specializations deals with Unicode
-characters.
-</p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
- How to deal with the global locale issue?
- </p></li><li><p>
- How to deal with different types than char, wchar_t? </p></li><li><p>
- Overlap between codecvt/ctype: narrow/widen
- </p></li><li><p>
- Mask typedef in codecvt_base, argument types in codecvt. what
- is know about this type?
- </p></li><li><p>
- Why mask* argument in codecvt?
- </p></li><li><p>
- Can this be made (more) generic? is there a simple way to
- straighten out the configure-time mess that is a by-product of
- this class?
- </p></li><li><p>
- Get the ctype&lt;wchar_t&gt;::mask stuff under control. Need to
- make some kind of static table, and not do lookup every time
- somebody hits the do_is... functions. Too bad we can't just
- redefine mask for ctype&lt;wchar_t&gt;
- </p></li><li><p>
- Rename abstract base class. See if just smash-overriding is a
- better approach. Clarify, add sanity to naming.
- </p></li></ul></div></div><div class="bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id477855"></a><p><span class="title"><i>
- The GNU C Library
- </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry"><a id="id462336"></a><p><span class="title"><i>
- Correspondence
- </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry"><a id="id516995"></a><p><span class="title"><i>
- ISO/IEC 14882:1998 Programming languages - C++
- </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry"><a id="id517013"></a><p><span class="title"><i>
- ISO/IEC 9899:1999 Programming languages - C
- </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id535750"></a><p><span class="title"><i>
- System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)
- </i>. </span><span class="copyright">Copyright © 1999
- The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid">
- <a class="ulink" href="http://www.opennc.org/austin/docreg.html" target="_top">
- </a>
- . </span></p></div><div class="biblioentry"><a id="id535776"></a><p><span class="title"><i>
- The C++ Programming Language, Special Edition
- </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername">
- Addison Wesley
- . </span></span></p></div><div class="biblioentry"><a id="id477745"></a><p><span class="title"><i>
- Standard C++ IOStreams and Locales
- </i>. </span><span class="subtitle">
- Advanced Programmer's Guide and Reference
- . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername">
- Addison Wesley Longman
- . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt06ch14.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. Locales </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> codecvt</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch16.html b/libstdc++-v3/doc/html/manual/bk01pt07ch16.html
deleted file mode 100644
index 3d1b251..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch16.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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>Chapter 16. Sequences</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="containers.html" title="Part VII. Containers" /><link rel="next" href="bk01pt07ch16s02.html" title="vector" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Sequences</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch16s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.sequences"></a>Chapter 16. Sequences</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch16.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt07ch16s02.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch16s02.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.list"></a>list</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h3></div></div></div><p>
- Yes it is, and that's okay. This is a decision that we preserved
- when we imported SGI's STL implementation. The following is
- quoted from <a class="ulink" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>:
- </p><div class="blockquote"><blockquote class="blockquote"><p>
- The size() member function, for list and slist, takes time
- proportional to the number of elements in the list. This was a
- deliberate tradeoff. The only way to get a constant-time
- size() for linked lists would be to maintain an extra member
- variable containing the list's size. This would require taking
- extra time to update that variable (it would make splice() a
- linear time operation, for example), and it would also make the
- list larger. Many list algorithms don't require that extra
- word (algorithms that do require it might do better with
- vectors than with lists), and, when it is necessary to maintain
- an explicit size count, it's something that users can do
- themselves.
- </p><p>
- This choice is permitted by the C++ standard. The standard says
- that size() “<span class="quote">should</span>” be constant time, and
- “<span class="quote">should</span>” does not mean the same thing as
- “<span class="quote">shall</span>”. This is the officially recommended ISO
- wording for saying that an implementation is supposed to do
- something unless there is a good reason not to.
- </p><p>
- One implication of linear time size(): you should never write
- </p><pre class="programlisting">
- if (L.size() == 0)
- ...
- </pre><p>
- Instead, you should write
- </p><pre class="programlisting">
- if (L.empty())
- ...
- </pre></blockquote></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch16s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VII. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> vector</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html b/libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html
deleted file mode 100644
index f156155..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch16s02.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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>vector</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt07ch16.html" title="Chapter 16. Sequences" /><link rel="prev" href="bk01pt07ch16.html" title="Chapter 16. Sequences" /><link rel="next" href="bk01pt07ch17.html" title="Chapter 17. Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">vector</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch16.html">Prev</a> </td><th width="60%" align="center">Chapter 16. Sequences</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch17.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.vector"></a>vector</h2></div></div></div><p>
- </p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.vector.management"></a>Space Overhead Management</h3></div></div></div><p>
- In <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html" target="_top">this
- message to the list</a>, Daniel Kostecky announced work on an
- alternate form of <code class="code">std::vector</code> that would support
- hints on the number of elements to be over-allocated. The design
- was also described, along with possible implementation choices.
- </p><p>
- The first two alpha releases were announced <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html" target="_top">here</a>
- and <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html" target="_top">here</a>.
- The releases themselves are available at
- <a class="ulink" href="http://www.kotelna.sk/dk/sw/caphint/" target="_top">
- http://www.kotelna.sk/dk/sw/caphint/</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch16.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt07ch16.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch17.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 16. Sequences </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 17. Associative</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch17.html b/libstdc++-v3/doc/html/manual/bk01pt07ch17.html
deleted file mode 100644
index 53259e1..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch17.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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>Chapter 17. Associative</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="bk01pt07ch16s02.html" title="vector" /><link rel="next" href="bk01pt07ch17s02.html" title="bitset" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch16s02.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch17s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.associative"></a>Chapter 17. Associative</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch17.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bk01pt07ch17s02.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bk01pt07ch17s02.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.insert_hints"></a>Insertion Hints</h2></div></div></div><p>
- Section [23.1.2], Table 69, of the C++ standard lists this
- function for all of the associative containers (map, set, etc):
- </p><pre class="programlisting">
- a.insert(p,t);
- </pre><p>
- where 'p' is an iterator into the container 'a', and 't' is the
- item to insert. The standard says that “<span class="quote"><code class="code">t</code> is
- inserted as close as possible to the position just prior to
- <code class="code">p</code>.</span>” (Library DR #233 addresses this topic,
- referring to <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html" target="_top">N1780</a>.
- Since version 4.2 GCC implements the resolution to DR 233, so
- that insertions happen as close as possible to the hint. For
- earlier releases the hint was only used as described below.
- </p><p>
- Here we'll describe how the hinting works in the libstdc++
- implementation, and what you need to do in order to take
- advantage of it. (Insertions can change from logarithmic
- complexity to amortized constant time, if the hint is properly
- used.) Also, since the current implementation is based on the
- SGI STL one, these points may hold true for other library
- implementations also, since the HP/SGI code is used in a lot of
- places.
- </p><p>
- In the following text, the phrases <span class="emphasis"><em>greater
- than</em></span> and <span class="emphasis"><em>less than</em></span> refer to the
- results of the strict weak ordering imposed on the container by
- its comparison object, which defaults to (basically)
- “<span class="quote">&lt;</span>”. Using those phrases is semantically sloppy,
- but I didn't want to get bogged down in syntax. I assume that if
- you are intelligent enough to use your own comparison objects,
- you are also intelligent enough to assign “<span class="quote">greater</span>”
- and “<span class="quote">lesser</span>” their new meanings in the next
- paragraph. *grin*
- </p><p>
- If the <code class="code">hint</code> parameter ('p' above) is equivalent to:
- </p><div class="itemizedlist"><ul type="disc"><li><p>
- <code class="code">begin()</code>, then the item being inserted should
- have a key less than all the other keys in the container.
- The item will be inserted at the beginning of the container,
- becoming the new entry at <code class="code">begin()</code>.
- </p></li><li><p>
- <code class="code">end()</code>, then the item being inserted should have
- a key greater than all the other keys in the container. The
- item will be inserted at the end of the container, becoming
- the new entry at <code class="code">end()</code>.
- </p></li><li><p>
- neither <code class="code">begin()</code> nor <code class="code">end()</code>, then:
- Let <code class="code">h</code> be the entry in the container pointed to
- by <code class="code">hint</code>, that is, <code class="code">h = *hint</code>. Then
- the item being inserted should have a key less than that of
- <code class="code">h</code>, and greater than that of the item preceding
- <code class="code">h</code>. The new item will be inserted between
- <code class="code">h</code> and <code class="code">h</code>'s predecessor.
- </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">greater than</span>”
- should be replaced by “<span class="quote">not less than</span>”and “<span class="quote">less
- than</span>” should be replaced by “<span class="quote">not greater
- than.</span>” (Why not replace greater with
- greater-than-or-equal-to? You probably could in your head, but
- the mathematicians will tell you that it isn't the same thing.)
- </p><p>
- If the conditions are not met, then the hint is not used, and the
- insertion proceeds as if you had called <code class="code"> a.insert(t)
- </code> instead. (<span class="emphasis"><em>Note </em></span> that GCC releases
- prior to 3.0.2 had a bug in the case with <code class="code">hint ==
- begin()</code> for the <code class="code">map</code> and <code class="code">set</code>
- classes. You should not use a hint argument in those releases.)
- </p><p>
- This behavior goes well with other containers'
- <code class="code">insert()</code> functions which take an iterator: if used,
- the new item will be inserted before the iterator passed as an
- argument, same as the other containers.
- </p><p>
- <span class="emphasis"><em>Note </em></span> also that the hint in this
- implementation is a one-shot. The older insertion-with-hint
- routines check the immediately surrounding entries to ensure that
- the new item would in fact belong there. If the hint does not
- point to the correct place, then no further local searching is
- done; the search begins from scratch in logarithmic time.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch16s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch17s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">vector </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitset</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html b/libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html
deleted file mode 100644
index 1d4e3f9..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch17s02.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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>bitset</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt07ch17.html" title="Chapter 17. Associative" /><link rel="prev" href="bk01pt07ch17.html" title="Chapter 17. Associative" /><link rel="next" href="bk01pt07ch18.html" title="Chapter 18. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitset</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch17.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Associative</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt07ch18.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.bitset"></a>bitset</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.size_variable"></a>Size Variable</h3></div></div></div><p>
- No, you cannot write code of the form
- </p><pre class="programlisting">
- #include &lt;bitset&gt;
-
- void foo (size_t n)
- {
- std::bitset&lt;n&gt; bits;
- ....
- }
- </pre><p>
- because <code class="code">n</code> must be known at compile time. Your
- compiler is correct; it is not a bug. That's the way templates
- work. (Yes, it <span class="emphasis"><em>is</em></span> a feature.)
- </p><p>
- There are a couple of ways to handle this kind of thing. Please
- consider all of them before passing judgement. They include, in
- no particular order:
- </p><div class="itemizedlist"><ul type="disc"><li><p>A very large N in <code class="code">bitset&lt;N&gt;</code>.</p></li><li><p>A container&lt;bool&gt;.</p></li><li><p>Extremely weird solutions.</p></li></ul></div><p>
- <span class="emphasis"><em>A very large N in
- <code class="code">bitset&lt;N&gt;</code>.  </em></span> It has been
- pointed out a few times in newsgroups that N bits only takes up
- (N/8) bytes on most systems, and division by a factor of eight is
- pretty impressive when speaking of memory. Half a megabyte given
- over to a bitset (recall that there is zero space overhead for
- housekeeping info; it is known at compile time exactly how large
- the set is) will hold over four million bits. If you're using
- those bits as status flags (e.g.,
- “<span class="quote">changed</span>”/“<span class="quote">unchanged</span>” flags), that's a
- <span class="emphasis"><em>lot</em></span> of state.
- </p><p>
- You can then keep track of the “<span class="quote">maximum bit used</span>”
- during some testing runs on representative data, make note of how
- many of those bits really need to be there, and then reduce N to
- a smaller number. Leave some extra space, of course. (If you
- plan to write code like the incorrect example above, where the
- bitset is a local variable, then you may have to talk your
- compiler into allowing that much stack space; there may be zero
- space overhead, but it's all allocated inside the object.)
- </p><p>
- <span class="emphasis"><em>A container&lt;bool&gt;.  </em></span> The
- Committee made provision for the space savings possible with that
- (N/8) usage previously mentioned, so that you don't have to do
- wasteful things like <code class="code">Container&lt;char&gt;</code> or
- <code class="code">Container&lt;short int&gt;</code>. Specifically,
- <code class="code">vector&lt;bool&gt;</code> is required to be specialized for
- that space savings.
- </p><p>
- The problem is that <code class="code">vector&lt;bool&gt;</code> doesn't
- behave like a normal vector anymore. There have been recent
- journal articles which discuss the problems (the ones by Herb
- Sutter in the May and July/August 1999 issues of C++ Report cover
- it well). Future revisions of the ISO C++ Standard will change
- the requirement for <code class="code">vector&lt;bool&gt;</code>
- specialization. In the meantime, <code class="code">deque&lt;bool&gt;</code>
- is recommended (although its behavior is sane, you probably will
- not get the space savings, but the allocation scheme is different
- than that of vector).
- </p><p>
- <span class="emphasis"><em>Extremely weird solutions.  </em></span> If
- you have access to the compiler and linker at runtime, you can do
- something insane, like figuring out just how many bits you need,
- then writing a temporary source code file. That file contains an
- instantiation of <code class="code">bitset</code> for the required number of
- bits, inside some wrapper functions with unchanging signatures.
- Have your program then call the compiler on that file using
- Position Independent Code, then open the newly-created object
- file and load those wrapper functions. You'll have an
- instantiation of <code class="code">bitset&lt;N&gt;</code> for the exact
- <code class="code">N</code> that you need at the time. Don't forget to delete
- the temporary files. (Yes, this <span class="emphasis"><em>can</em></span> be, and
- <span class="emphasis"><em>has been</em></span>, done.)
- </p><p>
- This would be the approach of either a visionary genius or a
- raving lunatic, depending on your programming and management
- style. Probably the latter.
- </p><p>
- Which of the above techniques you use, if any, are up to you and
- your intended application. Some time/space profiling is
- indicated if it really matters (don't just guess). And, if you
- manage to do anything along the lines of the third category, the
- author would love to hear from you...
- </p><p>
- Also note that the implementation of bitset used in libstdc++ has
- <a class="ulink" href="../ext/sgiexts.html#ch23" target="_top">some extensions</a>.
- </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.type_string"></a>Type String</h3></div></div></div><p>
- </p><p>
- Bitmasks do not take char* nor const char* arguments in their
- constructors. This is something of an accident, but you can read
- about the problem: follow the library's “<span class="quote">Links</span>” from
- the homepage, and from the C++ information “<span class="quote">defect
- reflector</span>” link, select the library issues list. Issue
- number 116 describes the problem.
- </p><p>
- For now you can simply make a temporary string object using the
- constructor expression:
- </p><pre class="programlisting">
- std::bitset&lt;5&gt; b ( std::string(“<span class="quote">10110</span>”) );
- </pre><p>
- instead of
- </p><pre class="programlisting">
- std::bitset&lt;5&gt; b ( “<span class="quote">10110</span>” ); // invalid
- </pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch17.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt07ch17.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt07ch18.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Associative </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 18. Interacting with C</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt07ch18.html b/libstdc++-v3/doc/html/manual/bk01pt07ch18.html
deleted file mode 100644
index af7bb75..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt07ch18.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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>Chapter 18. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="bk01pt07ch17s02.html" title="bitset" /><link rel="next" href="iterators.html" title="Part VIII. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><th width="60%" align="center">Part VII. Containers</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.c"></a>Chapter 18. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt07ch18.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h2></div></div></div><p>
- You're writing some code and can't decide whether to use builtin
- arrays or some kind of container. There are compelling reasons
- to use one of the container classes, but you're afraid that
- you'll eventually run into difficulties, change everything back
- to arrays, and then have to change all the code that uses those
- data types to keep up with the change.
- </p><p>
- If your code makes use of the standard algorithms, this isn't as
- scary as it sounds. The algorithms don't know, nor care, about
- the kind of “<span class="quote">container</span>” on which they work, since
- the algorithms are only given endpoints to work with. For the
- container classes, these are iterators (usually
- <code class="code">begin()</code> and <code class="code">end()</code>, but not always).
- For builtin arrays, these are the address of the first element
- and the <a class="ulink" href="../24_iterators/howto.html#2" target="_top">past-the-end</a> element.
- </p><p>
- Some very simple wrapper functions can hide all of that from the
- rest of the code. For example, a pair of functions called
- <code class="code">beginof</code> can be written, one that takes an array,
- another that takes a vector. The first returns a pointer to the
- first element, and the second returns the vector's
- <code class="code">begin()</code> iterator.
- </p><p>
- The functions should be made template functions, and should also
- be declared inline. As pointed out in the comments in the code
- below, this can lead to <code class="code">beginof</code> being optimized out
- of existence, so you pay absolutely nothing in terms of increased
- code size or execution time.
- </p><p>
- The result is that if all your algorithm calls look like
- </p><pre class="programlisting">
- std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
- </pre><p>
- then the type of foo can change from an array of ints to a vector
- of ints to a deque of ints and back again, without ever changing
- any client code.
- </p><p>
- This author has a collection of such functions, called
- “<span class="quote">*of</span>” because they all extend the builtin
- “<span class="quote">sizeof</span>”. It started with some Usenet discussions
- on a transparent way to find the length of an array. A
- simplified and much-reduced version for easier reading is <a class="ulink" href="wrappers_h.txt" target="_top">given here</a>.
- </p><p>
- Astute readers will notice two things at once: first, that the
- container class is still a <code class="code">vector&lt;T&gt;</code> instead
- of a more general <code class="code">Container&lt;T&gt;</code>. This would
- mean that three functions for <code class="code">deque</code> would have to be
- added, another three for <code class="code">list</code>, and so on. This is
- due to problems with getting template resolution correct; I find
- it easier just to give the extra three lines and avoid confusion.
- </p><p>
- Second, the line
- </p><pre class="programlisting">
- inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
- </pre><p>
- looks just weird! Hint: unused parameters can be left nameless.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt07ch17s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VIII. Iterators</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch21.html b/libstdc++-v3/doc/html/manual/bk01pt10ch21.html
deleted file mode 100644
index f1c8205..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch21.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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>Chapter 21. Complex</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="numerics.html" title="Part X. Numerics" /><link rel="next" href="bk01pt10ch22.html" title="Chapter 22. Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Complex</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch22.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.complex"></a>Chapter 21. Complex</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt10ch21.html#numerics.complex.processing">complex Processing</a></span></dt></dl></div><p>
- </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.complex.processing"></a>complex Processing</h2></div></div></div><p>
- </p><p>Using <code class="code">complex&lt;&gt;</code> becomes even more comple- er, sorry,
- <span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible
- addition of complex types to the C language. David Tribble has
- compiled a list of C++98 and C99 conflict points; his description of
- C's new type versus those of C++ and how to get them playing together
- nicely is
-<a class="ulink" href="http://david.tribble.com/text/cdiffs.htm#C99-complex" target="_top">here</a>.
- </p><p><code class="code">complex&lt;&gt;</code> is intended to be instantiated with a
- floating-point type. As long as you meet that and some other basic
- requirements, then the resulting instantiation has all of the usual
- math operators defined, as well as definitions of <code class="code">op&lt;&lt;</code>
- and <code class="code">op&gt;&gt;</code> that work with iostreams: <code class="code">op&lt;&lt;</code>
- prints <code class="code">(u,v)</code> and <code class="code">op&gt;&gt;</code> can read <code class="code">u</code>,
- <code class="code">(u)</code>, and <code class="code">(u,v)</code>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch22.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part X. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 22. Generalized Operations</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch22.html b/libstdc++-v3/doc/html/manual/bk01pt10ch22.html
deleted file mode 100644
index a278ecc..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch22.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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>Chapter 22. Generalized Operations</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="bk01pt10ch21.html" title="Chapter 21. Complex" /><link rel="next" href="bk01pt10ch23.html" title="Chapter 23. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch21.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.generalized_ops"></a>Chapter 22. Generalized Operations</h2></div></div></div><p>
- </p><p>There are four generalized functions in the &lt;numeric&gt; header
- that follow the same conventions as those in &lt;algorithm&gt;. Each
- of them is overloaded: one signature for common default operations,
- and a second for fully general operations. Their names are
- self-explanatory to anyone who works with numerics on a regular basis:
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">accumulate</code></p></li><li><p><code class="code">inner_product</code></p></li><li><p><code class="code">partial_sum</code></p></li><li><p><code class="code">adjacent_difference</code></p></li></ul></div><p>Here is a simple example of the two forms of <code class="code">accumulate</code>.
- </p><pre class="programlisting">
- int ar[50];
- int someval = somefunction();
-
- // ...initialize members of ar to something...
-
- int sum = std::accumulate(ar,ar+50,0);
- int sum_stuff = std::accumulate(ar,ar+50,someval);
- int product = std::accumulate(ar,ar+50,1,std::multiplies&lt;int&gt;());
- </pre><p>The first call adds all the members of the array, using zero as an
- initial value for <code class="code">sum</code>. The second does the same, but uses
- <code class="code">someval</code> as the starting value (thus, <code class="code">sum_stuff == sum +
- someval</code>). The final call uses the second of the two signatures,
- and multiplies all the members of the array; here we must obviously
- use 1 as a starting value instead of 0.
- </p><p>The other three functions have similar dual-signature forms.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch21.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Complex </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Interacting with C</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch23.html b/libstdc++-v3/doc/html/manual/bk01pt10ch23.html
deleted file mode 100644
index a3902b3..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt10ch23.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<?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>Chapter 23. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="bk01pt10ch22.html" title="Chapter 22. Generalized Operations" /><link rel="next" href="bk01pt10ch23s02.html" title="C99" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch22.html">Prev</a> </td><th width="60%" align="center">Part X. Numerics</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.c"></a>Chapter 23. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt10ch23.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.array"></a>Numerics vs. Arrays</h2></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well
- is that it is defined to be free of pointer aliasing, an assumption
- that C89 is not allowed to make, and neither is C++98. C99 adds a new
- keyword, <code class="code">restrict</code>, to apply to individual pointers. The
- C++ solution is contained in the library rather than the language
- (although many vendors can be expected to add this to their compilers
- as an extension).
- </p><p>That library solution is a set of two classes, five template classes,
- and "a whole bunch" of functions. The classes are required
- to be free of pointer aliasing, so compilers can optimize the
- daylights out of them the same way that they have been for FORTRAN.
- They are collectively called <code class="code">valarray</code>, although strictly
- speaking this is only one of the five template classes, and they are
- designed to be familiar to people who have worked with the BLAS
- libraries before.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch22.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 22. Generalized Operations </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> C99</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch24.html b/libstdc++-v3/doc/html/manual/bk01pt11ch24.html
deleted file mode 100644
index 1c8976e..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch24.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<?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>Chapter 24. Iostream Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="io.html" title="Part XI. Input and Output" /><link rel="next" href="bk01pt11ch25.html" title="Chapter 25. Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Iostream Objects</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.objects"></a>Chapter 24. Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to
- only include the headers you really need. Many people simply include
- &lt;iostream&gt; when they don't need to -- and that can <span class="emphasis"><em>penalize
- your runtime as well.</em></span> Here are some tips on which header to use
- for which situations, starting with the simplest.
- </p><p><span class="emphasis"><em>&lt;iosfwd&gt;</em></span> should be included whenever you simply
- need the <span class="emphasis"><em>name</em></span> of an I/O-related class, such as
- "ofstream" or "basic_streambuf". Like the name
- implies, these are forward declarations. (A word to all you fellow
- old school programmers: trying to forward declare classes like
- "class istream;" won't work. Look in the iosfwd header if
- you'd like to know why.) For example,
- </p><pre class="programlisting">
- #include &lt;iosfwd&gt;
-
- class MyClass
- {
- ....
- std::ifstream&amp; input_file;
- };
-
- extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
- </pre><p><span class="emphasis"><em>&lt;ios&gt;</em></span> declares the base classes for the entire
- I/O stream hierarchy, std::ios_base and std::basic_ios&lt;charT&gt;, the
- counting types std::streamoff and std::streamsize, the file
- positioning type std::fpos, and the various manipulators like
- std::hex, std::fixed, std::noshowbase, and so forth.
- </p><p>The ios_base class is what holds the format flags, the state flags,
- and the functions which change them (setf(), width(), precision(),
- etc). You can also store extra data and register callback functions
- through ios_base, but that has been historically underused. Anything
- which doesn't depend on the type of characters stored is consolidated
- here.
- </p><p>The template class basic_ios is the highest template class in the
- hierarchy; it is the first one depending on the character type, and
- holds all general state associated with that type: the pointer to the
- polymorphic stream buffer, the facet information, etc.
- </p><p><span class="emphasis"><em>&lt;streambuf&gt;</em></span> declares the template class
- basic_streambuf, and two standard instantiations, streambuf and
- wstreambuf. If you need to work with the vastly useful and capable
- stream buffer classes, e.g., to create a new form of storage
- transport, this header is the one to include.
- </p><p><span class="emphasis"><em>&lt;istream&gt;</em></span>/<span class="emphasis"><em>&lt;ostream&gt;</em></span> are
- the headers to include when you are using the &gt;&gt;/&lt;&lt;
- interface, or any of the other abstract stream formatting functions.
- For example,
- </p><pre class="programlisting">
- #include &lt;istream&gt;
-
- std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, MyClass&amp; c)
- {
- return os &lt;&lt; c.data1() &lt;&lt; c.data2();
- }
- </pre><p>The std::istream and std::ostream classes are the abstract parents of
- the various concrete implementations. If you are only using the
- interfaces, then you only need to use the appropriate interface header.
- </p><p><span class="emphasis"><em>&lt;iomanip&gt;</em></span> provides "extractors and inserters
- that alter information maintained by class ios_base and its derived
- classes," such as std::setprecision and std::setw. If you need
- to write expressions like <code class="code">os &lt;&lt; setw(3);</code> or
- <code class="code">is &gt;&gt; setbase(8);</code>, you must include &lt;iomanip&gt;.
- </p><p><span class="emphasis"><em>&lt;sstream&gt;</em></span>/<span class="emphasis"><em>&lt;fstream&gt;</em></span>
- declare the six stringstream and fstream classes. As they are the
- standard concrete descendants of istream and ostream, you will already
- know about them.
- </p><p>Finally, <span class="emphasis"><em>&lt;iostream&gt;</em></span> provides the eight standard
- global objects (cin, cout, etc). To do this correctly, this header
- also provides the contents of the &lt;istream&gt; and &lt;ostream&gt;
- headers, but nothing else. The contents of this header look like
- </p><pre class="programlisting">
- #include &lt;ostream&gt;
- #include &lt;istream&gt;
-
- namespace std
- {
- extern istream cin;
- extern ostream cout;
- ....
-
- // this is explained below
- <span class="emphasis"><em>static ios_base::Init __foo;</em></span> // not its real name
- }
- </pre><p>Now, the runtime penalty mentioned previously: the global objects
- must be initialized before any of your own code uses them; this is
- guaranteed by the standard. Like any other global object, they must
- be initialized once and only once. This is typically done with a
- construct like the one above, and the nested class ios_base::Init is
- specified in the standard for just this reason.
- </p><p>How does it work? Because the header is included before any of your
- code, the <span class="emphasis"><em>__foo</em></span> object is constructed before any of
- your objects. (Global objects are built in the order in which they
- are declared, and destroyed in reverse order.) The first time the
- constructor runs, the eight stream objects are set up.
- </p><p>The <code class="code">static</code> keyword means that each object file compiled
- from a source file containing &lt;iostream&gt; will have its own
- private copy of <span class="emphasis"><em>__foo</em></span>. There is no specified order
- of construction across object files (it's one of those pesky NP
- problems that make life so interesting), so one copy in each object
- file means that the stream objects are guaranteed to be set up before
- any of your code which uses them could run, thereby meeting the
- requirements of the standard.
- </p><p>The penalty, of course, is that after the first copy of
- <span class="emphasis"><em>__foo</em></span> is constructed, all the others are just wasted
- processor time. The time spent is merely for an increment-and-test
- inside a function call, but over several dozen or hundreds of object
- files, that time can add up. (It's not in a tight loop, either.)
- </p><p>The lesson? Only include &lt;iostream&gt; when you need to use one of
- the standard objects in that source file; you'll pay less startup
- time. Only include the header files you need to in general; your
- compile times will go down when there's less parsing work to do.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XI. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 25. Stream Buffers</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch25.html b/libstdc++-v3/doc/html/manual/bk01pt11ch25.html
deleted file mode 100644
index a3bbfde..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch25.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<?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>Chapter 25. Stream Buffers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch24.html" title="Chapter 24. Iostream Objects" /><link rel="next" href="bk01pt11ch25s02.html" title="Buffering" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch24.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.streambufs"></a>Chapter 25. Stream Buffers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch25.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h2></div></div></div><p>
- </p><p>Creating your own stream buffers for I/O can be remarkably easy.
- If you are interested in doing so, we highly recommend two very
- excellent books:
- <a class="ulink" href="http://www.langer.camelot.de/iostreams.html" target="_top">Standard C++
- IOStreams and Locales</a> by Langer and Kreft, ISBN 0-201-18395-1, and
- <a class="ulink" href="http://www.josuttis.com/libbook/" target="_top">The C++ Standard Library</a>
- by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by
- Addison-Wesley, who isn't paying us a cent for saying that, honest.
- </p><p>Here is a simple example, io/outbuf1, from the Josuttis text. It
- transforms everything sent through it to uppercase. This version
- assumes many things about the nature of the character type being
- used (for more information, read the books or the newsgroups):
- </p><pre class="programlisting">
- #include &lt;iostream&gt;
- #include &lt;streambuf&gt;
- #include &lt;locale&gt;
- #include &lt;cstdio&gt;
-
- class outbuf : public std::streambuf
- {
- protected:
- /* central output function
- * - print characters in uppercase mode
- */
- virtual int_type overflow (int_type c) {
- if (c != EOF) {
- // convert lowercase to uppercase
- c = std::toupper(static_cast&lt;char&gt;(c),getloc());
-
- // and write the character to the standard output
- if (putchar(c) == EOF) {
- return EOF;
- }
- }
- return c;
- }
- };
-
- int main()
- {
- // create special output buffer
- outbuf ob;
- // initialize output stream with that output buffer
- std::ostream out(&amp;ob);
-
- out &lt;&lt; "31 hexadecimal: "
- &lt;&lt; std::hex &lt;&lt; 31 &lt;&lt; std::endl;
- return 0;
- }
- </pre><p>Try it yourself! More examples can be found in 3.1.x code, in
- <code class="code">include/ext/*_filebuf.h</code>, and on
- <a class="ulink" href="http://www.informatik.uni-konstanz.de/~kuehl/c++/iostream/" target="_top">Dietmar
- Kühl's IOStreams page</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch24.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 24. Iostream Objects </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Buffering</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch26.html b/libstdc++-v3/doc/html/manual/bk01pt11ch26.html
deleted file mode 100644
index 23c5189..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch26.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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>Chapter 26. Memory Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch25s02.html" title="Buffering" /><link rel="next" href="bk01pt11ch27.html" title="Chapter 27. File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.memstreams"></a>Chapter 26. Memory Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch26.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.memstreams.compat"></a>Compatibility With strstream</h2></div></div></div><p>
- </p><p>Stringstreams (defined in the header <code class="code">&lt;sstream&gt;</code>)
- are in this author's opinion one of the coolest things since
- sliced time. An example of their use is in the Received Wisdom
- section for Chapter 21 (Strings),
- <a class="ulink" href="../21_strings/howto.html#1.1internal" target="_top"> describing how to
- format strings</a>.
- </p><p>The quick definition is: they are siblings of ifstream and ofstream,
- and they do for <code class="code">std::string</code> what their siblings do for
- files. All that work you put into writing <code class="code">&lt;&lt;</code> and
- <code class="code">&gt;&gt;</code> functions for your classes now pays off
- <span class="emphasis"><em>again!</em></span> Need to format a string before passing the string
- to a function? Send your stuff via <code class="code">&lt;&lt;</code> to an
- ostringstream. You've read a string as input and need to parse it?
- Initialize an istringstream with that string, and then pull pieces
- out of it with <code class="code">&gt;&gt;</code>. Have a stringstream and need to
- get a copy of the string inside? Just call the <code class="code">str()</code>
- member function.
- </p><p>This only works if you've written your
- <code class="code">&lt;&lt;</code>/<code class="code">&gt;&gt;</code> functions correctly, though,
- and correctly means that they take istreams and ostreams as
- parameters, not i<span class="emphasis"><em>f</em></span>streams and o<span class="emphasis"><em>f</em></span>streams. If they
- take the latter, then your I/O operators will work fine with
- file streams, but with nothing else -- including stringstreams.
- </p><p>If you are a user of the strstream classes, you need to update
- your code. You don't have to explicitly append <code class="code">ends</code> to
- terminate the C-style character array, you don't have to mess with
- "freezing" functions, and you don't have to manage the
- memory yourself. The strstreams have been officially deprecated,
- which means that 1) future revisions of the C++ Standard won't
- support them, and 2) if you use them, people will laugh at you.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Buffering </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 27. File Based Streams</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27.html b/libstdc++-v3/doc/html/manual/bk01pt11ch27.html
deleted file mode 100644
index ac7cf9e..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch27.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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>Chapter 27. File Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch26.html" title="Chapter 26. Memory Based Streams" /><link rel="next" href="bk01pt11ch27s02.html" title="Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch26.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.filestreams"></a>Chapter 27. File Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch27.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s03.html">More Binary Input and Output</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.copying_a_file"></a>Copying a File</h2></div></div></div><p>
- </p><p>So you want to copy a file quickly and easily, and most important,
- completely portably. And since this is C++, you have an open
- ifstream (call it IN) and an open ofstream (call it OUT):
- </p><pre class="programlisting">
- #include &lt;fstream&gt;
-
- std::ifstream IN ("input_file");
- std::ofstream OUT ("output_file"); </pre><p>Here's the easiest way to get it completely wrong:
- </p><pre class="programlisting">
- OUT &lt;&lt; IN;</pre><p>For those of you who don't already know why this doesn't work
- (probably from having done it before), I invite you to quickly
- create a simple text file called "input_file" containing
- the sentence
- </p><pre class="programlisting">
- The quick brown fox jumped over the lazy dog.</pre><p>surrounded by blank lines. Code it up and try it. The contents
- of "output_file" may surprise you.
- </p><p>Seriously, go do it. Get surprised, then come back. It's worth it.
- </p><p>The thing to remember is that the <code class="code">basic_[io]stream</code> classes
- handle formatting, nothing else. In particular, they break up on
- whitespace. The actual reading, writing, and storing of data is
- handled by the <code class="code">basic_streambuf</code> family. Fortunately, the
- <code class="code">operator&lt;&lt;</code> is overloaded to take an ostream and
- a pointer-to-streambuf, in order to help with just this kind of
- "dump the data verbatim" situation.
- </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 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:
- </p><pre class="programlisting">
- OUT &lt;&lt; IN.rdbuf();</pre><p>So what <span class="emphasis"><em>was</em></span> happening with OUT&lt;&lt;IN? Undefined
- behavior, since that particular &lt;&lt; isn't defined by the Standard.
- I have seen instances where it is implemented, but the character
- extraction process removes all the whitespace, leaving you with no
- blank lines and only "Thequickbrownfox...". With
- libraries that do not define that operator, IN (or one of IN's
- member pointers) sometimes gets converted to a void*, and the output
- file then contains a perfect text representation of a hexadecimal
- address (quite a big surprise). Others don't compile at all.
- </p><p>Also note that none of this is specific to o<span class="emphasis"><em>*f*</em></span>streams.
- The operators shown above are all defined in the parent
- basic_ostream class and are therefore available with all possible
- descendants.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch26.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 26. Memory Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Binary Input and Output</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch28.html b/libstdc++-v3/doc/html/manual/bk01pt11ch28.html
deleted file mode 100644
index 8745a39..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt11ch28.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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>Chapter 28. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch27s03.html" title="More Binary Input and Output" /><link rel="next" href="bk01pt11ch28s02.html" title="Performance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s03.html">Prev</a> </td><th width="60%" align="center">Part XI. Input and Output</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.c"></a>Chapter 28. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt11ch28.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.FILE"></a>Using FILE* and file descriptors</h2></div></div></div><p>
- See the <a class="link" href="bk01pt12ch38.html" title="Chapter 38. Input and Output">extensions</a> for using
- <span class="type">FILE</span> and <span class="type">file descriptors</span> with
- <code class="classname">ofstream</code> and
- <code class="classname">ifstream</code>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch27s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">More Binary Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Performance</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch29.html b/libstdc++-v3/doc/html/manual/bk01pt12ch29.html
deleted file mode 100644
index 6766b33..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch29.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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>Chapter 29. Compile Time Checks</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12pr03.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 30. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 29. Compile Time Checks</h2></div></div></div><p>
- Also known as concept checking.
- </p><p>In 1999, SGI added <span class="emphasis"><em>concept checkers</em></span> to their implementation
- of the STL: code which checked the template parameters of
- instantiated pieces of the STL, in order to insure that the parameters
- being used met the requirements of the standard. For example,
- the Standard requires that types passed as template parameters to
- <code class="code">vector</code> be “<span class="quote">Assignable</span>” (which means what you think
- it means). The checking was done during compilation, and none of
- the code was executed at runtime.
- </p><p>Unfortunately, the size of the compiler files grew significantly
- as a result. The checking code itself was cumbersome. And bugs
- were found in it on more than one occasion.
- </p><p>The primary author of the checking code, Jeremy Siek, had already
- started work on a replacement implementation. The new code has been
- formally reviewed and accepted into
- <a class="ulink" href="http://www.boost.org/libs/concept_check/concept_check.htm" target="_top">the
- Boost libraries</a>, and we are pleased to incorporate it into the
- GNU C++ library.
- </p><p>The new version imposes a much smaller space overhead on the generated
- object file. The checks are also cleaner and easier to read and
- understand.
- </p><p>They are off by default for all versions of GCC from 3.0 to 3.4 (the
- latest release at the time of writing).
- They can be enabled at configure time with
- <a class="ulink" href="../configopts.html" target="_top"><code class="literal">--enable-concept-checks</code></a>.
- You can enable them on a per-translation-unit basis with
- <code class="code">#define _GLIBCXX_CONCEPT_CHECKS</code> for GCC 3.4 and higher
- (or with <code class="code">#define _GLIBCPP_CONCEPT_CHECKS</code> for versions
- 3.1, 3.2 and 3.3).
- </p><p>Please note that the upcoming C++ standard has first-class
- support for template parameter constraints based on concepts in the core
- language. This will obviate the need for the library-simulated concept
- checking described above.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 30. Debug Mode</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32.html b/libstdc++-v3/doc/html/manual/bk01pt12ch32.html
deleted file mode 100644
index ddc6e70..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch32.html
+++ /dev/null
@@ -1,394 +0,0 @@
-<?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>Chapter 32. Allocators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bitmap_allocator.html" title="bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Allocators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"></a>Chapter 32. Allocators</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch32.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.mt"></a>mt_allocator</h2></div></div></div><p>
-</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.intro"></a>Intro</h3></div></div></div><p>
- The mt allocator [hereinafter referred to simply as "the allocator"]
- is a fixed size (power of two) allocator that was initially
- developed specifically to suit the needs of multi threaded
- applications [hereinafter referred to as an MT application]. Over
- time the allocator has evolved and been improved in many ways, in
- particular it now also does a good job in single threaded
- applications [hereinafter referred to as a ST application]. (Note:
- In this document, when referring to single threaded applications
- this also includes applications that are compiled with gcc without
- thread support enabled. This is accomplished using ifdef's on
- __GTHREADS). This allocator is tunable, very flexible, and capable
- of high-performance.
-</p><p>
- The aim of this document is to describe - from an application point of
- view - the "inner workings" of the allocator.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.design_issues"></a>Design Issues</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.mt.overview"></a>Overview</h4></div></div></div><p> There are three general components to the allocator: a datum
-describing the characteristics of the memory pool, a policy class
-containing this pool that links instantiation types to common or
-individual pools, and a class inheriting from the policy class that is
-the actual allocator.
-</p><p>The datum describing pools characteristics is
-</p><pre class="programlisting">
- template&lt;bool _Thread&gt;
- class __pool
-</pre><p> This class is parametrized on thread support, and is explicitly
-specialized for both multiple threads (with <code class="code">bool==true</code>)
-and single threads (via <code class="code">bool==false</code>.) It is possible to
-use a custom pool datum instead of the default class that is provided.
-</p><p> There are two distinct policy classes, each of which can be used
-with either type of underlying pool datum.
-</p><pre class="programlisting">
- template&lt;bool _Thread&gt;
- struct __common_pool_policy
-
- template&lt;typename _Tp, bool _Thread&gt;
- struct __per_type_pool_policy
-</pre><p> The first policy, <code class="code">__common_pool_policy</code>, implements a
-common pool. This means that allocators that are instantiated with
-different types, say <code class="code">char</code> and <code class="code">long</code> will both
-use the same pool. This is the default policy.
-</p><p> The second policy, <code class="code">__per_type_pool_policy</code>, implements
-a separate pool for each instantiating type. Thus, <code class="code">char</code>
-and <code class="code">long</code> will use separate pools. This allows per-type
-tuning, for instance.
-</p><p> Putting this all together, the actual allocator class is
-</p><pre class="programlisting">
- template&lt;typename _Tp, typename _Poolp = __default_policy&gt;
- class __mt_alloc : public __mt_alloc_base&lt;_Tp&gt;, _Poolp
-</pre><p> This class has the interface required for standard library allocator
-classes, namely member functions <code class="code">allocate</code> and
-<code class="code">deallocate</code>, plus others.
-</p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.impl"></a>Implementation</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.mt.tune"></a>Tunable Parameters</h4></div></div></div><p>Certain allocation parameters can be modified, or tuned. There
-exists a nested <code class="code">struct __pool_base::_Tune</code> that contains all
-these parameters, which include settings for
-</p><div class="itemizedlist"><ul type="disc"><li><p>Alignment</p></li><li><p>Maximum bytes before calling <code class="code">::operator new</code> directly</p></li><li><p>Minimum bytes</p></li><li><p>Size of underlying global allocations</p></li><li><p>Maximum number of supported threads</p></li><li><p>Migration of deallocations to the global free list</p></li><li><p>Shunt for global <code class="code">new</code> and <code class="code">delete</code></p></li></ul></div><p>Adjusting parameters for a given instance of an allocator can only
-happen before any allocations take place, when the allocator itself is
-initialized. For instance:
-</p><pre class="programlisting">
-#include &lt;ext/mt_allocator.h&gt;
-
-struct pod
-{
- int i;
- int j;
-};
-
-int main()
-{
- typedef pod value_type;
- typedef __gnu_cxx::__mt_alloc&lt;value_type&gt; allocator_type;
- typedef __gnu_cxx::__pool_base::_Tune tune_type;
-
- tune_type t_default;
- tune_type t_opt(16, 5120, 32, 5120, 20, 10, false);
- tune_type t_single(16, 5120, 32, 5120, 1, 10, false);
-
- tune_type t;
- t = allocator_type::_M_get_options();
- allocator_type::_M_set_options(t_opt);
- t = allocator_type::_M_get_options();
-
- allocator_type a;
- allocator_type::pointer p1 = a.allocate(128);
- allocator_type::pointer p2 = a.allocate(5128);
-
- a.deallocate(p1, 128);
- a.deallocate(p2, 5128);
-
- return 0;
-}
-</pre></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.mt.init"></a>Initialization</h4></div></div></div><p>
-The static variables (pointers to freelists, tuning parameters etc)
-are initialized as above, or are set to the global defaults.
-</p><p>
-The very first allocate() call will always call the
-_S_initialize_once() function. In order to make sure that this
-function is called exactly once we make use of a __gthread_once call
-in MT applications and check a static bool (_S_init) in ST
-applications.
-</p><p>
-The _S_initialize() function:
-- If the GLIBCXX_FORCE_NEW environment variable is set, it sets the bool
- _S_force_new to true and then returns. This will cause subsequent calls to
- allocate() to return memory directly from a new() call, and deallocate will
- only do a delete() call.
-</p><p>
-- If the GLIBCXX_FORCE_NEW environment variable is not set, both ST and MT
- applications will:
- - Calculate the number of bins needed. A bin is a specific power of two size
- of bytes. I.e., by default the allocator will deal with requests of up to
- 128 bytes (or whatever the value of _S_max_bytes is when _S_init() is
- called). This means that there will be bins of the following sizes
- (in bytes): 1, 2, 4, 8, 16, 32, 64, 128.
-
- - Create the _S_binmap array. All requests are rounded up to the next
- "large enough" bin. I.e., a request for 29 bytes will cause a block from
- the "32 byte bin" to be returned to the application. The purpose of
- _S_binmap is to speed up the process of finding out which bin to use.
- I.e., the value of _S_binmap[ 29 ] is initialized to 5 (bin 5 = 32 bytes).
-</p><p>
- - Create the _S_bin array. This array consists of bin_records. There will be
- as many bin_records in this array as the number of bins that we calculated
- earlier. I.e., if _S_max_bytes = 128 there will be 8 entries.
- Each bin_record is then initialized:
- - bin_record-&gt;first = An array of pointers to block_records. There will be
- as many block_records pointers as there are maximum number of threads
- (in a ST application there is only 1 thread, in a MT application there
- are _S_max_threads).
- This holds the pointer to the first free block for each thread in this
- bin. I.e., if we would like to know where the first free block of size 32
- for thread number 3 is we would look this up by: _S_bin[ 5 ].first[ 3 ]
-
- The above created block_record pointers members are now initialized to
- their initial values. I.e. _S_bin[ n ].first[ n ] = NULL;
-</p><p>
-- Additionally a MT application will:
- - Create a list of free thread id's. The pointer to the first entry
- is stored in _S_thread_freelist_first. The reason for this approach is
- that the __gthread_self() call will not return a value that corresponds to
- the maximum number of threads allowed but rather a process id number or
- something else. So what we do is that we create a list of thread_records.
- This list is _S_max_threads long and each entry holds a size_t thread_id
- which is initialized to 1, 2, 3, 4, 5 and so on up to _S_max_threads.
- Each time a thread calls allocate() or deallocate() we call
- _S_get_thread_id() which looks at the value of _S_thread_key which is a
- thread local storage pointer. If this is NULL we know that this is a newly
- created thread and we pop the first entry from this list and saves the
- pointer to this record in the _S_thread_key variable. The next time
- we will get the pointer to the thread_record back and we use the
- thread_record-&gt;thread_id as identification. I.e., the first thread that
- calls allocate will get the first record in this list and thus be thread
- number 1 and will then find the pointer to its first free 32 byte block
- in _S_bin[ 5 ].first[ 1 ]
- When we create the _S_thread_key we also define a destructor
- (_S_thread_key_destr) which means that when the thread dies, this
- thread_record is returned to the front of this list and the thread id
- can then be reused if a new thread is created.
- This list is protected by a mutex (_S_thread_freelist_mutex) which is only
- locked when records are removed or added to the list.
-</p><p>
- - Initialize the free and used counters of each bin_record:
- - bin_record-&gt;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
- counter would be decreased to 11.
-
- - bin_record-&gt;used = An array of size_t. This keeps track of the number
- of blocks currently in use of this size by this thread. I.e., if a thread
- has made 678 requests (and no deallocations...) of 32-byte blocks this
- counter will read 678.
-
- The above created arrays are now initialized with their initial values.
- I.e. _S_bin[ n ].free[ n ] = 0;
-</p><p>
- - Initialize the mutex of each bin_record: The bin_record-&gt;mutex
- is used to protect the global freelist. This concept of a global
- freelist is explained in more detail in the section "A multi
- threaded example", but basically this mutex is locked whenever a
- block of memory is retrieved or returned to the global freelist
- for this specific bin. This only occurs when a number of blocks
- are grabbed from the global list to a thread specific list or when
- a thread decides to return some blocks to the global freelist.
-</p></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.mt.deallocation"></a>Deallocation Notes</h4></div></div></div><p> Notes about deallocation. This allocator does not explicitly
-release memory. Because of this, memory debugging programs like
-valgrind or purify may notice leaks: sorry about this
-inconvenience. Operating systems will reclaim allocated memory at
-program termination anyway. If sidestepping this kind of noise is
-desired, there are three options: use an allocator, like
-<code class="code">new_allocator</code> that releases memory while debugging, use
-GLIBCXX_FORCE_NEW to bypass the allocator's internal pools, or use a
-custom pool datum that releases resources on destruction.
-</p><p>
- On systems with the function <code class="code">__cxa_atexit</code>, the
-allocator can be forced to free all memory allocated before program
-termination with the member function
-<code class="code">__pool_type::_M_destroy</code>. However, because this member
-function relies on the precise and exactly-conforming ordering of
-static destructors, including those of a static local
-<code class="code">__pool</code> object, it should not be used, ever, on systems
-that don't have the necessary underlying support. In addition, in
-practice, forcing deallocation can be tricky, as it requires the
-<code class="code">__pool</code> object to be fully-constructed before the object
-that uses it is fully constructed. For most (but not all) STL
-containers, this works, as an instance of the allocator is constructed
-as part of a container's constructor. However, this assumption is
-implementation-specific, and subject to change. For an example of a
-pool that frees memory, see the following
- <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup" target="_top">
- example.</a>
-</p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.example_single"></a>Single Thread Example</h3></div></div></div><p>
-Let's start by describing how the data on a freelist is laid out in memory.
-This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes):
-</p><pre class="programlisting">
-+----------------+
-| next* ---------|--+ (_S_bin[ 3 ].first[ 3 ] points here)
-| | |
-| | |
-| | |
-+----------------+ |
-| thread_id = 3 | |
-| | |
-| | |
-| | |
-+----------------+ |
-| DATA | | (A pointer to here is what is returned to the
-| | | the application when needed)
-| | |
-| | |
-| | |
-| | |
-| | |
-| | |
-+----------------+ |
-+----------------+ |
-| next* |&lt;-+ (If next == NULL it's the last one on the list)
-| |
-| |
-| |
-+----------------+
-| thread_id = 3 |
-| |
-| |
-| |
-+----------------+
-| DATA |
-| |
-| |
-| |
-| |
-| |
-| |
-| |
-+----------------+
-</pre><p>
-With this in mind we simplify things a bit for a while and say that there is
-only one thread (a ST application). In this case all operations are made to
-what is referred to as the global pool - thread id 0 (No thread may be
-assigned this id since they span from 1 to _S_max_threads in a MT application).
-</p><p>
-When the application requests memory (calling allocate()) we first look at the
-requested size and if this is &gt; _S_max_bytes we call new() directly and return.
-</p><p>
-If the requested size is within limits we start by finding out from which
-bin we should serve this request by looking in _S_binmap.
-</p><p>
-A quick look at _S_bin[ bin ].first[ 0 ] tells us if there are any blocks of
-this size on the freelist (0). If this is not NULL - fine, just remove the
-block that _S_bin[ bin ].first[ 0 ] points to from the list,
-update _S_bin[ bin ].first[ 0 ] and return a pointer to that blocks data.
-</p><p>
-If the freelist is empty (the pointer is NULL) we must get memory from the
-system and build us a freelist within this memory. All requests for new memory
-is made in chunks of _S_chunk_size. Knowing the size of a block_record and
-the bytes that this bin stores we then calculate how many blocks we can create
-within this chunk, build the list, remove the first block, update the pointer
-(_S_bin[ bin ].first[ 0 ]) and return a pointer to that blocks data.
-</p><p>
-Deallocation is equally simple; the pointer is casted back to a block_record
-pointer, lookup which bin to use based on the size, add the block to the front
-of the global freelist and update the pointer as needed
-(_S_bin[ bin ].first[ 0 ]).
-</p><p>
-The decision to add deallocated blocks to the front of the freelist was made
-after a set of performance measurements that showed that this is roughly 10%
-faster than maintaining a set of "last pointers" as well.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.example_multi"></a>Multiple Thread Example</h3></div></div></div><p>
-In the ST example we never used the thread_id variable present in each block.
-Let's start by explaining the purpose of this in a MT application.
-</p><p>
-The concept of "ownership" was introduced since many MT applications
-allocate and deallocate memory to shared containers from different
-threads (such as a cache shared amongst all threads). This introduces
-a problem if the allocator only returns memory to the current threads
-freelist (I.e., there might be one thread doing all the allocation and
-thus obtaining ever more memory from the system and another thread
-that is getting a longer and longer freelist - this will in the end
-consume all available memory).
-</p><p>
-Each time a block is moved from the global list (where ownership is
-irrelevant), to a threads freelist (or when a new freelist is built
-from a chunk directly onto a threads freelist or when a deallocation
-occurs on a block which was not allocated by the same thread id as the
-one doing the deallocation) the thread id is set to the current one.
-</p><p>
-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
-variables decides if memory should be returned to the global pool or
-not when a deallocation occurs.
-</p><p>
-When the application requests memory (calling allocate()) we first
-look at the requested size and if this is &gt;_S_max_bytes we call new()
-directly and return.
-</p><p>
-If the requested size is within limits we start by finding out from which
-bin we should serve this request by looking in _S_binmap.
-</p><p>
-A call to _S_get_thread_id() returns the thread id for the calling thread
-(and if no value has been set in _S_thread_key, a new id is assigned and
-returned).
-</p><p>
-A quick look at _S_bin[ bin ].first[ thread_id ] tells us if there are
-any blocks of this size on the current threads freelist. If this is
-not NULL - fine, just remove the block that _S_bin[ bin ].first[
-thread_id ] points to from the list, update _S_bin[ bin ].first[
-thread_id ], update the free and used counters and return a pointer to
-that blocks data.
-</p><p>
-If the freelist is empty (the pointer is NULL) we start by looking at
-the global freelist (0). If there are blocks available on the global
-freelist we lock this bins mutex and move up to block_count (the
-number of blocks of this bins size that will fit into a _S_chunk_size)
-or until end of list - whatever comes first - to the current threads
-freelist and at the same time change the thread_id ownership and
-update the counters and pointers. When the bins mutex has been
-unlocked, we remove the block that _S_bin[ bin ].first[ thread_id ]
-points to from the list, update _S_bin[ bin ].first[ thread_id ],
-update the free and used counters, and return a pointer to that blocks
-data.
-</p><p>
-The reason that the number of blocks moved to the current threads
-freelist is limited to block_count is to minimize the chance that a
-subsequent deallocate() call will return the excess blocks to the
-global freelist (based on the _S_freelist_headroom calculation, see
-below).
-</p><p>
-However if there isn't any memory on the global pool we need to get
-memory from the system - this is done in exactly the same way as in a
-single threaded application with one major difference; the list built
-in the newly allocated memory (of _S_chunk_size size) is added to the
-current threads freelist instead of to the global.
-</p><p>
-The basic process of a deallocation call is simple: always add the
-block to the front of the current threads freelist and update the
-counters and pointers (as described earlier with the specific check of
-ownership that causes the used counter of the thread that originally
-allocated the block to be decreased instead of the current threads
-counter).
-</p><p>
-And here comes the free and used counters to service. Each time a
-deallocation() call is made, the length of the current threads
-freelist is compared to the amount memory in use by this thread.
-</p><p>
-Let's go back to the example of an application that has one thread
-that does all the allocations and one that deallocates. Both these
-threads use say 516 32-byte blocks that was allocated during thread
-creation for example. Their used counters will both say 516 at this
-point. The allocation thread now grabs 1000 32-byte blocks and puts
-them in a shared container. The used counter for this thread is now
-1516.
-</p><p>
-The deallocation thread now deallocates 500 of these blocks. For each
-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
-(516/10) blocks will be returned to the global pool where the
-allocating thread may pick them up and reuse them.
-</p><p>
-In order to reduce lock contention (since this requires this bins
-mutex to be locked) this operation is also made in chunks of blocks
-(just like when chunks of blocks are moved from the global freelist to
-a threads freelist mentioned above). The "formula" used can probably
-be improved to further reduce the risk of blocks being "bounced back
-and forth" between freelists.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Testing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitmap_allocator</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch33.html b/libstdc++-v3/doc/html/manual/bk01pt12ch33.html
deleted file mode 100644
index d2fb6a7..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch33.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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>Chapter 33. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator" /><link rel="next" href="bk01pt12ch33s02.html" title="HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 33. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch33s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 33. Containers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch33.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch33s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p>
- </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.pbds"></a>Policy Based Data Structures</h2></div></div></div><p>
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html" target="_top">More details here</a>.
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch33s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitmap_allocator </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> HP/SGI</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch34.html b/libstdc++-v3/doc/html/manual/bk01pt12ch34.html
deleted file mode 100644
index 505d11f..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch34.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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>Chapter 34. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch33s03.html" title="Deprecated HP/SGI" /><link rel="next" href="bk01pt12ch35.html" title="Chapter 35. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 34. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch35.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 34. Utilities</h2></div></div></div><p>
- The &lt;functional&gt; header contains many additional functors
- and helper functions, extending section 20.3. They are
- implemented in the file stl_function.h:
- </p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">identity_element</code> for addition and multiplication. *
- </p></li><li><p>The functor <code class="code">identity</code>, whose <code class="code">operator()</code>
- returns the argument unchanged. *
- </p></li><li><p>Composition functors <code class="code">unary_function</code> and
- <code class="code">binary_function</code>, and their helpers <code class="code">compose1</code>
- and <code class="code">compose2</code>. *
- </p></li><li><p><code class="code">select1st</code> and <code class="code">select2nd</code>, to strip pairs. *
- </p></li><li><p><code class="code">project1st</code> and <code class="code">project2nd</code>. * </p></li><li><p>A set of functors/functions which always return the same result. They
- are <code class="code">constant_void_fun</code>, <code class="code">constant_binary_fun</code>,
- <code class="code">constant_unary_fun</code>, <code class="code">constant0</code>,
- <code class="code">constant1</code>, and <code class="code">constant2</code>. * </p></li><li><p>The class <code class="code">subtractive_rng</code>. * </p></li><li><p>mem_fun adaptor helpers <code class="code">mem_fun1</code> and
- <code class="code">mem_fun1_ref</code> are provided for backwards compatibility. </p></li></ul></div><p>
- 20.4.1 can use several different allocators; they are described on the
- main extensions page.
-</p><p>
- 20.4.3 is extended with a special version of
- <code class="code">get_temporary_buffer</code> taking a second argument. The
- argument is a pointer, which is ignored, but can be used to specify
- the template type (instead of using explicit function template
- arguments like the standard version does). That is, in addition to
-</p><pre class="programlisting">
-get_temporary_buffer&lt;int&gt;(5);
-</pre><p>
-you can also use
-</p><pre class="programlisting">
-get_temporary_buffer(5, (int*)0);
-</pre><p>
- A class <code class="code">temporary_buffer</code> is given in stl_tempbuf.h. *
-</p><p>
- The specialized algorithms of section 20.4.4 are extended with
- <code class="code">uninitialized_copy_n</code>. *
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch33s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch35.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Deprecated HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 35. Algorithms</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch35.html b/libstdc++-v3/doc/html/manual/bk01pt12ch35.html
deleted file mode 100644
index 2db6be6..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch35.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<?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>Chapter 35. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch34.html" title="Chapter 34. Utilities" /><link rel="next" href="bk01pt12ch36.html" title="Chapter 36. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 35. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch34.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch36.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 35. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count
- and count_if. The standard versions return their results. The
- additional signatures return void, but take a final parameter by
- reference to which they assign their results, e.g.,
-</p><pre class="programlisting">
- void count (first, last, value, n);</pre><p>25.2 (mutating algorithms) is extended with two families of signatures,
- random_sample and random_sample_n.
-</p><p>25.2.1 (copy) is extended with
-</p><pre class="programlisting">
- copy_n (_InputIter first, _Size count, _OutputIter result);</pre><p>which copies the first 'count' elements at 'first' into 'result'.
-</p><p>25.3 (sorting 'n' heaps 'n' stuff) is extended with some helper
- predicates. Look in the doxygen-generated pages for notes on these.
-</p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">is_heap</code> tests whether or not a range is a heap.</p></li><li><p><code class="code">is_sorted</code> tests whether or not a range is sorted in
- nondescending order.</p></li></ul></div><p>25.3.8 (lexicographical_compare) is extended with
-</p><pre class="programlisting">
- lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
- _InputIter2 first2, _InputIter2 last2)</pre><p>which does... what?
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch34.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch36.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 34. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 36. Numerics</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch36.html b/libstdc++-v3/doc/html/manual/bk01pt12ch36.html
deleted file mode 100644
index 3f120ae..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch36.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<?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>Chapter 36. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch35.html" title="Chapter 35. Algorithms" /><link rel="next" href="bk01pt12ch37.html" title="Chapter 37. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch35.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch37.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 36. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended
- with the following functions:
-</p><pre class="programlisting">
- power (x, n);
- power (x, n, moniod_operation);</pre><p>Returns, in FORTRAN syntax, "x ** n" where n&gt;=0. In the
- case of n == 0, returns the <a class="ulink" href="#ch20" target="_top">identity element</a> for the
- monoid operation. The two-argument signature uses multiplication (for
- a true "power" implementation), but addition is supported as well.
- The operation functor must be associative.
-</p><p>The <code class="code">iota</code> function wins the award for Extension With the
- Coolest Name. It "assigns sequentially increasing values to a range.
- That is, it assigns value to *first, value + 1 to *(first + 1) and so
- on." Quoted from SGI documentation.
-</p><pre class="programlisting">
- void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch35.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch37.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 35. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 37. Iterators</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch37.html b/libstdc++-v3/doc/html/manual/bk01pt12ch37.html
deleted file mode 100644
index ea5e1fa..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch37.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<?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>Chapter 37. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch36.html" title="Chapter 36. Numerics" /><link rel="next" href="bk01pt12ch38.html" title="Chapter 38. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 37. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch36.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch38.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 37. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the
- original HP STL implementation (the language wasn't rich enough at the
- time). For backwards compatibility, base classes are provided which
- declare the same nested typedefs:
-</p><div class="itemizedlist"><ul type="disc"><li><p>input_iterator</p></li><li><p>output_iterator</p></li><li><p>forward_iterator</p></li><li><p>bidirectional_iterator</p></li><li><p>random_access_iterator</p></li></ul></div><p>24.3.4 describes iterator operation <code class="code">distance</code>, which takes
- two iterators and returns a result. It is extended by another signature
- which takes two iterators and a reference to a result. The result is
- modified, and the function returns nothing.
-</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch36.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch38.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 36. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 38. Input and Output</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch38.html b/libstdc++-v3/doc/html/manual/bk01pt12ch38.html
deleted file mode 100644
index 84c110d..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch38.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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>Chapter 38. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch37.html" title="Chapter 37. Iterators" /><link rel="next" href="bk01pt12ch39.html" title="Chapter 39. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 38. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch37.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch39.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 38. Input and Output</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt12ch38.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p>
- Extensions allowing <code class="code">filebuf</code>s to be constructed from
- "C" types like FILE*s and file descriptors.
- </p><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.io.filebuf_derived"></a>Derived filebufs</h2></div></div></div><p>The v2 library included non-standard extensions to construct
- <code class="code">std::filebuf</code>s from C stdio types such as
- <code class="code">FILE*</code>s and POSIX file descriptors.
- Today the recommended way to use stdio types with libstdc++
- IOStreams is via the <code class="code">stdio_filebuf</code> class (see below),
- but earlier releases provided slightly different mechanisms.
- </p><div class="itemizedlist"><ul type="disc"><li><p>3.0.x <code class="code">filebuf</code>s have another ctor with this signature:
- <code class="code">basic_filebuf(__c_file_type*, ios_base::openmode, int_type);
- </code>
- This comes in very handy in a number of places, such as
- attaching Unix sockets, pipes, and anything else which uses file
- descriptors, into the IOStream buffering classes. The three
- arguments are as follows:
- </p><div class="itemizedlist"><ul type="circle"><li><p><code class="code">__c_file_type* F </code>
- // the __c_file_type typedef usually boils down to stdio's FILE
- </p></li><li><p><code class="code">ios_base::openmode M </code>
- // same as all the other uses of openmode
- </p></li><li><p><code class="code">int_type B </code>
- // buffer size, defaults to BUFSIZ if not specified
- </p></li></ul></div><p>
- For those wanting to use file descriptors instead of FILE*'s, I
- invite you to contemplate the mysteries of C's <code class="code">fdopen()</code>.
- </p></li><li><p>In library snapshot 3.0.95 and later, <code class="code">filebuf</code>s bring
- back an old extension: the <code class="code">fd()</code> member function. The
- integer returned from this function can be used for whatever file
- descriptors can be used for on your platform. Naturally, the
- library cannot track what you do on your own with a file descriptor,
- so if you perform any I/O directly, don't expect the library to be
- aware of it.
- </p></li><li><p>Beginning with 3.1, the extra <code class="code">filebuf</code> constructor and
- the <code class="code">fd()</code> function were removed from the standard
- filebuf. Instead, <code class="code">&lt;ext/stdio_filebuf.h&gt;</code> contains
- a derived class called
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/class____gnu__cxx_1_1stdio__filebuf.html" target="_top"><code class="code">__gnu_cxx::stdio_filebuf</code></a>.
- This class can be constructed from a C <code class="code">FILE*</code> or a file
- descriptor, and provides the <code class="code">fd()</code> function.
- </p></li></ul></div><p>If you want to access a <code class="code">filebuf</code>'s file descriptor to
- implement file locking (e.g. using the <code class="code">fcntl()</code> system
- call) then you might be interested in Henry Suter's
- <a class="ulink" href="http://suter.home.cern.ch/suter/RWLock.html" target="_top">RWLock</a>
- class.
- </p><p>
- </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch37.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch39.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 37. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 39. Demangling</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch39.html b/libstdc++-v3/doc/html/manual/bk01pt12ch39.html
deleted file mode 100644
index 82a673f..0000000
--- a/libstdc++-v3/doc/html/manual/bk01pt12ch39.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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>Chapter 39. Demangling</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch38.html" title="Chapter 38. Input and Output" /><link rel="next" href="concurrency.html" title="Chapter 40. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 39. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch38.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 39. Demangling</h2></div></div></div><p>
- Transforming C++ ABI identifiers (like RTTI symbols) into the
- original C++ source identifiers is called
- “<span class="quote">demangling.</span>”
- </p><p>
- If you have read the <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaceabi.html" target="_top">source
- documentation for <code class="code">namespace abi</code></a> then you are
- aware of the cross-vendor C++ ABI in use by GCC. One of the
- exposed functions is used for demangling,
- <code class="code">abi::__cxa_demangle</code>.
- </p><p>
- In programs like <span class="command"><strong>c++filt</strong></span>, the linker, and other tools
- have the ability to decode C++ ABI names, and now so can you.
- </p><p>
- (The function itself might use different demanglers, but that's the
- whole point of abstract interfaces. If we change the implementation,
- you won't notice.)
- </p><p>
- Probably the only times you'll be interested in demangling at runtime
- are when you're seeing <code class="code">typeid</code> strings in RTTI, or when
- you're handling the runtime-support exception classes. For example:
- </p><pre class="programlisting">
-#include &lt;exception&gt;
-#include &lt;iostream&gt;
-#include &lt;cxxabi.h&gt;
-
-struct empty { };
-
-template &lt;typename T, int N&gt;
- struct bar { };
-
-
-int main()
-{
- int status;
- char *realname;
-
- // exception classes not in &lt;stdexcept&gt;, thrown by the implementation
- // instead of the user
- std::bad_exception e;
- realname = abi::__cxa_demangle(e.what(), 0, 0, &amp;status);
- std::cout &lt;&lt; e.what() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
- free(realname);
-
-
- // typeid
- bar&lt;empty,17&gt; u;
- const std::type_info &amp;ti = typeid(u);
-
- realname = abi::__cxa_demangle(ti.name(), 0, 0, &amp;status);
- std::cout &lt;&lt; ti.name() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
- free(realname);
-
- return 0;
-}
- </pre><p>
- This prints
- </p><pre class="screen">
- <code class="computeroutput">
- St13bad_exception =&gt; std::bad_exception : 0
- 3barI5emptyLi17EE =&gt; bar&lt;empty, 17&gt; : 0
- </code>
- </pre><p>
- The demangler interface is described in the source documentation
- linked to above. It is actually written in C, so you don't need to
- be writing C++ in order to demangle C++. (That also means we have to
- use crummy memory management facilities, so don't forget to free()
- the returned char array.)
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch38.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 38. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 40. Concurrency</td></tr></table></div></body></html>
diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html
deleted file mode 100644
index b201c76..0000000
--- a/libstdc++-v3/doc/html/manual/concurrency.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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>Chapter 40. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.0" /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><meta name="keywords" content="&#10; ISO C++&#10; , &#10; library&#10; " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch39.html" title="Chapter 39. Demangling" /><link rel="next" href="bk01pt12ch40s02.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 40. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch39.html">Prev</a> </td><th width="60%" align="center">Part XII. Extensions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 40. Concurrency</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch40s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch40s03.html">Use</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file &lt;ext/concurrence.h&gt; contains all the higher-level
-constructs for playing with threads. In contrast to the atomics layer,
-the concurrence layer consists largely of types. All types are defined within <code class="code">namespace __gnu_cxx</code>.
-</p><p>
-These types can be used in a portable manner, regardless of the
-specific environment. They are carefully designed to provide optimum
-efficiency and speed, abstracting out underlying thread calls and
-accesses when compiling for single-threaded situations (even on hosts
-that support multiple threads.)
-</p><p>The enumerated type <code class="code">_Lock_policy</code> details the set of
-available locking
-policies: <code class="code">_S_single</code>, <code class="code">_S_mutex</code>,
-and <code class="code">_S_atomic</code>.
-</p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">_S_single</code></p><p>Indicates single-threaded code that does not need locking.
-</p></li><li><p><code class="code">_S_mutex</code></p><p>Indicates multi-threaded code using thread-layer abstractions.
-</p></li><li><p><code class="code">_S_atomic</code></p><p>Indicates multi-threaded code using atomic operations.
-</p></li></ul></div><p>The compile-time constant <code class="code">__default_lock_policy</code> is set
-to one of the three values above, depending on characteristics of the
-host environment and the current compilation flags.
-</p><p>Two more datatypes make up the rest of the
-interface: <code class="code">__mutex</code>, and <code class="code">__scoped_lock</code>.
-</p><p>
-</p><p>The scoped lock idiom is well-discussed within the C++
-community. This version takes a <code class="code">__mutex</code> reference, and
-locks it during construction of <code class="code">__scoped_locke</code> and
-unlocks it during destruction. This is an efficient way of locking
-critical sections, while retaining exception-safety.
-</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.atomics"></a>Interface to Atomic Functions</h3></div></div></div><p>
-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:
-</p><pre class="programlisting">
-_Atomic_word
-__exchange_and_add_dispatch(volatile _Atomic_word*, int);
-
-void
-__atomic_add_dispatch(volatile _Atomic_word*, int);
-</pre><p>Both of these functions are declared in the header file
-&lt;ext/atomicity.h&gt;, and are in <code class="code">namespace __gnu_cxx</code>.
-</p><div class="itemizedlist"><ul type="disc"><li><p>
-<code class="code">
-__exchange_and_add_dispatch
-</code>
-</p><p>Adds the second argument's value to the first argument. Returns the old value.
-</p></li><li><p>
-<code class="code">
-__atomic_add_dispatch
-</code>
-</p><p>Adds the second argument's value to the first argument. Has no return value.
-</p></li></ul></div><p>
-These functions forward to one of several specialized helper
-functions, depending on the circumstances. For instance,
-</p><p>
-<code class="code">
-__exchange_and_add_dispatch
-</code>
-</p><p>
-Calls through to either of:
-</p><div class="itemizedlist"><ul type="disc"><li><p><code class="code">__exchange_and_add</code>
-</p><p>Multi-thread version. Inlined if compiler-generated builtin atomics
-can be used, otherwise resolved at link time to a non-builtin code
-sequence.
-</p></li><li><p><code class="code">__exchange_and_add_single</code>
-</p><p>Single threaded version. Inlined.</p></li></ul></div><p>However, only <code class="code">__exchange_and_add_dispatch</code>
-and <code class="code">__atomic_add_dispatch</code> should be used. These functions
-can be used in a portable manner, regardless of the specific
-environment. They are carefully designed to provide optimum efficiency
-and speed, abstracting out atomic accesses when they are not required
-(even on hosts that support compiler intrinsics for atomic
-operations.)
-</p><p>
-In addition, there are two macros
-</p><p>
-<code class="code">
-_GLIBCXX_READ_MEM_BARRIER
-</code>
-</p><p>
-<code class="code">
-_GLIBCXX_WRITE_MEM_BARRIER
-</code>
-</p><p>
-Which expand to the appropriate write and read barrier required by the
-host hardware and operating system.
-</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch39.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch40s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 39. Demangling </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation</td></tr></table></div></body></html>