Home | History | Annotate | Line # | Download | only in manual
      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">
     92 GCC RUNTIME LIBRARY EXCEPTION
     93 
     94 Version 3.1, 31 March 2009
     95 
     96 Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">Free Software Foundation, Inc.</link>
     97 
     98 Everyone is permitted to copy and distribute verbatim copies of this
     99 license document, but changing it is not allowed.
    100 
    101 This GCC Runtime Library Exception ("Exception") is an additional
    102 permission under section 7 of the GNU General Public License, version
    103 3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
    104 bears a notice placed by the copyright holder of the file stating that
    105 the file is governed by GPLv3 along with this Exception.
    106 
    107 When you use GCC to compile a program, GCC may combine portions of
    108 certain GCC header files and runtime libraries with the compiled
    109 program. The purpose of this Exception is to allow compilation of
    110 non-GPL (including proprietary) programs to use, in this way, the
    111 header files and runtime libraries covered by this Exception.
    112 
    113 0. Definitions.
    114 
    115 A file is an "Independent Module" if it either requires the Runtime
    116 Library for execution after a Compilation Process, or makes use of an
    117 interface provided by the Runtime Library, but is not otherwise based
    118 on the Runtime Library.
    119 
    120 "GCC" means a version of the GNU Compiler Collection, with or without
    121 modifications, governed by version 3 (or a specified later version) of
    122 the GNU General Public License (GPL) with the option of using any
    123 subsequent versions published by the FSF.
    124 
    125 "GPL-compatible Software" is software whose conditions of propagation,
    126 modification and use would permit combination with GCC in accord with
    127 the license of GCC.
    128 
    129 "Target Code" refers to output from any compiler for a real or virtual
    130 target processor architecture, in executable form or suitable for
    131 input to an assembler, loader, linker and/or execution
    132 phase. Notwithstanding that, Target Code does not include data in any
    133 format that is used as a compiler intermediate representation, or used
    134 for producing a compiler intermediate representation.
    135 
    136 The "Compilation Process" transforms code entirely represented in
    137 non-intermediate languages designed for human-written code, and/or in
    138 Java Virtual Machine byte code, into Target Code. Thus, for example,
    139 use of source code generators and preprocessors need not be considered
    140 part of the Compilation Process, since the Compilation Process can be
    141 understood as starting with the output of the generators or
    142 preprocessors.
    143 
    144 A Compilation Process is "Eligible" if it is done using GCC, alone or
    145 with other GPL-compatible software, or if it is done without using any
    146 work based on GCC. For example, using non-GPL-compatible Software to
    147 optimize any GCC intermediate representations would not qualify as an
    148 Eligible Compilation Process.
    149 
    150 1. Grant of Additional Permission.
    151 
    152 You have permission to propagate a work of Target Code formed by
    153 combining the Runtime Library with Independent Modules, even if such
    154 propagation would otherwise violate the terms of GPLv3, provided that
    155 all Target Code was generated by Eligible Compilation Processes. You
    156 may then convey such a combination under terms of your choice,
    157 consistent with the licensing of the Independent Modules.
    158 
    159 2. No Weakening of GCC Copyleft.
    160 
    161 The availability of this Exception does not imply any general
    162 presumption that third-party software is unaffected by the copyleft
    163 requirements 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
   1373 started 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