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