<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
<?dbhtml filename="intro.html"?>

<info><title>
  Introduction
  <indexterm><primary>Introduction</primary></indexterm>
</title>
  <keywordset>
    <keyword>
      ISO C++
    </keyword>
    <keyword>
      library
    </keyword>
  </keywordset>
</info>


<!-- Chapter 01 : Status -->
<chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
  <?dbhtml filename="status.html"?>
  

  <!-- Section 01 : Implementation Status -->
  <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info>
    

    <!-- Section 01.1 : Status C++ 1998 -->
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
    </xi:include>

    <!-- Section 01.2 : Status C++ 200x -->
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx200x.xml">
    </xi:include>

    <!-- Section 01.3 : Status C++ TR1 -->
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
    </xi:include>

    <!-- Section 01.4 : Status C++ TR24733 -->
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
    </xi:include>
  </section>

  <!-- Section 02 : License -->
  <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info>
    <?dbhtml filename="license.html"?>
    
    <para>
    There are two licenses affecting GNU libstdc++: one for the code,
    and one for the documentation.
    </para>

    <para>
      There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more
      questions, ask the FSF or the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/lists.html">gcc mailing list</link>.
    </para>

    <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info>
    

    <para>
      The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
      with the addition under section 7 of an exception described in
      the <quote>GCC Runtime Library Exception, version 3.1</quote>
      as follows (or see the file COPYING.RUNTIME):
    </para>

    <literallayout class="normal">
GCC RUNTIME LIBRARY EXCEPTION

Version 3.1, 31 March 2009

Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">Free Software Foundation, Inc.</link>

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

This GCC Runtime Library Exception ("Exception") is an additional
permission under section 7 of the GNU General Public License, version
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.

When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.

0. Definitions.

A file is an "Independent Module" if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.

"GCC" means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.

"GPL-compatible Software" is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
the license of GCC.

"Target Code" refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.

The "Compilation Process" transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.

A Compilation Process is "Eligible" if it is done using GCC, alone or
with other GPL-compatible software, or if it is done without using any
work based on GCC. For example, using non-GPL-compatible Software to
optimize any GCC intermediate representations would not qualify as an
Eligible Compilation Process.

1. Grant of Additional Permission.

You have permission to propagate a work of Target Code formed by
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.

2. No Weakening of GCC Copyleft.

