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