xref: /netbsd-src/external/gpl3/gcc.old/dist/libstdc++-v3/doc/xml/manual/intro.xml (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1<?xml version='1.0'?>
2<!DOCTYPE part [
3  <!ENTITY DR
4"http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html">
5] >
6
7<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
8<?dbhtml filename="intro.html"?>
9
10<info><title>
11  Introduction
12  <indexterm><primary>Introduction</primary></indexterm>
13</title>
14  <keywordset>
15    <keyword>ISO C++</keyword>
16    <keyword>library</keyword>
17  </keywordset>
18</info>
19
20
21<!-- Chapter 01 : Status -->
22<chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
23  <?dbhtml filename="status.html"?>
24
25
26  <!-- Section 01 : Implementation Status -->
27  <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info>
28
29
30    <!-- Section 01.1 : Status C++ 1998 -->
31    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
32    </xi:include>
33
34    <!-- Section 01.2 : Status C++ 2011 -->
35    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2011.xml">
36    </xi:include>
37
38    <!-- Section 01.3 : Status C++ 2014 -->
39    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2014.xml">
40    </xi:include>
41
42    <!-- Section 01.4 : Status C++ 2017 -->
43    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2017.xml">
44    </xi:include>
45
46    <!-- Section 01.4 : Status C++ 2020 -->
47    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2020.xml">
48    </xi:include>
49
50    <!-- Section 01.5 : Status C++ TR1 -->
51    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
52    </xi:include>
53
54    <!-- Section 01.6 : Status C++ TR24733 -->
55    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
56    </xi:include>
57
58    <!-- Section 01.7 : Status C++ IS 29124 -->
59    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxis29124.xml">
60    </xi:include>
61  </section>
62
63  <!-- Section 02 : License -->
64  <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info>
65    <?dbhtml filename="license.html"?>
66
67    <para>
68    There are two licenses affecting GNU libstdc++: one for the code,
69    and one for the documentation.
70    </para>
71
72    <para>
73      There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more
74      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>.
75    </para>
76
77    <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info>
78
79
80    <para>
81      The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
82      with the addition under section 7 of an exception described in
83      the <quote>GCC Runtime Library Exception, version 3.1</quote>
84      as follows (or see the file COPYING.RUNTIME):
85    </para>
86
87    <literallayout class="normal">
88GCC RUNTIME LIBRARY EXCEPTION
89
90Version 3.1, 31 March 2009
91
92Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">Free Software Foundation, Inc.</link>
93
94Everyone is permitted to copy and distribute verbatim copies of this
95license document, but changing it is not allowed.
96
97This GCC Runtime Library Exception ("Exception") is an additional
98permission under section 7 of the GNU General Public License, version
993 ("GPLv3"). It applies to a given file (the "Runtime Library") that
100bears a notice placed by the copyright holder of the file stating that
101the file is governed by GPLv3 along with this Exception.
102
103When you use GCC to compile a program, GCC may combine portions of
104certain GCC header files and runtime libraries with the compiled
105program. The purpose of this Exception is to allow compilation of
106non-GPL (including proprietary) programs to use, in this way, the
107header files and runtime libraries covered by this Exception.
108
1090. Definitions.
110
111A file is an "Independent Module" if it either requires the Runtime
112Library for execution after a Compilation Process, or makes use of an
113interface provided by the Runtime Library, but is not otherwise based
114on the Runtime Library.
115
116"GCC" means a version of the GNU Compiler Collection, with or without
117modifications, governed by version 3 (or a specified later version) of
118the GNU General Public License (GPL) with the option of using any
119subsequent versions published by the FSF.
120
121"GPL-compatible Software" is software whose conditions of propagation,
122modification and use would permit combination with GCC in accord with
123the license of GCC.
124
125"Target Code" refers to output from any compiler for a real or virtual
126target processor architecture, in executable form or suitable for
127input to an assembler, loader, linker and/or execution
128phase. Notwithstanding that, Target Code does not include data in any
129format that is used as a compiler intermediate representation, or used
130for producing a compiler intermediate representation.
131
132The "Compilation Process" transforms code entirely represented in
133non-intermediate languages designed for human-written code, and/or in
134Java Virtual Machine byte code, into Target Code. Thus, for example,
135use of source code generators and preprocessors need not be considered
136part of the Compilation Process, since the Compilation Process can be
137understood as starting with the output of the generators or
138preprocessors.
139
140A Compilation Process is "Eligible" if it is done using GCC, alone or
141with other GPL-compatible software, or if it is done without using any
142work based on GCC. For example, using non-GPL-compatible Software to
143optimize any GCC intermediate representations would not qualify as an
144Eligible Compilation Process.
145
1461. Grant of Additional Permission.
147
148You have permission to propagate a work of Target Code formed by
149combining the Runtime Library with Independent Modules, even if such
150propagation would otherwise violate the terms of GPLv3, provided that
151all Target Code was generated by Eligible Compilation Processes. You
152may then convey such a combination under terms of your choice,
153consistent with the licensing of the Independent Modules.
154
1552. No Weakening of GCC Copyleft.
156
157The availability of this Exception does not imply any general
158presumption that third-party software is unaffected by the copyleft
159requirements of the license of GCC.
160    </literallayout>
161
162    <para>
163      Hopefully that text is self-explanatory.  If it isn't, you need to speak
164      to your lawyer, or the Free Software Foundation.
165    </para>
166    </section>
167
168    <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info>
169
170
171    <para>
172      The documentation shipped with the library and made available over
173      the web, excluding the pages generated from source comments, are
174      copyrighted by the Free Software Foundation, and placed under the
175      <link linkend="appendix.gfdl-1.3"> GNU Free Documentation
176      License version 1.3</link>.  There are no Front-Cover Texts, no
177      Back-Cover Texts, and no Invariant Sections.
178    </para>
179
180    <para>
181      For documentation generated by doxygen or other automated tools
182      via processing source code comments and markup, the original source
183      code license applies to the generated files. Thus, the doxygen
184      documents are licensed <link linkend="appendix.gpl-3.0">GPL</link>.
185    </para>
186
187    <para>
188      If you plan on making copies of the documentation, please let us know.
189      We can probably offer suggestions.
190    </para>
191    </section>
192
193  </section>
194
195  <!-- Section 03 : Known Bugs -->
196  <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info>
197    <?dbhtml filename="bugs.html"?>
198
199
200    <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info>
201
202    <para>
203      Information on known bugs, details on efforts to fix them, and
204      fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/bugs/">GCC bug tracking system</link>,
205      under the component <quote>libstdc++</quote>.
206    </para>
207    </section>
208
209    <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info>
210
211      <para>
212	Everybody's got issues.  Even the C++ Standard Library.
213      </para>
214      <para>
215	The Library Working Group, or LWG, is the ISO subcommittee responsible
216	for making changes to the library.  They periodically publish an
217	Issues List containing problems and possible solutions.  As they reach
218	a consensus on proposed solutions, we often incorporate the solution.
219      </para>
220      <para>
221	Here are the issues which have resulted in code changes to the library.
222	The links are to the full version of the Issues List.
223        You can read the full version online
224	at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++
225	Committee homepage</link>.
226      </para>
227      <para>
228	If a DR is not listed here, we may simply not have gotten to
229	it yet; feel free to submit a patch.  Search the
230        <filename class="directory">include</filename> and
231        <filename class="directory">src</filename>
232	directories for appearances of
233	<constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
234	of style.  Note that we usually do not make changes to the
235	code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#DR">DR</link> status.
236      </para>
237
238      <variablelist>
239    <varlistentry xml:id="manual.bugs.dr5"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#5">5</link>:
240	<emphasis>string::compare specification questionable</emphasis>
241    </term>
242    <listitem><para>This should be two overloaded functions rather than a single function.
243    </para></listitem></varlistentry>
244
245    <varlistentry xml:id="manual.bugs.dr17"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#17">17</link>:
246	<emphasis>Bad bool parsing</emphasis>
247    </term>
248    <listitem><para>Apparently extracting Boolean values was messed up...
249    </para></listitem></varlistentry>
250
251    <varlistentry xml:id="manual.bugs.dr19"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#19">19</link>:
252	<emphasis>"Noconv" definition too vague</emphasis>
253    </term>
254    <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are
255	no changes to the values in <code>[to, to_limit)</code>.
256    </para></listitem></varlistentry>
257
258    <varlistentry xml:id="manual.bugs.dr22"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#22">22</link>:
259	<emphasis>Member open vs flags</emphasis>
260    </term>
261    <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
262    </para></listitem></varlistentry>
263
264    <varlistentry xml:id="manual.bugs.dr23"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#23">23</link>:
265	<emphasis>Num_get overflow result</emphasis>
266    </term>
267    <listitem><para>Implement the proposed resolution.
268    </para></listitem></varlistentry>
269
270    <varlistentry xml:id="manual.bugs.dr25"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#25">25</link>:
271	<emphasis>String operator&lt;&lt; uses width() value wrong</emphasis>
272    </term>
273    <listitem><para>Padding issues.
274    </para></listitem></varlistentry>
275
276    <varlistentry xml:id="manual.bugs.dr48"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#48">48</link>:
277	<emphasis>Use of non-existent exception constructor</emphasis>
278    </term>
279    <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead.
280    </para></listitem></varlistentry>
281
282    <varlistentry xml:id="manual.bugs.dr49"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#49">49</link>:
283	<emphasis>Underspecification of ios_base::sync_with_stdio</emphasis>
284    </term>
285    <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization.
286    </para></listitem></varlistentry>
287
288    <varlistentry xml:id="manual.bugs.dr50"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#50">50</link>:
289	<emphasis>Copy constructor and assignment operator of ios_base</emphasis>
290    </term>
291    <listitem><para>These members functions are declared <code>private</code> and are
292	thus inaccessible.  Specifying the correct semantics of
293	"copying stream state" was deemed too complicated.
294    </para></listitem></varlistentry>
295
296    <varlistentry xml:id="manual.bugs.dr60"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#60">60</link>:
297	<emphasis>What is a formatted input function?</emphasis>
298    </term>
299    <listitem><para>This DR made many widespread changes to <code>basic_istream</code>
300	and <code>basic_ostream</code> all of which have been implemented.
301    </para></listitem></varlistentry>
302
303    <varlistentry xml:id="manual.bugs.dr63"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#63">63</link>:
304	<emphasis>Exception-handling policy for unformatted output</emphasis>
305    </term>
306    <listitem><para>Make the policy consistent with that of formatted input, unformatted
307	input, and formatted output.
308    </para></listitem></varlistentry>
309
310    <varlistentry xml:id="manual.bugs.dr68"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#68">68</link>:
311	<emphasis>Extractors for char* should store null at end</emphasis>
312    </term>
313    <listitem><para>And they do now.  An editing glitch in the last item in the list of
314	[27.6.1.2.3]/7.
315    </para></listitem></varlistentry>
316
317    <varlistentry xml:id="manual.bugs.dr74"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#74">74</link>:
318	<emphasis>Garbled text for codecvt::do_max_length</emphasis>
319    </term>
320    <listitem><para>The text of the standard was gibberish.  Typos gone rampant.
321    </para></listitem></varlistentry>
322
323    <varlistentry xml:id="manual.bugs.dr75"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#75">75</link>:
324	<emphasis>Contradiction in codecvt::length's argument types</emphasis>
325    </term>
326    <listitem><para>Change the first parameter to <code>stateT&amp;</code> and implement
327	the new effects paragraph.
328    </para></listitem></varlistentry>
329
330    <varlistentry xml:id="manual.bugs.dr83"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#83">83</link>:
331	<emphasis>string::npos vs. string::max_size()</emphasis>
332    </term>
333    <listitem><para>Safety checks on the size of the string should test against
334	<code>max_size()</code> rather than <code>npos</code>.
335    </para></listitem></varlistentry>
336
337    <varlistentry xml:id="manual.bugs.dr90"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#90">90</link>:
338	<emphasis>Incorrect description of operator&gt;&gt; for strings</emphasis>
339    </term>
340    <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
341	replaced by <code>isspace(c,is.getloc())</code>.
342    </para></listitem></varlistentry>
343
344    <varlistentry xml:id="manual.bugs.dr91"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#91">91</link>:
345	<emphasis>Description of operator&gt;&gt; and getline() for string&lt;&gt;
346	    might cause endless loop</emphasis>
347    </term>
348    <listitem><para>They behave as a formatted input function and as an unformatted
349	input function, respectively (except that <code>getline</code> is
350	not required to set <code>gcount</code>).
351    </para></listitem></varlistentry>
352
353    <varlistentry xml:id="manual.bugs.dr103"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#103">103</link>:
354	<emphasis>set::iterator is required to be modifiable, but this allows
355	    modification of keys.</emphasis>
356    </term>
357    <listitem><para>For associative containers where the value type is the same as
358	the key type, both <code>iterator</code> and <code>const_iterator
359	</code> are constant iterators.
360    </para></listitem></varlistentry>
361
362    <varlistentry xml:id="manual.bugs.dr109"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#109">109</link>:
363	<emphasis>Missing binders for non-const sequence elements</emphasis>
364    </term>
365    <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an
366	<code>operator()</code> taking a non-const parameter.
367    </para></listitem></varlistentry>
368
369    <varlistentry xml:id="manual.bugs.dr110"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#110">110</link>:
370	<emphasis>istreambuf_iterator::equal not const</emphasis>
371    </term>
372    <listitem><para>This was not a const member function.  Note that the DR says to
373	replace the function with a const one; we have instead provided an
374	overloaded version with identical contents.
375    </para></listitem></varlistentry>
376
377    <varlistentry xml:id="manual.bugs.dr117"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#117">117</link>:
378	<emphasis>basic_ostream uses nonexistent num_put member functions</emphasis>
379    </term>
380    <listitem><para><code>num_put::put()</code> was overloaded on the wrong types.
381    </para></listitem></varlistentry>
382
383    <varlistentry xml:id="manual.bugs.dr118"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#118">118</link>:
384	<emphasis>basic_istream uses nonexistent num_get member functions</emphasis>
385    </term>
386    <listitem><para>Same as 117, but for <code>num_get::get()</code>.
387    </para></listitem></varlistentry>
388
389    <varlistentry xml:id="manual.bugs.dr129"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#129">129</link>:
390	<emphasis>Need error indication from seekp() and seekg()</emphasis>
391    </term>
392    <listitem><para>These functions set <code>failbit</code> on error now.
393    </para></listitem></varlistentry>
394
395    <varlistentry xml:id="manual.bugs.dr130"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#130">130</link>:
396	<emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis>
397    </term>
398    <listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>.
399    </para></listitem></varlistentry>
400
401    <varlistentry xml:id="manual.bugs.dr136"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#136">136</link>:
402	<emphasis>seekp, seekg setting wrong streams?</emphasis>
403    </term>
404    <listitem><para><code>seekp</code> should only set the output stream, and
405	<code>seekg</code> should only set the input stream.
406    </para></listitem></varlistentry>
407
408<!--<varlistentry><term><ulink url="&DR;#159">159</ulink>:
409	<emphasis>Strange use of underflow()</emphasis>
410    </term>
411    <listitem><para>In fstream.tcc, the basic_filebuf&lt;&gt;::showmanyc() function
412	should probably not be calling <code>underflow()</code>.
413    </para></listitem></varlistentry> -->
414
415    <varlistentry xml:id="manual.bugs.dr167"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#167">167</link>:
416	<emphasis>Improper use of traits_type::length()</emphasis>
417    </term>
418    <listitem><para><code>op&lt;&lt;</code> with a <code>const char*</code> was
419	calculating an incorrect number of characters to write.
420    </para></listitem></varlistentry>
421
422    <varlistentry xml:id="manual.bugs.dr169"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#169">169</link>:
423	<emphasis>Bad efficiency of overflow() mandated</emphasis>
424    </term>
425    <listitem><para>Grow efficiently the internal array object.
426    </para></listitem></varlistentry>
427
428    <varlistentry xml:id="manual.bugs.dr171"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#171">171</link>:
429	<emphasis>Strange seekpos() semantics due to joint position</emphasis>
430    </term>
431    <listitem><para>Quite complex to summarize...
432    </para></listitem></varlistentry>
433
434    <varlistentry xml:id="manual.bugs.dr181"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#181">181</link>:
435	<emphasis>make_pair() unintended behavior</emphasis>
436    </term>
437    <listitem><para>This function used to take its arguments as reference-to-const, now
438	it copies them (pass by value).
439    </para></listitem></varlistentry>
440
441    <varlistentry xml:id="manual.bugs.dr195"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#195">195</link>:
442	<emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis>
443    </term>
444    <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace.
445    </para></listitem></varlistentry>
446
447    <varlistentry xml:id="manual.bugs.dr206"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#206">206</link>:
448	<emphasis><code>operator new(size_t, nothrow)</code> may become
449          unlinked to ordinary <code>operator new</code> if ordinary
450          version replaced
451        </emphasis>
452    </term>
453    <listitem><para>The <code>nothrow</code> forms of new and delete were
454      changed to call the throwing forms, handling any exception by
455      catching it and returning a null pointer.
456    </para></listitem></varlistentry>
457
458    <varlistentry xml:id="manual.bugs.dr211"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#211">211</link>:
459	<emphasis>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</emphasis>
460    </term>
461    <listitem><para>If nothing is extracted into the string, <code>op&gt;&gt;</code> now
462	sets <code>failbit</code> (which can cause an exception, etc., etc.).
463    </para></listitem></varlistentry>
464
465    <varlistentry xml:id="manual.bugs.dr214"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#214">214</link>:
466	<emphasis>set::find() missing const overload</emphasis>
467    </term>
468    <listitem><para>Both <code>set</code> and <code>multiset</code> were missing
469	overloaded find, lower_bound, upper_bound, and equal_range functions
470	for const instances.
471    </para></listitem></varlistentry>
472
473    <varlistentry xml:id="manual.bugs.dr231"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#231">231</link>:
474	<emphasis>Precision in iostream?</emphasis>
475    </term>
476    <listitem><para>For conversion from a floating-point type, <code>str.precision()</code>
477	is specified in the conversion specification.
478    </para></listitem></varlistentry>
479
480    <varlistentry xml:id="manual.bugs.dr233"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#233">233</link>:
481	<emphasis>Insertion hints in associative containers</emphasis>
482    </term>
483    <listitem><para>Implement N1780, first check before then check after, insert as close
484	to hint as possible.
485    </para></listitem></varlistentry>
486
487    <varlistentry xml:id="manual.bugs.dr235"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#235">235</link>:
488	<emphasis>No specification of default ctor for reverse_iterator</emphasis>
489    </term>
490    <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor.
491	However, no specification is given what this constructor should do.
492    </para></listitem></varlistentry>
493
494    <varlistentry xml:id="manual.bugs.dr241"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#241">241</link>:
495	<emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis>
496    </term>
497    <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing
498	one for input_iterator/output_iterator to not rely on Assignability.
499    </para></listitem></varlistentry>
500
501    <varlistentry xml:id="manual.bugs.dr243"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#243">243</link>:
502	<emphasis>get and getline when sentry reports failure</emphasis>
503    </term>
504    <listitem><para>Store a null character only if the character array has a non-zero size.
505    </para></listitem></varlistentry>
506
507    <varlistentry xml:id="manual.bugs.dr251"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#251">251</link>:
508	<emphasis>basic_stringbuf missing allocator_type</emphasis>
509    </term>
510    <listitem><para>This nested typedef was originally not specified.
511    </para></listitem></varlistentry>
512
513    <varlistentry xml:id="manual.bugs.dr253"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#253">253</link>:
514	<emphasis>valarray helper functions are almost entirely useless</emphasis>
515    </term>
516    <listitem><para>Make the copy constructor and copy-assignment operator declarations
517	public in gslice_array, indirect_array, mask_array, slice_array; provide
518	definitions.
519    </para></listitem></varlistentry>
520
521    <varlistentry xml:id="manual.bugs.dr265"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#265">265</link>:
522	<emphasis>std::pair::pair() effects overly restrictive</emphasis>
523    </term>
524    <listitem><para>The default ctor would build its members from copies of temporaries;
525	now it simply uses their respective default ctors.
526    </para></listitem></varlistentry>
527
528    <varlistentry xml:id="manual.bugs.dr266"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#266">266</link>:
529	<emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis>
530    </term>
531    <listitem><para>The <code>bad_</code>* classes no longer have destructors (they
532	are trivial), since no description of them was ever given.
533    </para></listitem></varlistentry>
534
535    <varlistentry xml:id="manual.bugs.dr271"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#271">271</link>:
536	<emphasis>basic_iostream missing typedefs</emphasis>
537    </term>
538    <listitem><para>The typedefs it inherits from its base classes can't be used, since
539	(for example) <code>basic_iostream&lt;T&gt;::traits_type</code> is ambiguous.
540    </para></listitem></varlistentry>
541
542    <varlistentry xml:id="manual.bugs.dr275"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#275">275</link>:
543	<emphasis>Wrong type in num_get::get() overloads</emphasis>
544    </term>
545    <listitem><para>Similar to 118.
546    </para></listitem></varlistentry>
547
548    <varlistentry xml:id="manual.bugs.dr280"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#280">280</link>:
549	<emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis>
550    </term>
551    <listitem><para>Add global functions with two template parameters.
552	(NB: not added for now a templated assignment operator)
553    </para></listitem></varlistentry>
554
555    <varlistentry xml:id="manual.bugs.dr292"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#292">292</link>:
556	<emphasis>Effects of a.copyfmt (a)</emphasis>
557    </term>
558    <listitem><para>If <code>(this == &amp;rhs)</code> do nothing.
559    </para></listitem></varlistentry>
560
561    <varlistentry xml:id="manual.bugs.dr300"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#300">300</link>:
562	<emphasis>List::merge() specification incomplete</emphasis>
563    </term>
564    <listitem><para>If <code>(this == &amp;x)</code> do nothing.
565    </para></listitem></varlistentry>
566
567    <varlistentry xml:id="manual.bugs.dr303"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#303">303</link>:
568	<emphasis>Bitset input operator underspecified</emphasis>
569    </term>
570    <listitem><para>Basically, compare the input character to
571		    <code>is.widen(0)</code> and <code>is.widen(1)</code>.
572    </para></listitem></varlistentry>
573
574    <varlistentry xml:id="manual.bugs.dr305"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#305">305</link>:
575	<emphasis>Default behavior of codecvt&lt;wchar_t, char,
576		  mbstate_t&gt;::length()</emphasis>
577    </term>
578    <listitem><para>Do not specify what <code>codecvt&lt;wchar_t, char,
579		    mbstate_t&gt;::do_length</code> must return.
580    </para></listitem></varlistentry>
581
582    <varlistentry xml:id="manual.bugs.dr328"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#328">328</link>:
583	<emphasis>Bad sprintf format modifier in
584		  money_put&lt;&gt;::do_put()</emphasis>
585    </term>
586    <listitem><para>Change the format string to "%.0Lf".
587    </para></listitem></varlistentry>
588
589    <varlistentry xml:id="manual.bugs.dr365"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#365">365</link>:
590	<emphasis>Lack of const-qualification in clause 27</emphasis>
591    </term>
592    <listitem><para>Add const overloads of <code>is_open</code>.
593    </para></listitem></varlistentry>
594
595    <varlistentry xml:id="manual.bugs.dr387"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#387">387</link>:
596	<emphasis>std::complex over-encapsulated</emphasis>
597    </term>
598    <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
599		    members;  in C++11 mode, also adjust the existing
600		    <code>real()</code> and <code>imag()</code> members and
601		    free functions.
602    </para></listitem></varlistentry>
603
604    <varlistentry xml:id="manual.bugs.dr389"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#389">389</link>:
605	<emphasis>Const overload of valarray::operator[] returns
606		  by value</emphasis>
607    </term>
608    <listitem><para>Change it to return a <code>const T&amp;</code>.
609    </para></listitem></varlistentry>
610
611    <varlistentry xml:id="manual.bugs.dr396"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#396">396</link>:
612	<emphasis>what are characters zero and one</emphasis>
613    </term>
614    <listitem><para>Implement the proposed resolution.
615    </para></listitem></varlistentry>
616
617    <varlistentry xml:id="manual.bugs.dr402"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#402">402</link>:
618	<emphasis>Wrong new expression in [some_]allocator::construct</emphasis>
619    </term>
620    <listitem><para>Replace "new" with "::new".
621    </para></listitem></varlistentry>
622
623    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#408">408</link>:
624	<emphasis>
625	Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?
626	</emphasis>
627    </term>
628    <listitem><para>Tweak the debug-mode checks in _Safe_iterator.
629    </para></listitem></varlistentry>
630
631    <varlistentry xml:id="manual.bugs.dr409"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#409">409</link>:
632	<emphasis>Closing an fstream should clear the error state</emphasis>
633    </term>
634    <listitem><para>Have <code>open</code> clear the error flags.
635    </para></listitem></varlistentry>
636
637    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#431">431</link>:
638	<emphasis>Swapping containers with unequal allocators</emphasis>
639    </term>
640    <listitem><para>Implement Option 3, as per N1599.
641    </para></listitem></varlistentry>
642
643    <varlistentry xml:id="manual.bugs.dr432"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#432">432</link>:
644	<emphasis>stringbuf::overflow() makes only one write position
645	    available</emphasis>
646    </term>
647    <listitem><para>Implement the resolution, beyond DR 169.
648    </para></listitem></varlistentry>
649
650    <varlistentry xml:id="manual.bugs.dr434"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#434">434</link>:
651	<emphasis>bitset::to_string() hard to use</emphasis>
652    </term>
653    <listitem><para>Add three overloads, taking fewer template arguments.
654    </para></listitem></varlistentry>
655
656    <varlistentry xml:id="manual.bugs.dr438"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#438">438</link>:
657	<emphasis>Ambiguity in the "do the right thing" clause</emphasis>
658    </term>
659    <listitem><para>Implement the resolution, basically cast less.
660    </para></listitem></varlistentry>
661
662    <varlistentry xml:id="manual.bugs.dr445"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#445">445</link>:
663	<emphasis>iterator_traits::reference unspecified for some iterator categories</emphasis>
664    </term>
665    <listitem><para>Change <code>istreambuf_iterator::reference</code> in C++11 mode.
666    </para></listitem></varlistentry>
667
668    <varlistentry xml:id="manual.bugs.dr453"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#453">453</link>:
669	<emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis>
670    </term>
671    <listitem><para>Don't fail if the next pointer is null and newoff is zero.
672    </para></listitem></varlistentry>
673
674    <varlistentry xml:id="manual.bugs.dr455"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#455">455</link>:
675	<emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis>
676    </term>
677    <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout.
678    </para></listitem></varlistentry>
679
680    <varlistentry xml:id="manual.bugs.dr464"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#464">464</link>:
681	<emphasis>Suggestion for new member functions in standard containers</emphasis>
682    </term>
683    <listitem><para>Add <code>data()</code> to <code>std::vector</code> and
684	<code>at(const key_type&amp;)</code> to <code>std::map</code>.
685    </para></listitem></varlistentry>
686
687    <varlistentry xml:id="manual.bugs.dr467"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#467">467</link>:
688	<emphasis>char_traits::lt(), compare(), and memcmp()</emphasis>
689    </term>
690    <listitem><para>Change <code>lt</code>.
691    </para></listitem></varlistentry>
692
693    <varlistentry xml:id="manual.bugs.dr508"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#508">508</link>:
694	<emphasis>Bad parameters for ranlux64_base_01</emphasis>
695    </term>
696    <listitem><para>Fix the parameters.
697    </para></listitem></varlistentry>
698
699    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#512">512</link>:
700	<emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis>
701    </term>
702    <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it.
703    </para></listitem></varlistentry>
704
705    <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#526">526</link>:
706	<emphasis>Is it undefined if a function in the standard changes in
707	    parameters?</emphasis>
708    </term>
709    <listitem><para>Use &amp;value.
710    </para></listitem></varlistentry>
711
712    <varlistentry xml:id="manual.bugs.dr538"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#538">538</link>:
713	<emphasis>241 again: Does unique_copy() require CopyConstructible
714	    and Assignable?</emphasis>
715    </term>
716    <listitem><para>In case of input_iterator/output_iterator rely on Assignability of
717	input_iterator' value_type.
718    </para></listitem></varlistentry>
719
720    <varlistentry xml:id="manual.bugs.dr539"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#539">539</link>:
721	<emphasis>partial_sum and adjacent_difference should mention
722	    requirements</emphasis>
723    </term>
724    <listitem><para>We were almost doing the right thing, just use std::move
725	in adjacent_difference.
726    </para></listitem></varlistentry>
727
728    <varlistentry xml:id="manual.bugs.dr541"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#541">541</link>:
729	<emphasis>shared_ptr template assignment and void</emphasis>
730    </term>
731    <listitem><para>Add an auto_ptr&lt;void&gt; specialization.
732    </para></listitem></varlistentry>
733
734    <varlistentry xml:id="manual.bugs.dr543"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#543">543</link>:
735	<emphasis>valarray slice default constructor</emphasis>
736    </term>
737    <listitem><para>Follow the straightforward proposed resolution.
738    </para></listitem></varlistentry>
739
740    <varlistentry xml:id="manual.bugs.dr550"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#550">550</link>:
741	<emphasis>What should the return type of pow(float,int) be?</emphasis>
742    </term>
743    <listitem><para>In C++11 mode, remove the pow(float,int), etc., signatures.
744    </para></listitem></varlistentry>
745
746    <varlistentry xml:id="manual.bugs.dr586"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#586">586</link>:
747	<emphasis>string inserter not a formatted function</emphasis>
748    </term>
749    <listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
750    </para></listitem></varlistentry>
751
752    <varlistentry xml:id="manual.bugs.dr596"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#596">596</link>:
753	<emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis>
754    </term>
755    <listitem><para>Add the missing modes to fopen_mode.
756    </para></listitem></varlistentry>
757
758    <varlistentry xml:id="manual.bugs.dr630"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#630">630</link>:
759	<emphasis>arrays of valarray</emphasis>
760    </term>
761    <listitem><para>Implement the simple resolution.
762    </para></listitem></varlistentry>
763
764    <varlistentry xml:id="manual.bugs.dr660"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#660">660</link>:
765	<emphasis>Missing bitwise operations</emphasis>
766    </term>
767    <listitem><para>Add the missing operations.
768    </para></listitem></varlistentry>
769
770    <varlistentry xml:id="manual.bugs.dr691"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#691">691</link>:
771	<emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
772    </term>
773    <listitem><para>In C++11 mode add cbegin(size_type) and cend(size_type)
774		    to the unordered containers.
775    </para></listitem></varlistentry>
776
777    <varlistentry xml:id="manual.bugs.dr693"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#693">693</link>:
778	<emphasis>std::bitset::all() missing</emphasis>
779    </term>
780    <listitem><para>Add it, consistently with the discussion.
781    </para></listitem></varlistentry>
782
783    <varlistentry xml:id="manual.bugs.dr695"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#695">695</link>:
784	<emphasis>ctype&lt;char&gt;::classic_table() not accessible</emphasis>
785    </term>
786    <listitem><para>Make the member functions table and classic_table public.
787    </para></listitem></varlistentry>
788
789    <varlistentry xml:id="manual.bugs.dr696"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#696">696</link>:
790	<emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis>
791    </term>
792    <listitem><para>Implement the straightforward resolution.
793    </para></listitem></varlistentry>
794
795    <varlistentry xml:id="manual.bugs.dr761"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#761">761</link>:
796	<emphasis>unordered_map needs an at() member function</emphasis>
797    </term>
798    <listitem><para>In C++11 mode, add at() and at() const.
799    </para></listitem></varlistentry>
800
801    <varlistentry xml:id="manual.bugs.dr775"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#775">775</link>:
802	<emphasis>Tuple indexing should be unsigned?</emphasis>
803    </term>
804    <listitem><para>Implement the int -&gt; size_t replacements.
805    </para></listitem></varlistentry>
806
807    <varlistentry xml:id="manual.bugs.dr776"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#776">776</link>:
808	<emphasis>Undescribed assign function of std::array</emphasis>
809    </term>
810    <listitem><para>In C++11 mode, remove assign, add fill.
811    </para></listitem></varlistentry>
812
813    <varlistentry xml:id="manual.bugs.dr781"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#781">781</link>:
814	<emphasis>std::complex should add missing C99 functions</emphasis>
815    </term>
816    <listitem><para>In C++11 mode, add std::proj.
817    </para></listitem></varlistentry>
818
819    <varlistentry xml:id="manual.bugs.dr809"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#809">809</link>:
820	<emphasis>std::swap should be overloaded for array types</emphasis>
821    </term>
822    <listitem><para>Add the overload.
823    </para></listitem></varlistentry>
824
825    <varlistentry xml:id="manual.bugs.dr853"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#853">853</link>:
826	<emphasis>to_string needs updating with zero and one</emphasis>
827    </term>
828    <listitem><para>Update / add the signatures.
829    </para></listitem></varlistentry>
830
831    <varlistentry xml:id="manual.bugs.dr865"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#865">865</link>:
832	<emphasis>More algorithms that throw away information</emphasis>
833    </term>
834    <listitem><para>The traditional HP / SGI return type and value is blessed
835		    by the resolution of the DR.
836    </para></listitem></varlistentry>
837
838    <varlistentry xml:id="manual.bugs.dr1339"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#1339">1339</link>:
839       <emphasis>uninitialized_fill_n should return the end of its range</emphasis>
840    </term>
841    <listitem><para>Return the end of the filled range.
842    </para></listitem></varlistentry>
843
844    <varlistentry xml:id="manual.bugs.dr2021"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2021">2021</link>:
845       <emphasis>Further incorrect uses of <code>result_of</code></emphasis>
846    </term>
847    <listitem><para>Correctly decay types in signature of <code>std::async</code>.
848    </para></listitem></varlistentry>
849
850    <varlistentry xml:id="manual.bugs.dr2049"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2049">2049</link>:
851	<emphasis><code>is_destructible</code> underspecified</emphasis>
852    </term>
853    <listitem><para>Handle non-object types.
854    </para></listitem></varlistentry>
855
856    <varlistentry xml:id="manual.bugs.dr2056"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2056">2056</link>:
857	<emphasis>future_errc enums start with value 0 (invalid value for broken_promise)</emphasis>
858    </term>
859    <listitem><para>Reorder enumerators.
860    </para></listitem></varlistentry>
861
862    <varlistentry xml:id="manual.bugs.dr2059"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2059">2059</link>:
863	<emphasis>C++0x ambiguity problem with map::erase</emphasis>
864    </term>
865    <listitem><para>Add additional overloads.
866    </para></listitem></varlistentry>
867
868    <varlistentry xml:id="manual.bugs.dr2062"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2062">2062</link>:
869	<emphasis>2062. Effect contradictions w/o no-throw guarantee of <code>std::function</code> swaps</emphasis>
870    </term>
871    <listitem><para>Add <code>noexcept</code> to swap functions.
872    </para></listitem></varlistentry>
873
874    <varlistentry xml:id="manual.bugs.dr2063"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2063">2063</link>:
875	<emphasis>Contradictory requirements for string move assignment</emphasis>
876    </term>
877    <listitem><para>Respect propagation trait for move assignment.
878    </para></listitem></varlistentry>
879
880    <varlistentry xml:id="manual.bugs.dr2064"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2064">2064</link>:
881	<emphasis>More noexcept issues in basic_string</emphasis>
882    </term>
883    <listitem><para>Add noexcept to the comparison operators.
884    </para></listitem></varlistentry>
885
886    <varlistentry xml:id="manual.bugs.dr2067"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2067">2067</link>:
887	<emphasis>packaged_task should have deleted copy c'tor with const parameter</emphasis>
888    </term>
889    <listitem><para>Fix signatures.
890    </para></listitem></varlistentry>
891
892    <varlistentry xml:id="manual.bugs.dr2101"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2101">2101</link>:
893	<emphasis>Some transformation types can produce impossible types</emphasis>
894    </term>
895    <listitem><para>Use the referenceable type concept.
896    </para></listitem></varlistentry>
897
898    <varlistentry xml:id="manual.bugs.dr2106"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2106">2106</link>:
899	<emphasis>move_iterator wrapping iterators returning prvalues</emphasis>
900    </term>
901    <listitem><para>Change the <code>reference</code> type.
902    </para></listitem></varlistentry>
903
904    <varlistentry xml:id="manual.bugs.dr2108"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2108">2108</link>:
905	<emphasis>No way to identify allocator types that always compare equal</emphasis>
906    </term>
907    <listitem><para>Define and use <code>is_always_equal</code> even for C++11.
908    </para></listitem></varlistentry>
909
910    <varlistentry xml:id="manual.bugs.dr2118"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2118">2118</link>:
911	<emphasis><code>unique_ptr</code> for array does not support cv qualification conversion of actual argument</emphasis>
912    </term>
913    <listitem><para>Adjust constraints to allow safe conversions.
914    </para></listitem></varlistentry>
915
916    <varlistentry xml:id="manual.bugs.dr2127"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2127">2127</link>:
917	<emphasis>Move-construction with <code>raw_storage_iterator</code></emphasis>
918    </term>
919    <listitem><para>Add assignment operator taking an rvalue.
920    </para></listitem></varlistentry>
921
922    <varlistentry xml:id="manual.bugs.dr2132"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2132">2132</link>:
923	<emphasis><code>std::function</code> ambiguity</emphasis>
924    </term>
925    <listitem><para>Constrain the constructor to only accept callable types.
926    </para></listitem></varlistentry>
927
928    <varlistentry xml:id="manual.bugs.dr2141"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2141">2141</link>:
929	<emphasis><code>common_type</code> trait produces reference types</emphasis>
930    </term>
931    <listitem><para>Use <code>decay</code> for the result type.
932    </para></listitem></varlistentry>
933
934    <varlistentry xml:id="manual.bugs.dr2144"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2144">2144</link>:
935	<emphasis>Missing <code>noexcept</code> specification in <code>type_index</code></emphasis>
936    </term>
937    <listitem><para>Add <code>noexcept</code>
938    </para></listitem></varlistentry>
939
940    <varlistentry xml:id="manual.bugs.dr2145"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2145">2145</link>:
941	<emphasis><code>error_category</code> default constructor</emphasis>
942    </term>
943    <listitem><para>Declare a public constexpr constructor.
944    </para></listitem></varlistentry>
945
946    <varlistentry xml:id="manual.bugs.dr2162"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2162">2162</link>:
947	<emphasis><code>allocator_traits::max_size</code> missing <code>noexcept</code></emphasis>
948    </term>
949    <listitem><para>Add <code>noexcept</code>.
950    </para></listitem></varlistentry>
951
952    <varlistentry xml:id="manual.bugs.dr2187"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2187">2187</link>:
953	<emphasis><code>vector&lt;bool&gt;</code> is missing <code>emplace</code> and <code>emplace_back</code> member functions</emphasis>
954    </term>
955    <listitem><para>Add <code>emplace</code> and <code>emplace_back</code> member functions.
956    </para></listitem></varlistentry>
957
958    <varlistentry xml:id="manual.bugs.dr2192"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2192">2192</link>:
959	<emphasis>Validity and return type of <code>std::abs(0u)</code> is unclear</emphasis>
960    </term>
961    <listitem><para>Move all declarations to a common header and remove the
962    generic <code>abs</code> which accepted unsigned arguments.
963    </para></listitem></varlistentry>
964
965    <varlistentry xml:id="manual.bugs.dr2196"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2196">2196</link>:
966	<emphasis>Specification of <code>is_*[copy/move]_[constructible/assignable]</code> unclear for non-referencable types</emphasis>
967    </term>
968    <listitem><para>Use the referenceable type concept.
969    </para></listitem></varlistentry>
970
971    <varlistentry xml:id="manual.bugs.dr2212"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2212">2212</link>:
972	<emphasis><code>tuple_size</code> for <code>const pair</code> request <code>&lt;tuple&gt;</code> header</emphasis>
973    </term>
974    <listitem><para>The <code>tuple_size</code> and <code>tuple_element</code>
975    partial specializations are defined in <code>&lt;utility&gt;</code> which
976    is included by <code>&lt;array&gt;</code>.
977    </para></listitem></varlistentry>
978
979    <varlistentry xml:id="manual.bugs.dr2296"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2296">2296</link>:
980	<emphasis><code>std::addressof</code> should be constexpr</emphasis>
981    </term>
982    <listitem><para>Use <code>__builtin_addressof</code> and add
983    <code>constexpr</code> to <code>addressof</code> for C++17 and later.
984    </para></listitem></varlistentry>
985
986    <varlistentry xml:id="manual.bugs.dr2306"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2306">2306</link>:
987	<emphasis><code>match_results::reference</code> should be <code>value_type&amp;</code>, not <code>const value_type&amp;</code></emphasis>
988    </term>
989    <listitem><para>Change typedef.
990    </para></listitem></varlistentry>
991
992    <varlistentry xml:id="manual.bugs.dr2313"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2313">2313</link>:
993	<emphasis><code>tuple_size</code> should always derive from <code>integral_constant&lt;size_t, N&gt;</code></emphasis>
994    </term>
995    <listitem><para>Update definitions of the partial specializations for const and volatile types.
996    </para></listitem></varlistentry>
997
998    <varlistentry xml:id="manual.bugs.dr2328"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2328">2328</link>:
999       <emphasis>Rvalue stream extraction should use perfect forwarding</emphasis>
1000    </term>
1001    <listitem><para>Use perfect forwarding for right operand.
1002    </para></listitem></varlistentry>
1003
1004    <varlistentry xml:id="manual.bugs.dr2329"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2329">2329</link>:
1005       <emphasis><code>regex_match()/regex_search()</code> with <code>match_results</code> should forbid temporary strings</emphasis>
1006    </term>
1007    <listitem><para>Add deleted overloads for rvalue strings.
1008    </para></listitem></varlistentry>
1009
1010    <varlistentry xml:id="manual.bugs.dr2332"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2332">2332</link>:
1011       <emphasis><code>regex_iterator/regex_token_iterator</code> should forbid temporary regexes</emphasis>
1012    </term>
1013    <listitem><para>Add deleted constructors.
1014    </para></listitem></varlistentry>
1015
1016    <varlistentry xml:id="manual.bugs.dr2354"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2354">2332</link>:
1017       <emphasis>Unnecessary copying when inserting into maps with braced-init syntax</emphasis>
1018    </term>
1019    <listitem><para>Add overloads of <code>insert</code> taking <code>value_type&amp;&amp;</code> rvalues.
1020    </para></listitem></varlistentry>
1021
1022    <varlistentry xml:id="manual.bugs.dr2399"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2399">2399</link>:
1023	<emphasis><code>shared_ptr</code>'s constructor from <code>unique_ptr</code> should be constrained</emphasis>
1024    </term>
1025    <listitem><para>Constrain the constructor to require convertibility.
1026    </para></listitem></varlistentry>
1027
1028    <varlistentry xml:id="manual.bugs.dr2400"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2400">2400</link>:
1029	<emphasis><code>shared_ptr</code>'s <code>get_deleter()</code> should use <code>addressof()</code></emphasis>
1030    </term>
1031    <listitem><para>Use <code>addressof</code>.
1032    </para></listitem></varlistentry>
1033
1034    <varlistentry xml:id="manual.bugs.dr2401"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2401">2401</link>:
1035	<emphasis><code>std::function</code> needs more <code>noexcept</code></emphasis>
1036    </term>
1037    <listitem><para>Add <code>noexcept</code> to the assignment and comparisons.
1038    </para></listitem></varlistentry>
1039
1040    <varlistentry xml:id="manual.bugs.dr2407"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2407">2407</link>:
1041       <emphasis><code>packaged_task(allocator_arg_t, const Allocator&amp;, F&amp;&amp;)</code>
1042                 should neither be constrained nor <code>explicit</code>
1043       </emphasis>
1044    </term>
1045    <listitem><para>Remove <code>explicit</code> from the constructor.
1046    </para></listitem></varlistentry>
1047
1048    <varlistentry xml:id="manual.bugs.dr2408"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2408">2408</link>:
1049       <emphasis>SFINAE-friendly
1050         <code>common_type</code>/<code>iterator_traits</code>
1051         is missing in C++14
1052       </emphasis>
1053    </term>
1054    <listitem><para>Make <code>iterator_traits</code> empty if any of the
1055      types is not present in the iterator.
1056      Make <code>common_type&lt;&gt;</code> empty.
1057    </para></listitem></varlistentry>
1058
1059    <varlistentry xml:id="manual.bugs.dr2415"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2415">2415</link>:
1060       <emphasis>Inconsistency between <code>unique_ptr</code> and <code>shared_ptr</code></emphasis>
1061    </term>
1062    <listitem><para>Create empty an <code>shared_ptr</code> from an empty
1063                    <code>unique_ptr</code>.
1064    </para></listitem></varlistentry>
1065
1066    <varlistentry xml:id="manual.bugs.dr2418"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2418">2418</link>:
1067       <emphasis><code>apply</code> does not work with member pointers</emphasis>
1068    </term>
1069    <listitem><para>Use <code>mem_fn</code> for member pointers.
1070    </para></listitem></varlistentry>
1071
1072    <varlistentry xml:id="manual.bugs.dr2440"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2440">2440</link>:
1073       <emphasis><code>seed_seq::size()</code> should be <code>noexcept</code></emphasis>
1074    </term>
1075    <listitem><para>Add <code>noexcept</code>.
1076    </para></listitem></varlistentry>
1077
1078    <varlistentry xml:id="manual.bugs.dr2441"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2441">2441</link>:
1079       <emphasis>Exact-width atomic typedefs should be provided</emphasis>
1080    </term>
1081    <listitem><para>Define the typedefs.
1082    </para></listitem></varlistentry>
1083
1084    <varlistentry xml:id="manual.bugs.dr2442"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2442">2442</link>:
1085       <emphasis><code>call_once()</code> shouldn't <code>DECAY_COPY()</code></emphasis>
1086    </term>
1087    <listitem><para>Remove indirection through call wrapper that made copies
1088    of arguments and forward arguments straight to <code>std::invoke</code>.
1089    </para></listitem></varlistentry>
1090
1091    <varlistentry xml:id="manual.bugs.dr2454"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2454">2454</link>:
1092       <emphasis>Add <code>raw_storage_iterator::base()</code> member
1093       </emphasis>
1094    </term>
1095    <listitem><para>Add the <code>base()</code> member function.
1096    </para></listitem></varlistentry>
1097
1098    <varlistentry xml:id="manual.bugs.dr2455"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2455">2455</link>:
1099       <emphasis>Allocator default construction should be allowed to throw
1100       </emphasis>
1101    </term>
1102    <listitem><para>Make <code>noexcept</code> specifications conditional.
1103    </para></listitem></varlistentry>
1104
1105    <varlistentry xml:id="manual.bugs.dr2458"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2458">2458</link>:
1106       <emphasis>N3778 and new library deallocation signatures
1107       </emphasis>
1108    </term>
1109    <listitem><para>Remove unused overloads.
1110    </para></listitem></varlistentry>
1111
1112    <varlistentry xml:id="manual.bugs.dr2459"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2459">2459</link>:
1113       <emphasis><code>std::polar</code> should require a non-negative rho
1114       </emphasis>
1115    </term>
1116    <listitem><para>Add debug mode assertion.
1117    </para></listitem></varlistentry>
1118
1119    <varlistentry xml:id="manual.bugs.dr2465"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2465">2465</link>:
1120       <emphasis>SFINAE-friendly <code>common_type</code> is nearly impossible
1121       to specialize correctly and regresses key functionality
1122       </emphasis>
1123    </term>
1124    <listitem><para>Detect whether <code>decay_t</code> changes either type
1125      and use the decayed types if so.
1126    </para></listitem></varlistentry>
1127
1128    <varlistentry xml:id="manual.bugs.dr2466"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2466">2466</link>:
1129       <emphasis><code>allocator_traits::max_size()</code> default behavior is incorrect
1130       </emphasis>
1131    </term>
1132    <listitem><para>Divide by the object type.
1133    </para></listitem></varlistentry>
1134
1135    <varlistentry xml:id="manual.bugs.dr2484"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2484">2484</link>:
1136       <emphasis><code>rethrow_if_nested()</code>  is doubly unimplementable
1137       </emphasis>
1138    </term>
1139    <listitem><para>Avoid using <code>dynamic_cast</code> when it would be
1140    ill-formed.
1141    </para></listitem></varlistentry>
1142
1143    <varlistentry xml:id="manual.bugs.dr2537"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2537">2537</link>:
1144       <emphasis>Constructors for <code>priority_queue</code> taking allocators
1145	 should call <code>make_heap</code>
1146       </emphasis>
1147    </term>
1148    <listitem><para>Call <code>make_heap</code>.
1149    </para></listitem></varlistentry>
1150
1151    <varlistentry xml:id="manual.bugs.dr2566"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2566">2566</link>:
1152       <emphasis>Requirements on the first template parameter of container adaptors
1153       </emphasis>
1154    </term>
1155    <listitem><para>Add static assertions to enforce the requirement.
1156    </para></listitem></varlistentry>
1157
1158    <varlistentry xml:id="manual.bugs.dr2583"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2583">2583</link>:
1159       <emphasis>There is no way to supply an allocator for <code>basic_string(str, pos)</code>
1160       </emphasis>
1161    </term>
1162    <listitem><para>Add new constructor.
1163    </para></listitem></varlistentry>
1164
1165    <varlistentry xml:id="manual.bugs.dr2586"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2586">2586</link>:
1166       <emphasis>Wrong value category used in <code>scoped_allocator_adaptor::construct()</code>
1167       </emphasis>
1168    </term>
1169    <listitem><para>Change internal helper for uses-allocator construction
1170      to always check using const lvalue allocators.
1171    </para></listitem></varlistentry>
1172
1173    <varlistentry xml:id="manual.bugs.dr2684"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2684">2684</link>:
1174       <emphasis><code>priority_queue</code> lacking comparator typedef
1175       </emphasis>
1176    </term>
1177    <listitem><para>Define the <code>value_compare</code> typedef.
1178    </para></listitem></varlistentry>
1179
1180    <varlistentry xml:id="manual.bugs.dr2735"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2735">2735</link>:
1181       <emphasis><code>std::abs(short)</code>,
1182	 <code>std::abs(signed char)</code> and others should return
1183	 <code>int</code> instead of <code>double</code> in order to be
1184	 compatible with C++98 and C
1185       </emphasis>
1186    </term>
1187    <listitem><para>Resolved by the changes for
1188      <link linkend="manual.bugs.dr2192">2192</link>.
1189    </para></listitem></varlistentry>
1190
1191    <varlistentry xml:id="manual.bugs.dr2770"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2770">2770</link>:
1192       <emphasis><code>tuple_size&lt;const T&gt;</code> specialization is not
1193	 SFINAE compatible and breaks decomposition declarations
1194       </emphasis>
1195    </term>
1196    <listitem><para>Safely detect <code>tuple_size&lt;T&gt;::value</code> and
1197      only use it if valid.
1198    </para></listitem></varlistentry>
1199
1200    <varlistentry xml:id="manual.bugs.dr2781"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2781">2781</link>:
1201       <emphasis>Contradictory requirements for <code>std::function</code>
1202         and <code>std::reference_wrapper</code>
1203       </emphasis>
1204    </term>
1205    <listitem><para>Remove special handling for <code>reference_wrapper</code>
1206      arguments and store them directly as the target object.
1207    </para></listitem></varlistentry>
1208
1209    <varlistentry xml:id="manual.bugs.dr2802"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2802">2802</link>:
1210       <emphasis>Add noexcept to several <code>shared_ptr</code> related
1211         functions
1212       </emphasis>
1213    </term>
1214    <listitem><para>Add noexcept.
1215    </para></listitem></varlistentry>
1216
1217    <varlistentry xml:id="manual.bugs.dr2873"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2873">2873</link>:
1218       <emphasis><code>shared_ptr</code> constructor requirements for a deleter
1219       </emphasis>
1220    </term>
1221    <listitem><para>Use rvalues for deleters.
1222    </para></listitem></varlistentry>
1223
1224    <varlistentry xml:id="manual.bugs.dr2921"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2921">2921</link>:
1225       <emphasis><code>packaged_task</code> and type-erased allocators
1226       </emphasis>
1227    </term>
1228    <listitem><para>For C++17 mode, remove the constructors taking
1229      an allocator argument.
1230    </para></listitem></varlistentry>
1231
1232    <varlistentry xml:id="manual.bugs.dr2942"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2942">2942</link>:
1233       <emphasis>LWG 2873's resolution missed
1234         <code>weak_ptr::owner_before</code>
1235       </emphasis>
1236    </term>
1237    <listitem><para>Add noexcept.
1238    </para></listitem></varlistentry>
1239
1240    <varlistentry xml:id="manual.bugs.dr2996"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2996">2996</link>:
1241       <emphasis>Missing rvalue overloads for
1242         <code>shared_ptr</code> operations
1243       </emphasis>
1244    </term>
1245    <listitem><para>Add additional constructor and cast overloads.
1246    </para></listitem></varlistentry>
1247
1248    <varlistentry xml:id="manual.bugs.dr2993"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#2993">2993</link>:
1249       <emphasis><code>reference_wrapper&lt;T&gt;</code> conversion from <code>T&amp;&amp;</code>
1250       </emphasis>
1251    </term>
1252    <listitem><para>Replaced the constructors with a constrained template,
1253      to prevent participation in overload resolution when not valid.
1254    </para></listitem></varlistentry>
1255
1256    <varlistentry xml:id="manual.bugs.dr3074"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3074">3074</link>:
1257       <emphasis>Non-member functions for <code>valarray</code> should only deduce from the <code>valarray</code>
1258       </emphasis>
1259    </term>
1260    <listitem><para>Change scalar operands to be non-deduced context, so that
1261      they will allow conversions from other types to the value_type.
1262    </para></listitem></varlistentry>
1263
1264    <varlistentry xml:id="manual.bugs.dr3076"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3076">3076</link>:
1265       <emphasis><code>basic_string</code> CTAD ambiguity
1266       </emphasis>
1267    </term>
1268    <listitem><para>Change constructors to constrained templates.
1269    </para></listitem></varlistentry>
1270
1271    <varlistentry xml:id="manual.bugs.dr3096"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3096">3096</link>:
1272       <emphasis><code>path::lexically_relative</code> is confused by trailing slashes
1273       </emphasis>
1274    </term>
1275    <listitem><para>Implement the fix for trailing slashes.
1276    </para></listitem></varlistentry>
1277
1278  </variablelist>
1279
1280 </section>
1281  </section>
1282</chapter>
1283
1284
1285<!-- Chapter 02 : Setup -->
1286<chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
1287  <?dbhtml filename="setup.html"?>
1288
1289
1290   <para>To transform libstdc++ sources into installed include files
1291   and properly built binaries useful for linking to other software is
1292   a multi-step process. Steps include getting the sources,
1293   configuring and building the sources, testing, and installation.
1294   </para>
1295
1296   <para>The general outline of commands is something like:
1297   </para>
1298
1299   <programlisting>
1300   <replaceable>get gcc sources</replaceable>
1301   <replaceable>extract into gccsrcdir</replaceable>
1302   mkdir <replaceable>gccbuilddir</replaceable>
1303   cd <replaceable>gccbuilddir</replaceable>
1304   <replaceable>gccsrcdir</replaceable>/configure --prefix=<replaceable>destdir</replaceable> --other-opts...
1305   make
1306   make check
1307   make install
1308   </programlisting>
1309
1310   <para>
1311     Each step is described in more detail in the following sections.
1312   </para>
1313
1314  <!-- Section 01 : Prerequisites -->
1315  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml">
1316  </xi:include>
1317
1318  <!-- Section 02 : Configure -->
1319  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml">
1320  </xi:include>
1321
1322  <!-- Section 03 : Make -->
1323<section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info>
1324  <?dbhtml filename="make.html"?>
1325
1326   <para>If you have never done this before, you should read the basic
1327      <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation
1328      Instructions</link> first.  Read <emphasis>all of them</emphasis>.
1329      <emphasis>Twice.</emphasis>
1330   </para>
1331
1332<para>Then type: <command>make</command>, and congratulations, you've
1333started to build.
1334</para>
1335
1336</section>
1337
1338</chapter>
1339
1340<!-- Chapter 03 : Using -->
1341<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml">
1342</xi:include>
1343
1344</part>
1345