The availability of this Exception does not imply any general
presumption that third-party software is unaffected by the copyleft
requirements of the license of GCC.
    </literallayout>

    <para>
      Hopefully that text is self-explanatory.  If it isn't, you need to speak
      to your lawyer, or the Free Software Foundation.
    </para>
    </section>

    <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info>
    

    <para>
      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
      <link linkend="appendix.gfdl-1.3"> GNU Free Documentation
      License version 1.3</link>.  There are no Front-Cover Texts, no
      Back-Cover Texts, and no Invariant Sections.
    </para>

    <para>
      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 <link linkend="appendix.gpl-3.0">GPL</link>.
    </para>

    <para>
      If you plan on making copies of the documentation, please let us know.
      We can probably offer suggestions.
    </para>
    </section>

  </section>

  <!-- Section 03 : Known Bugs -->
  <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info>
    <?dbhtml filename="bugs.html"?>
    

    <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info>
      
    <para>
      Information on known bugs, details on efforts to fix them, and
      fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs/">GCC bug tracking system</link>,
      with the category set to <literal>libstdc++</literal>.
    </para>
    </section>

    <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info>
      
      <para>
	Everybody's got issues.  Even the C++ Standard Library.
      </para>
      <para>
	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.
      </para>
      <para>
	Here are the issues which have resulted in code changes to the library.
	The links are to the specific defect reports from a <emphasis>partial
	copy</emphasis> of the Issues List.  You can read the full version online
	at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++
	Committee homepage</link>, linked to on the
	<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/readings.html">GCC "Readings"
	page</link>.  If
	you spend a lot of time reading the issues, we recommend downloading
	the ZIP file and reading them locally.
      </para>
      <para>
	(NB: <emphasis>partial copy</emphasis> 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.)
      </para>
      <para>
	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
	<constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
	of style.  Note that we usually do not make changes to the
	code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#DR">DR</link> status.
      </para>

      <variablelist>
    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#5">5</link>:
	<emphasis>string::compare specification questionable</emphasis>
    </term>
    <listitem><para>This should be two overloaded functions rather than a single function.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#17">17</link>:
	<emphasis>Bad bool parsing</emphasis>
    </term>
    <listitem><para>Apparently extracting Boolean values was messed up...
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#19">19</link>:
	<emphasis>"Noconv" definition too vague</emphasis>
    </term>
    <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are
	no changes to the values in <code>[to, to_limit)</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#22">22</link>:
	<emphasis>Member open vs flags</emphasis>
    </term>
    <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#23">23</link>:
	<emphasis>Num_get overflow result</emphasis>
    </term>
    <listitem><para>Implement the proposed resolution.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#25">25</link>:
	<emphasis>String operator&lt;&lt; uses width() value wrong</emphasis>
    </term>
    <listitem><para>Padding issues.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#48">48</link>:
	<emphasis>Use of non-existent exception constructor</emphasis>
    </term>
    <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#49">49</link>:
	<emphasis>Underspecification of ios_base::sync_with_stdio</emphasis>
    </term>
    <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#50">50</link>:
	<emphasis>Copy constructor and assignment operator of ios_base</emphasis>
    </term>
    <listitem><para>These members functions are declared <code>private</code> and are
	thus inaccessible.  Specifying the correct semantics of
	"copying stream state" was deemed too complicated.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#60">60</link>:
	<emphasis>What is a formatted input function?</emphasis>
    </term>
    <listitem><para>This DR made many widespread changes to <code>basic_istream</code>
	and <code>basic_ostream</code> all of which have been implemented.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#63">63</link>:
	<emphasis>Exception-handling policy for unformatted output</emphasis>
    </term>
    <listitem><para>Make the policy consistent with that of formatted input, unformatted
	input, and formatted output.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#68">68</link>:
	<emphasis>Extractors for char* should store null at end</emphasis>
    </term>
    <listitem><para>And they do now.  An editing glitch in the last item in the list of
	[27.6.1.2.3]/7.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#74">74</link>:
	<emphasis>Garbled text for codecvt::do_max_length</emphasis>
    </term>
    <listitem><para>The text of the standard was gibberish.  Typos gone rampant.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#75">75</link>:
	<emphasis>Contradiction in codecvt::length's argument types</emphasis>
    </term>
    <listitem><para>Change the first parameter to <code>stateT&amp;</code> and implement
	the new effects paragraph.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#83">83</link>:
	<emphasis>string::npos vs. string::max_size()</emphasis>
    </term>
    <listitem><para>Safety checks on the size of the string should test against
	<code>max_size()</code> rather than <code>npos</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#90">90</link>:
	<emphasis>Incorrect description of operator&gt;&gt; for strings</emphasis>
    </term>
    <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
	replaced by <code>isspace(c,is.getloc())</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#91">91</link>:
	<emphasis>Description of operator&gt;&gt; and getline() for string&lt;&gt;
	    might cause endless loop</emphasis>
    </term>
    <listitem><para>They behave as a formatted input function and as an unformatted
	input function, respectively (except that <code>getline</code> is
	not required to set <code>gcount</code>).
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#103">103</link>:
	<emphasis>set::iterator is required to be modifiable, but this allows
	    modification of keys.</emphasis>
    </term>
    <listitem><para>For associative containers where the value type is the same as
	the key type, both <code>iterator</code> and <code>const_iterator
	</code> are constant iterators.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#109">109</link>:
	<emphasis>Missing binders for non-const sequence elements</emphasis>
    </term>
    <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an
	<code>operator()</code> taking a non-const parameter.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#110">110</link>:
	<emphasis>istreambuf_iterator::equal not const</emphasis>
    </term>
    <listitem><para>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.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#117">117</link>:
	<emphasis>basic_ostream uses nonexistent num_put member functions</emphasis>
    </term>
    <listitem><para><code>num_put::put()</code> was overloaded on the wrong types.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#118">118</link>:
	<emphasis>basic_istream uses nonexistent num_get member functions</emphasis>
    </term>
    <listitem><para>Same as 117, but for <code>num_get::get()</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#129">129</link>:
	<emphasis>Need error indication from seekp() and seekg()</emphasis>
    </term>
    <listitem><para>These functions set <code>failbit</code> on error now.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#130">130</link>:
	<emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis>
    </term>
    <listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#136">136</link>:
	<emphasis>seekp, seekg setting wrong streams?</emphasis>
    </term>
    <listitem><para><code>seekp</code> should only set the output stream, and
	<code>seekg</code> should only set the input stream.
    </para></listitem></varlistentry>

