1<?xml version='1.0'?> 2<!DOCTYPE part [ 3 <!ENTITY DR 4"http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html"> 5] > 6 7<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction"> 8<?dbhtml filename="intro.html"?> 9 10<info><title> 11 Introduction 12 <indexterm><primary>Introduction</primary></indexterm> 13</title> 14 <keywordset> 15 <keyword>ISO C++</keyword> 16 <keyword>library</keyword> 17 </keywordset> 18</info> 19 20 21<!-- Chapter 01 : Status --> 22<chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info> 23 <?dbhtml filename="status.html"?> 24 25 26 <!-- Section 01 : Implementation Status --> 27 <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info> 28 29 30 <!-- Section 01.1 : Status C++ 1998 --> 31 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml"> 32 </xi:include> 33 34 <!-- Section 01.2 : Status C++ 2011 --> 35 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2011.xml"> 36 </xi:include> 37 38 <!-- Section 01.3 : Status C++ 2014 --> 39 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2014.xml"> 40 </xi:include> 41 42 <!-- Section 01.4 : Status C++ 2017 --> 43 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2017.xml"> 44 </xi:include> 45 46 <!-- Section 01.4 : Status C++ 2020 --> 47 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2020.xml"> 48 </xi:include> 49 50 <!-- Section 01.5 : Status C++ 2023 --> 51 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2023.xml"> 52 </xi:include> 53 54 <!-- Section 01.6 : Status C++ TR1 --> 55 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml"> 56 </xi:include> 57 58 <!-- Section 01.7 : Status C++ TR24733 --> 59 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml"> 60 </xi:include> 61 62 <!-- Section 01.8 : Status C++ IS 29124 --> 63 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxis29124.xml"> 64 </xi:include> 65 </section> 66 67 <!-- Section 02 : License --> 68 <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info> 69 <?dbhtml filename="license.html"?> 70 71 <para> 72 There are two licenses affecting GNU libstdc++: one for the code, 73 and one for the documentation. 74 </para> 75 76 <para> 77 There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more 78 questions, ask the FSF or the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/lists.html">gcc mailing list</link>. 79 </para> 80 81 <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info> 82 83 84 <para> 85 The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>, 86 with the addition under section 7 of an exception described in 87 the <quote>GCC Runtime Library Exception, version 3.1</quote> 88 as follows (or see the file COPYING.RUNTIME): 89 </para> 90 91 <literallayout class="normal"> 92GCC RUNTIME LIBRARY EXCEPTION 93 94Version 3.1, 31 March 2009 95 96Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.fsf.org">Free Software Foundation, Inc.</link> 97 98Everyone is permitted to copy and distribute verbatim copies of this 99license document, but changing it is not allowed. 100 101This GCC Runtime Library Exception ("Exception") is an additional 102permission under section 7 of the GNU General Public License, version 1033 ("GPLv3"). It applies to a given file (the "Runtime Library") that 104bears a notice placed by the copyright holder of the file stating that 105the file is governed by GPLv3 along with this Exception. 106 107When you use GCC to compile a program, GCC may combine portions of 108certain GCC header files and runtime libraries with the compiled 109program. The purpose of this Exception is to allow compilation of 110non-GPL (including proprietary) programs to use, in this way, the 111header files and runtime libraries covered by this Exception. 112 1130. Definitions. 114 115A file is an "Independent Module" if it either requires the Runtime 116Library for execution after a Compilation Process, or makes use of an 117interface provided by the Runtime Library, but is not otherwise based 118on the Runtime Library. 119 120"GCC" means a version of the GNU Compiler Collection, with or without 121modifications, governed by version 3 (or a specified later version) of 122the GNU General Public License (GPL) with the option of using any 123subsequent versions published by the FSF. 124 125"GPL-compatible Software" is software whose conditions of propagation, 126modification and use would permit combination with GCC in accord with 127the license of GCC. 128 129"Target Code" refers to output from any compiler for a real or virtual 130target processor architecture, in executable form or suitable for 131input to an assembler, loader, linker and/or execution 132phase. Notwithstanding that, Target Code does not include data in any 133format that is used as a compiler intermediate representation, or used 134for producing a compiler intermediate representation. 135 136The "Compilation Process" transforms code entirely represented in 137non-intermediate languages designed for human-written code, and/or in 138Java Virtual Machine byte code, into Target Code. Thus, for example, 139use of source code generators and preprocessors need not be considered 140part of the Compilation Process, since the Compilation Process can be 141understood as starting with the output of the generators or 142preprocessors. 143 144A Compilation Process is "Eligible" if it is done using GCC, alone or 145with other GPL-compatible software, or if it is done without using any 146work based on GCC. For example, using non-GPL-compatible Software to 147optimize any GCC intermediate representations would not qualify as an 148Eligible Compilation Process. 149 1501. Grant of Additional Permission. 151 152You have permission to propagate a work of Target Code formed by 153combining the Runtime Library with Independent Modules, even if such 154propagation would otherwise violate the terms of GPLv3, provided that 155all Target Code was generated by Eligible Compilation Processes. You 156may then convey such a combination under terms of your choice, 157consistent with the licensing of the Independent Modules. 158 1592. No Weakening of GCC Copyleft. 160 161The availability of this Exception does not imply any general 162presumption that third-party software is unaffected by the copyleft 163requirements of the license of GCC. 164 </literallayout> 165 166 <para> 167 Hopefully that text is self-explanatory. If it isn't, you need to speak 168 to your lawyer, or the Free Software Foundation. 169 </para> 170 </section> 171 172 <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info> 173 174 175 <para> 176 The documentation shipped with the library and made available over 177 the web, excluding the pages generated from source comments, are 178 copyrighted by the Free Software Foundation, and placed under the 179 <link linkend="appendix.gfdl-1.3"> GNU Free Documentation 180 License version 1.3</link>. There are no Front-Cover Texts, no 181 Back-Cover Texts, and no Invariant Sections. 182 </para> 183 184 <para> 185 For documentation generated by doxygen or other automated tools 186 via processing source code comments and markup, the original source 187 code license applies to the generated files. Thus, the doxygen 188 documents are licensed <link linkend="appendix.gpl-3.0">GPL</link>. 189 </para> 190 191 <para> 192 If you plan on making copies of the documentation, please let us know. 193 We can probably offer suggestions. 194 </para> 195 </section> 196 197 </section> 198 199 <!-- Section 03 : Known Bugs --> 200 <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info> 201 <?dbhtml filename="bugs.html"?> 202 203 204 <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info> 205 206 <para> 207 Information on known bugs, details on efforts to fix them, and 208 fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/bugs/">GCC bug tracking system</link>, 209 under the component <quote>libstdc++</quote>. 210 </para> 211 </section> 212 213 <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info> 214 215 <para> 216 Everybody's got issues. Even the C++ Standard Library. 217 </para> 218 <para> 219 The Library Working Group, or LWG, is the ISO subcommittee responsible 220 for making changes to the library. They periodically publish an 221 Issues List containing problems and possible solutions. As they reach 222 a consensus on proposed solutions, we often incorporate the solution. 223 </para> 224 <para> 225 Here are the issues which have resulted in code changes to the library. 226 The links are to the full version of the Issues List. 227 You can read the full version online 228 at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ 229 Committee homepage</link>. 230 </para> 231 <para> 232 If a DR is not listed here, we may simply not have gotten to 233 it yet; feel free to submit a patch. Search the 234 <filename class="directory">include</filename> and 235 <filename class="directory">src</filename> 236 directories for appearances of 237 <constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples 238 of style. Note that we usually do not make changes to the 239 code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#DR">DR</link> status. 240 </para> 241 242 <variablelist> 243 <varlistentry xml:id="manual.bugs.dr5"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#5">5</link>: 244 <emphasis>string::compare specification questionable</emphasis> 245 </term> 246 <listitem><para>This should be two overloaded functions rather than a single function. 247 </para></listitem></varlistentry> 248 249 <varlistentry xml:id="manual.bugs.dr17"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#17">17</link>: 250 <emphasis>Bad bool parsing</emphasis> 251 </term> 252 <listitem><para>Apparently extracting Boolean values was messed up... 253 </para></listitem></varlistentry> 254 255 <varlistentry xml:id="manual.bugs.dr19"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#19">19</link>: 256 <emphasis>"Noconv" definition too vague</emphasis> 257 </term> 258 <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are 259 no changes to the values in <code>[to, to_limit)</code>. 260 </para></listitem></varlistentry> 261 262 <varlistentry xml:id="manual.bugs.dr22"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#22">22</link>: 263 <emphasis>Member open vs flags</emphasis> 264 </term> 265 <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags. 266 </para></listitem></varlistentry> 267 268 <varlistentry xml:id="manual.bugs.dr23"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#23">23</link>: 269 <emphasis>Num_get overflow result</emphasis> 270 </term> 271 <listitem><para>Implement the proposed resolution. 272 </para></listitem></varlistentry> 273 274 <varlistentry xml:id="manual.bugs.dr25"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#25">25</link>: 275 <emphasis>String operator<< 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&</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>> 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>> and getline() for string<> 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<>::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<<</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>>(istream&, string&) doesn't set failbit</emphasis> 464 </term> 465 <listitem><para>If nothing is extracted into the string, <code>op>></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<T>::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 == &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 == &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<wchar_t, char, 580 mbstate_t>::length()</emphasis> 581 </term> 582 <listitem><para>Do not specify what <code>codecvt<wchar_t, char, 583 mbstate_t>::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<>::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&</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<reverse_iterator<char*> > 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&)</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 &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<void> 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<char>::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>>(int&) 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 -> 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<bool></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><tuple></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><utility></code> which 999 is included by <code><array></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&</code>, not <code>const value_type&</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<size_t, N></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&&</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&, F&&)</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<></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&, CharT*)</code> makes it hard to avoid buffer overflows 1177 </emphasis> 1178 </term> 1179 <listitem><para>Replace <code>operator>>(basic_istream&, 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<const T></code> specialization is not 1233 SFINAE compatible and breaks decomposition declarations 1234 </emphasis> 1235 </term> 1236 <listitem><para>Safely detect <code>tuple_size<T>::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<T></code> conversion from <code>T&&</code> 1290 </emphasis> 1291 </term> 1292 <listitem><para>Replaced the constructors with a constrained template, 1293 to prevent participation in overload resolution when not valid. 1294 </para></listitem></varlistentry> 1295 1296 <varlistentry xml:id="manual.bugs.dr3074"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3074">3074</link>: 1297 <emphasis>Non-member functions for <code>valarray</code> should only deduce from the <code>valarray</code> 1298 </emphasis> 1299 </term> 1300 <listitem><para>Change scalar operands to be non-deduced context, so that 1301 they will allow conversions from other types to the value_type. 1302 </para></listitem></varlistentry> 1303 1304 <varlistentry xml:id="manual.bugs.dr3076"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3076">3076</link>: 1305 <emphasis><code>basic_string</code> CTAD ambiguity 1306 </emphasis> 1307 </term> 1308 <listitem><para>Change constructors to constrained templates. 1309 </para></listitem></varlistentry> 1310 1311 <varlistentry xml:id="manual.bugs.dr3096"><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&DR;#3096">3096</link>: 1312 <emphasis><code>path::lexically_relative</code> is confused by trailing slashes 1313 </emphasis> 1314 </term> 1315 <listitem><para>Implement the fix for trailing slashes. 1316 </para></listitem></varlistentry> 1317 1318 </variablelist> 1319 1320 </section> 1321 </section> 1322</chapter> 1323 1324 1325<!-- Chapter 02 : Setup --> 1326<chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info> 1327 <?dbhtml filename="setup.html"?> 1328 1329 1330 <para>To transform libstdc++ sources into installed include files 1331 and properly built binaries useful for linking to other software is 1332 a multi-step process. Steps include getting the sources, 1333 configuring and building the sources, testing, and installation. 1334 </para> 1335 1336 <para>The general outline of commands is something like: 1337 </para> 1338 1339 <programlisting> 1340 <replaceable>get gcc sources</replaceable> 1341 <replaceable>extract into gccsrcdir</replaceable> 1342 mkdir <replaceable>gccbuilddir</replaceable> 1343 cd <replaceable>gccbuilddir</replaceable> 1344 <replaceable>gccsrcdir</replaceable>/configure --prefix=<replaceable>destdir</replaceable> --other-opts... 1345 make 1346 make check 1347 make install 1348 </programlisting> 1349 1350 <para> 1351 Each step is described in more detail in the following sections. 1352 </para> 1353 1354 <!-- Section 01 : Prerequisites --> 1355 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml"> 1356 </xi:include> 1357 1358 <!-- Section 02 : Configure --> 1359 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml"> 1360 </xi:include> 1361 1362 <!-- Section 03 : Make --> 1363<section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info> 1364 <?dbhtml filename="make.html"?> 1365 1366 <para>If you have never done this before, you should read the basic 1367 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation 1368 Instructions</link> first. Read <emphasis>all of them</emphasis>. 1369 <emphasis>Twice.</emphasis> 1370 </para> 1371 1372<para>Then type: <command>make</command>, and congratulations, you've 1373started to build. 1374</para> 1375 1376</section> 1377 1378</chapter> 1379 1380<!-- Chapter 03 : Using --> 1381<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml"> 1382</xi:include> 1383 1384</part> 1385