<!--<varlistentry><term><ulink url="../ext/lwg-defects.html#159">159</ulink>:
	<emphasis>Strange use of underflow()</emphasis>
    </term>
    <listitem><para>In fstream.tcc, the basic_filebuf&lt;&gt;::showmanyc() function
	should probably not be calling <code>underflow()</code>.
    </para></listitem></varlistentry> -->

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#167">167</link>:
	<emphasis>Improper use of traits_type::length()</emphasis>
    </term>
    <listitem><para><code>op&lt;&lt;</code> with a <code>const char*</code> was
	calculating an incorrect number of characters to write.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#169">169</link>:
	<emphasis>Bad efficiency of overflow() mandated</emphasis>
    </term>
    <listitem><para>Grow efficiently the internal array object.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#171">171</link>:
	<emphasis>Strange seekpos() semantics due to joint position</emphasis>
    </term>
    <listitem><para>Quite complex to summarize...
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#181">181</link>:
	<emphasis>make_pair() unintended behavior</emphasis>
    </term>
    <listitem><para>This function used to take its arguments as reference-to-const, now
	it copies them (pass by value).
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#195">195</link>:
	<emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis>
    </term>
    <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#211">211</link>:
	<emphasis>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</emphasis>
    </term>
    <listitem><para>If nothing is extracted into the string, <code>op&gt;&gt;</code> now
	sets <code>failbit</code> (which can cause an exception, etc., etc.).
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#214">214</link>:
	<emphasis>set::find() missing const overload</emphasis>
    </term>
    <listitem><para>Both <code>set</code> and <code>multiset</code> were missing
	overloaded find, lower_bound, upper_bound, and equal_range functions
	for const instances.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#231">231</link>:
	<emphasis>Precision in iostream?</emphasis>
    </term>
    <listitem><para>For conversion from a floating-point type, <code>str.precision()</code>
	is specified in the conversion specification.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#233">233</link>:
	<emphasis>Insertion hints in associative containers</emphasis>
    </term>
    <listitem><para>Implement N1780, first check before then check after, insert as close
	to hint as possible.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#235">235</link>:
	<emphasis>No specification of default ctor for reverse_iterator</emphasis>
    </term>
    <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor.
	However, no specification is given what this constructor should do.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#241">241</link>:
	<emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis>
    </term>
    <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing
	one for input_iterator/output_iterator to not rely on Assignability.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#243">243</link>:
	<emphasis>get and getline when sentry reports failure</emphasis>
    </term>
    <listitem><para>Store a null character only if the character array has a non-zero size.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#251">251</link>:
	<emphasis>basic_stringbuf missing allocator_type</emphasis>
    </term>
    <listitem><para>This nested typedef was originally not specified.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#253">253</link>:
	<emphasis>valarray helper functions are almost entirely useless</emphasis>
    </term>
    <listitem><para>Make the copy constructor and copy-assignment operator declarations
	public in gslice_array, indirect_array, mask_array, slice_array; provide
	definitions.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#265">265</link>:
	<emphasis>std::pair::pair() effects overly restrictive</emphasis>
    </term>
    <listitem><para>The default ctor would build its members from copies of temporaries;
	now it simply uses their respective default ctors.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#266">266</link>:
	<emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis>
    </term>
    <listitem><para>The <code>bad_</code>* classes no longer have destructors (they
	are trivial), since no description of them was ever given.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#271">271</link>:
	<emphasis>basic_iostream missing typedefs</emphasis>
    </term>
    <listitem><para>The typedefs it inherits from its base classes can't be used, since
	(for example) <code>basic_iostream&lt;T&gt;::traits_type</code> is ambiguous.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#275">275</link>:
	<emphasis>Wrong type in num_get::get() overloads</emphasis>
    </term>
    <listitem><para>Similar to 118.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#280">280</link>:
	<emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis>
    </term>
    <listitem><para>Add global functions with two template parameters.
	(NB: not added for now a templated assignment operator)
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#292">292</link>:
	<emphasis>Effects of a.copyfmt (a)</emphasis>
    </term>
    <listitem><para>If <code>(this == &amp;rhs)</code> do nothing.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#300">300</link>:
	<emphasis>List::merge() specification incomplete</emphasis>
    </term>
    <listitem><para>If <code>(this == &amp;x)</code> do nothing.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#303">303</link>:
	<emphasis>Bitset input operator underspecified</emphasis>
    </term>
    <listitem><para>Basically, compare the input character to
		    <code>is.widen(0)</code> and <code>is.widen(1)</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#305">305</link>:
	<emphasis>Default behavior of codecvt&lt;wchar_t, char,
		  mbstate_t&gt;::length()</emphasis>
    </term>
    <listitem><para>Do not specify what <code>codecvt&lt;wchar_t, char,
		    mbstate_t&gt;::do_length</code> must return.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#328">328</link>:
	<emphasis>Bad sprintf format modifier in
		  money_put&lt;&gt;::do_put()</emphasis>
    </term>
    <listitem><para>Change the format string to "%.0Lf".
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#365">365</link>:
	<emphasis>Lack of const-qualification in clause 27</emphasis>
    </term>
    <listitem><para>Add const overloads of <code>is_open</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#387">387</link>:
	<emphasis>std::complex over-encapsulated</emphasis>
    </term>
    <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
		    members;  in C++0x mode, also adjust the existing
		    <code>real()</code> and <code>imag()</code> members and
		    free functions.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#389">389</link>:
	<emphasis>Const overload of valarray::operator[] returns
		  by value</emphasis>
    </term>
    <listitem><para>Change it to return a <code>const T&amp;</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#396">396</link>:
	<emphasis>what are characters zero and one</emphasis>
    </term>
    <listitem><para>Implement the proposed resolution.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#402">402</link>:
	<emphasis>Wrong new expression in [some_]allocator::construct</emphasis>
    </term>
    <listitem><para>Replace "new" with "::new".
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#408">408</link>:
	<emphasis>
	Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?
	</emphasis>
    </term>
    <listitem><para>Tweak the debug-mode checks in _Safe_iterator.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#409">409</link>:
	<emphasis>Closing an fstream should clear the error state</emphasis>
    </term>
    <listitem><para>Have <code>open</code> clear the error flags.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#431">431</link>:
	<emphasis>Swapping containers with unequal allocators</emphasis>
    </term>
    <listitem><para>Implement Option 3, as per N1599.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#432">432</link>:
	<emphasis>stringbuf::overflow() makes only one write position
	    available</emphasis>
    </term>
    <listitem><para>Implement the resolution, beyond DR 169.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#434">434</link>:
	<emphasis>bitset::to_string() hard to use</emphasis>
    </term>
    <listitem><para>Add three overloads, taking fewer template arguments.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#438">438</link>:
	<emphasis>Ambiguity in the "do the right thing" clause</emphasis>
    </term>
    <listitem><para>Implement the resolution, basically cast less.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#453">453</link>:
	<emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis>
    </term>
    <listitem><para>Don't fail if the next pointer is null and newoff is zero.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#455">455</link>:
	<emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis>
    </term>
    <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#464">464</link>:
	<emphasis>Suggestion for new member functions in standard containers</emphasis>
    </term>
    <listitem><para>Add <code>data()</code> to <code>std::vector</code> and
	<code>at(const key_type&amp;)</code> to <code>std::map</code>.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#508">508</link>:
	<emphasis>Bad parameters for ranlux64_base_01</emphasis>
    </term>
    <listitem><para>Fix the parameters.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#512">512</link>:
	<emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis>
    </term>
    <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#526">526</link>:
	<emphasis>Is it undefined if a function in the standard changes in
	    parameters?</emphasis>
    </term>
    <listitem><para>Use &amp;value.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#538">538</link>:
	<emphasis>241 again: Does unique_copy() require CopyConstructible
	    and Assignable?</emphasis>
    </term>
    <listitem><para>In case of input_iterator/output_iterator rely on Assignability of
	input_iterator' value_type.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#539">539</link>:
	<emphasis>partial_sum and adjacent_difference should mention
	    requirements</emphasis>
    </term>
    <listitem><para>We were almost doing the right thing, just use std::move
	in adjacent_difference.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#541">541</link>:
	<emphasis>shared_ptr template assignment and void</emphasis>
    </term>
    <listitem><para>Add an auto_ptr&lt;void&gt; specialization.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#543">543</link>:
	<emphasis>valarray slice default constructor</emphasis>
    </term>
    <listitem><para>Follow the straightforward proposed resolution.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#550">550</link>:
	<emphasis>What should the return type of pow(float,int) be?</emphasis>
    </term>
    <listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#586">586</link>:
	<emphasis>string inserter not a formatted function</emphasis>
    </term>
    <listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#596">596</link>:
	<emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis>
    </term>
    <listitem><para>Add the missing modes to fopen_mode.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#630">630</link>:
	<emphasis>arrays of valarray</emphasis>
    </term>
    <listitem><para>Implement the simple resolution.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#660">660</link>:
	<emphasis>Missing bitwise operations</emphasis>
    </term>
    <listitem><para>Add the missing operations.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#691">691</link>:
	<emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
    </term>
    <listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type)
		    to the unordered containers.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#693">693</link>:
	<emphasis>std::bitset::all() missing</emphasis>
    </term>
    <listitem><para>Add it, consistently with the discussion.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#695">695</link>:
	<emphasis>ctype&lt;char&gt;::classic_table() not accessible</emphasis>
    </term>
    <listitem><para>Make the member functions table and classic_table public.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#696">696</link>:
	<emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis>
    </term>
    <listitem><para>Implement the straightforward resolution.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#761">761</link>:
	<emphasis>unordered_map needs an at() member function</emphasis>
    </term>
    <listitem><para>In C++0x mode, add at() and at() const.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#775">775</link>:
	<emphasis>Tuple indexing should be unsigned?</emphasis>
    </term>
    <listitem><para>Implement the int -&gt; size_t replacements.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#776">776</link>:
	<emphasis>Undescribed assign function of std::array</emphasis>
    </term>
    <listitem><para>In C++0x mode, remove assign, add fill.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#781">781</link>:
	<emphasis>std::complex should add missing C99 functions</emphasis>
    </term>
    <listitem><para>In C++0x mode, add std::proj.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#809">809</link>:
	<emphasis>std::swap should be overloaded for array types</emphasis>
    </term>
    <listitem><para>Add the overload.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#844">844</link>:
	<emphasis>complex pow return type is ambiguous</emphasis>
    </term>
    <listitem><para>In C++0x mode, remove the pow(complex&lt;T&gt;, int) signature.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>:
	<emphasis>to_string needs updating with zero and one</emphasis>
    </term>
    <listitem><para>Update / add the signatures.
    </para></listitem></varlistentry>

    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#865">865</link>:
	<emphasis>More algorithms that throw away information</emphasis>
    </term>
    <listitem><para>The traditional HP / SGI return type and value is blessed
		    by the resolution of the DR.
    </para></listitem></varlistentry>
  </variablelist>

 </section>
  </section>
</chapter>


<!-- Chapter 02 : Setup -->
<chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
  <?dbhtml filename="setup.html"?>
  

   <para>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.
   </para>

   <para>The general outline of commands is something like:
   </para>

   <programlisting>
   <emphasis>get gcc sources</emphasis>
   <emphasis>extract into gccsrcdir</emphasis>
   mkdir <emphasis>gccbuilddir</emphasis>
   cd <emphasis>gccbuilddir</emphasis>
   <emphasis>gccsrcdir</emphasis>/configure --prefix=<emphasis>destdir</emphasis> --other-opts...
   make
   make check
   make install
   </programlisting>

   <para>
     Each step is described in more detail in the following sections.
   </para>

  <!-- Section 01 : Prerequisites -->
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml">
  </xi:include>

  <!-- Section 02 : Configure -->
  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml">
  </xi:include>

  <!-- Section 03 : Make -->
<section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info>
  <?dbhtml filename="make.html"?>

   <para>If you have never done this before, you should read the basic
      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation
      Instructions</link> first.  Read <emphasis>all of them</emphasis>.
      <emphasis>Twice.</emphasis>
   </para>

<para>Then type: <command>make</command>, and congratulations, you've
started to build.
</para>

</section>

</chapter>

<!-- Chapter 03 : Using -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml">
</xi:include>

</part>
