]> gcc.gnu.org Git - gcc.git/blame - libstdc++-v3/doc/xml/manual/intro.xml
LWG 2328 Rvalue stream extraction should use perfect forwarding
[gcc.git] / libstdc++-v3 / doc / xml / manual / intro.xml
CommitLineData
c6a21af2 1<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction">
8a165db0 2<?dbhtml filename="intro.html"?>
03a32789 3
c6a21af2
BK
4<info><title>
5 Introduction
6 <indexterm><primary>Introduction</primary></indexterm>
7</title>
8a165db0 8 <keywordset>
92eba400
AS
9 <keyword>ISO C++</keyword>
10 <keyword>library</keyword>
8a165db0 11 </keywordset>
c6a21af2
BK
12</info>
13
8a165db0 14
8a165db0 15<!-- Chapter 01 : Status -->
c6a21af2 16<chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info>
5e623d0b 17 <?dbhtml filename="status.html"?>
c6a21af2 18
8a165db0 19
5e623d0b 20 <!-- Section 01 : Implementation Status -->
c6a21af2
BK
21 <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info>
22
8a165db0 23
5e623d0b 24 <!-- Section 01.1 : Status C++ 1998 -->
c6a21af2 25 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml">
8a165db0
BK
26 </xi:include>
27
f25481f4
JW
28 <!-- Section 01.2 : Status C++ 2011 -->
29 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2011.xml">
03a32789 30 </xi:include>
4cdc8761 31
3ed8a9cd
ESR
32 <!-- Section 01.3 : Status C++ 2014 -->
33 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2014.xml">
34 </xi:include>
35
1d15ed75
JW
36 <!-- Section 01.4 : Status C++ 2017 -->
37 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx2017.xml">
38 </xi:include>
39
40 <!-- Section 01.5 : Status C++ TR1 -->
c6a21af2 41 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml">
c448a85e
BK
42 </xi:include>
43
1d15ed75 44 <!-- Section 01.6 : Status C++ TR24733 -->
c6a21af2 45 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
4cdc8761 46 </xi:include>
c6a21af2 47 </section>
8a165db0
BK
48
49 <!-- Section 02 : License -->
c6a21af2 50 <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info>
5e623d0b 51 <?dbhtml filename="license.html"?>
c6a21af2 52
8a165db0
BK
53 <para>
54 There are two licenses affecting GNU libstdc++: one for the code,
03a32789 55 and one for the documentation.
8a165db0
BK
56 </para>
57
58 <para>
c6a21af2
BK
59 There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more
60 questions, ask the FSF or the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/lists.html">gcc mailing list</link>.
8a165db0
BK
61 </para>
62
c6a21af2
BK
63 <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info>
64
03a32789 65
8a165db0 66 <para>
c6a21af2 67 The source code is distributed under the <link linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
748086b7
JJ
68 with the addition under section 7 of an exception described in
69 the <quote>GCC Runtime Library Exception, version 3.1</quote>
70 as follows (or see the file COPYING.RUNTIME):
8a165db0 71 </para>
03a32789 72
c6a21af2 73 <literallayout class="normal">
748086b7
JJ
74GCC RUNTIME LIBRARY EXCEPTION
75
76Version 3.1, 31 March 2009
77
c6a21af2 78Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">Free Software Foundation, Inc.</link>
748086b7
JJ
79
80Everyone is permitted to copy and distribute verbatim copies of this
81license document, but changing it is not allowed.
82
83This GCC Runtime Library Exception ("Exception") is an additional
84permission under section 7 of the GNU General Public License, version
853 ("GPLv3"). It applies to a given file (the "Runtime Library") that
86bears a notice placed by the copyright holder of the file stating that
87the file is governed by GPLv3 along with this Exception.
88
89When you use GCC to compile a program, GCC may combine portions of
90certain GCC header files and runtime libraries with the compiled
91program. The purpose of this Exception is to allow compilation of
92non-GPL (including proprietary) programs to use, in this way, the
93header files and runtime libraries covered by this Exception.
94
950. Definitions.
96
97A file is an "Independent Module" if it either requires the Runtime
98Library for execution after a Compilation Process, or makes use of an
99interface provided by the Runtime Library, but is not otherwise based
100on the Runtime Library.
101
102"GCC" means a version of the GNU Compiler Collection, with or without
103modifications, governed by version 3 (or a specified later version) of
104the GNU General Public License (GPL) with the option of using any
105subsequent versions published by the FSF.
106
107"GPL-compatible Software" is software whose conditions of propagation,
108modification and use would permit combination with GCC in accord with
109the license of GCC.
110
111"Target Code" refers to output from any compiler for a real or virtual
112target processor architecture, in executable form or suitable for
113input to an assembler, loader, linker and/or execution
114phase. Notwithstanding that, Target Code does not include data in any
115format that is used as a compiler intermediate representation, or used
116for producing a compiler intermediate representation.
117
118The "Compilation Process" transforms code entirely represented in
119non-intermediate languages designed for human-written code, and/or in
120Java Virtual Machine byte code, into Target Code. Thus, for example,
121use of source code generators and preprocessors need not be considered
122part of the Compilation Process, since the Compilation Process can be
123understood as starting with the output of the generators or
124preprocessors.
125
126A Compilation Process is "Eligible" if it is done using GCC, alone or
127with other GPL-compatible software, or if it is done without using any
128work based on GCC. For example, using non-GPL-compatible Software to
129optimize any GCC intermediate representations would not qualify as an
130Eligible Compilation Process.
131
1321. Grant of Additional Permission.
133
134You have permission to propagate a work of Target Code formed by
135combining the Runtime Library with Independent Modules, even if such
136propagation would otherwise violate the terms of GPLv3, provided that
137all Target Code was generated by Eligible Compilation Processes. You
138may then convey such a combination under terms of your choice,
139consistent with the licensing of the Independent Modules.
140
1412. No Weakening of GCC Copyleft.
142
143The availability of this Exception does not imply any general
144presumption that third-party software is unaffected by the copyleft
145requirements of the license of GCC.
8a165db0 146 </literallayout>
03a32789 147
8a165db0
BK
148 <para>
149 Hopefully that text is self-explanatory. If it isn't, you need to speak
150 to your lawyer, or the Free Software Foundation.
151 </para>
c6a21af2 152 </section>
8a165db0 153
c6a21af2
BK
154 <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info>
155
03a32789 156
8a165db0
BK
157 <para>
158 The documentation shipped with the library and made available over
159 the web, excluding the pages generated from source comments, are
160 copyrighted by the Free Software Foundation, and placed under the
669b5857
JW
161 <link linkend="appendix.gfdl-1.3"> GNU Free Documentation
162 License version 1.3</link>. There are no Front-Cover Texts, no
8a165db0
BK
163 Back-Cover Texts, and no Invariant Sections.
164 </para>
03a32789
BK
165
166 <para>
8a165db0
BK
167 For documentation generated by doxygen or other automated tools
168 via processing source code comments and markup, the original source
169 code license applies to the generated files. Thus, the doxygen
f86ce601 170 documents are licensed <link linkend="appendix.gpl-3.0">GPL</link>.
8a165db0 171 </para>
03a32789 172
8a165db0
BK
173 <para>
174 If you plan on making copies of the documentation, please let us know.
175 We can probably offer suggestions.
176 </para>
c6a21af2 177 </section>
8a165db0 178
c6a21af2 179 </section>
03a32789 180
8a165db0 181 <!-- Section 03 : Known Bugs -->
c6a21af2 182 <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info>
5e623d0b 183 <?dbhtml filename="bugs.html"?>
c6a21af2 184
8a165db0 185
c6a21af2
BK
186 <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info>
187
8a165db0
BK
188 <para>
189 Information on known bugs, details on efforts to fix them, and
c6a21af2 190 fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs/">GCC bug tracking system</link>,
2c42b339 191 with the category set to <literal>libstdc++</literal>.
8a165db0 192 </para>
c6a21af2 193 </section>
8a165db0 194
c6a21af2
BK
195 <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info>
196
8a165db0
BK
197 <para>
198 Everybody's got issues. Even the C++ Standard Library.
199 </para>
200 <para>
201 The Library Working Group, or LWG, is the ISO subcommittee responsible
202 for making changes to the library. They periodically publish an
203 Issues List containing problems and possible solutions. As they reach
204 a consensus on proposed solutions, we often incorporate the solution.
205 </para>
206 <para>
207 Here are the issues which have resulted in code changes to the library.
208 The links are to the specific defect reports from a <emphasis>partial
209 copy</emphasis> of the Issues List. You can read the full version online
c6a21af2
BK
210 at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++
211 Committee homepage</link>, linked to on the
212 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/readings.html">GCC "Readings"
213 page</link>. If
8a165db0
BK
214 you spend a lot of time reading the issues, we recommend downloading
215 the ZIP file and reading them locally.
216 </para>
217 <para>
218 (NB: <emphasis>partial copy</emphasis> means that not all
219 links within the lwg-*.html pages will work. Specifically,
220 links to defect reports that have not been accorded full DR
221 status will probably break. Rather than trying to mirror the
222 entire issues list on our overworked web server, we recommend
223 you go to the LWG homepage instead.)
224 </para>
225 <para>
226 If a DR is not listed here, we may simply not have gotten to
227 it yet; feel free to submit a patch. Search the include/bits
228 and src directories for appearances of
229 <constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
230 of style. Note that we usually do not make changes to the
c6a21af2 231 code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#DR">DR</link> status.
8a165db0
BK
232 </para>
233
234 <variablelist>
c6a21af2 235 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#5">5</link>:
03a32789 236 <emphasis>string::compare specification questionable</emphasis>
8a165db0
BK
237 </term>
238 <listitem><para>This should be two overloaded functions rather than a single function.
239 </para></listitem></varlistentry>
240
c6a21af2 241 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#17">17</link>:
03a32789 242 <emphasis>Bad bool parsing</emphasis>
8a165db0
BK
243 </term>
244 <listitem><para>Apparently extracting Boolean values was messed up...
245 </para></listitem></varlistentry>
246
c6a21af2
BK
247 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#19">19</link>:
248 <emphasis>"Noconv" definition too vague</emphasis>
8a165db0
BK
249 </term>
250 <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are
03a32789 251 no changes to the values in <code>[to, to_limit)</code>.
8a165db0
BK
252 </para></listitem></varlistentry>
253
c6a21af2 254 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#22">22</link>:
03a32789 255 <emphasis>Member open vs flags</emphasis>
8a165db0
BK
256 </term>
257 <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
258 </para></listitem></varlistentry>
5ef46f95 259
c6a21af2 260 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#23">23</link>:
03a32789 261 <emphasis>Num_get overflow result</emphasis>
5ef46f95
PC
262 </term>
263 <listitem><para>Implement the proposed resolution.
264 </para></listitem></varlistentry>
8a165db0 265
c6a21af2 266 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#25">25</link>:
03a32789 267 <emphasis>String operator&lt;&lt; uses width() value wrong</emphasis>
8a165db0
BK
268 </term>
269 <listitem><para>Padding issues.
270 </para></listitem></varlistentry>
271
c6a21af2 272 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#48">48</link>:
03a32789 273 <emphasis>Use of non-existent exception constructor</emphasis>
8a165db0
BK
274 </term>
275 <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead.
276 </para></listitem></varlistentry>
277
c6a21af2 278 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#49">49</link>:
03a32789 279 <emphasis>Underspecification of ios_base::sync_with_stdio</emphasis>
8a165db0
BK
280 </term>
281 <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization.
282 </para></listitem></varlistentry>
283
c6a21af2 284 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#50">50</link>:
03a32789 285 <emphasis>Copy constructor and assignment operator of ios_base</emphasis>
8a165db0
BK
286 </term>
287 <listitem><para>These members functions are declared <code>private</code> and are
03a32789 288 thus inaccessible. Specifying the correct semantics of
c6a21af2 289 "copying stream state" was deemed too complicated.
8a165db0
BK
290 </para></listitem></varlistentry>
291
c6a21af2 292 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#60">60</link>:
03a32789 293 <emphasis>What is a formatted input function?</emphasis>
8a165db0
BK
294 </term>
295 <listitem><para>This DR made many widespread changes to <code>basic_istream</code>
03a32789 296 and <code>basic_ostream</code> all of which have been implemented.
8a165db0
BK
297 </para></listitem></varlistentry>
298
c6a21af2 299 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#63">63</link>:
03a32789 300 <emphasis>Exception-handling policy for unformatted output</emphasis>
8a165db0
BK
301 </term>
302 <listitem><para>Make the policy consistent with that of formatted input, unformatted
03a32789 303 input, and formatted output.
8a165db0
BK
304 </para></listitem></varlistentry>
305
c6a21af2 306 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#68">68</link>:
03a32789 307 <emphasis>Extractors for char* should store null at end</emphasis>
8a165db0
BK
308 </term>
309 <listitem><para>And they do now. An editing glitch in the last item in the list of
03a32789 310 [27.6.1.2.3]/7.
8a165db0
BK
311 </para></listitem></varlistentry>
312
c6a21af2 313 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#74">74</link>:
03a32789 314 <emphasis>Garbled text for codecvt::do_max_length</emphasis>
8a165db0
BK
315 </term>
316 <listitem><para>The text of the standard was gibberish. Typos gone rampant.
317 </para></listitem></varlistentry>
318
c6a21af2 319 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#75">75</link>:
03a32789 320 <emphasis>Contradiction in codecvt::length's argument types</emphasis>
8a165db0
BK
321 </term>
322 <listitem><para>Change the first parameter to <code>stateT&amp;</code> and implement
03a32789 323 the new effects paragraph.
8a165db0
BK
324 </para></listitem></varlistentry>
325
c6a21af2 326 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#83">83</link>:
03a32789 327 <emphasis>string::npos vs. string::max_size()</emphasis>
8a165db0
BK
328 </term>
329 <listitem><para>Safety checks on the size of the string should test against
03a32789 330 <code>max_size()</code> rather than <code>npos</code>.
8a165db0
BK
331 </para></listitem></varlistentry>
332
c6a21af2 333 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#90">90</link>:
03a32789 334 <emphasis>Incorrect description of operator&gt;&gt; for strings</emphasis>
8a165db0
BK
335 </term>
336 <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be
03a32789 337 replaced by <code>isspace(c,is.getloc())</code>.
8a165db0
BK
338 </para></listitem></varlistentry>
339
c6a21af2 340 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#91">91</link>:
03a32789 341 <emphasis>Description of operator&gt;&gt; and getline() for string&lt;&gt;
8a165db0
BK
342 might cause endless loop</emphasis>
343 </term>
344 <listitem><para>They behave as a formatted input function and as an unformatted
03a32789 345 input function, respectively (except that <code>getline</code> is
8a165db0
BK
346 not required to set <code>gcount</code>).
347 </para></listitem></varlistentry>
348
c6a21af2 349 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#103">103</link>:
03a32789 350 <emphasis>set::iterator is required to be modifiable, but this allows
8a165db0
BK
351 modification of keys.</emphasis>
352 </term>
353 <listitem><para>For associative containers where the value type is the same as
03a32789 354 the key type, both <code>iterator</code> and <code>const_iterator
8a165db0
BK
355 </code> are constant iterators.
356 </para></listitem></varlistentry>
357
c6a21af2 358 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#109">109</link>:
03a32789 359 <emphasis>Missing binders for non-const sequence elements</emphasis>
8a165db0
BK
360 </term>
361 <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an
03a32789 362 <code>operator()</code> taking a non-const parameter.
8a165db0
BK
363 </para></listitem></varlistentry>
364
c6a21af2 365 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#110">110</link>:
03a32789 366 <emphasis>istreambuf_iterator::equal not const</emphasis>
8a165db0
BK
367 </term>
368 <listitem><para>This was not a const member function. Note that the DR says to
03a32789
BK
369 replace the function with a const one; we have instead provided an
370 overloaded version with identical contents.
8a165db0
BK
371 </para></listitem></varlistentry>
372
c6a21af2 373 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#117">117</link>:
03a32789 374 <emphasis>basic_ostream uses nonexistent num_put member functions</emphasis>
8a165db0
BK
375 </term>
376 <listitem><para><code>num_put::put()</code> was overloaded on the wrong types.
377 </para></listitem></varlistentry>
378
c6a21af2 379 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#118">118</link>:
03a32789 380 <emphasis>basic_istream uses nonexistent num_get member functions</emphasis>
8a165db0
BK
381 </term>
382 <listitem><para>Same as 117, but for <code>num_get::get()</code>.
383 </para></listitem></varlistentry>
384
c6a21af2 385 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#129">129</link>:
03a32789 386 <emphasis>Need error indication from seekp() and seekg()</emphasis>
8a165db0
BK
387 </term>
388 <listitem><para>These functions set <code>failbit</code> on error now.
389 </para></listitem></varlistentry>
390
c6a21af2 391 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#130">130</link>:
03a32789 392 <emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis>
c105751c 393 </term>
03a32789 394 <listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>.
c105751c
ESR
395 </para></listitem></varlistentry>
396
c6a21af2 397 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#136">136</link>:
03a32789 398 <emphasis>seekp, seekg setting wrong streams?</emphasis>
8a165db0
BK
399 </term>
400 <listitem><para><code>seekp</code> should only set the output stream, and
03a32789 401 <code>seekg</code> should only set the input stream.
8a165db0
BK
402 </para></listitem></varlistentry>
403
19f6f5a4 404<!--<varlistentry><term><ulink url="../ext/lwg-defects.html#159">159</ulink>:
03a32789 405 <emphasis>Strange use of underflow()</emphasis>
8a165db0
BK
406 </term>
407 <listitem><para>In fstream.tcc, the basic_filebuf&lt;&gt;::showmanyc() function
03a32789 408 should probably not be calling <code>underflow()</code>.
8a165db0
BK
409 </para></listitem></varlistentry> -->
410
c6a21af2 411 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#167">167</link>:
03a32789 412 <emphasis>Improper use of traits_type::length()</emphasis>
8a165db0
BK
413 </term>
414 <listitem><para><code>op&lt;&lt;</code> with a <code>const char*</code> was
03a32789 415 calculating an incorrect number of characters to write.
8a165db0
BK
416 </para></listitem></varlistentry>
417
c6a21af2 418 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#169">169</link>:
03a32789 419 <emphasis>Bad efficiency of overflow() mandated</emphasis>
8a165db0
BK
420 </term>
421 <listitem><para>Grow efficiently the internal array object.
422 </para></listitem></varlistentry>
423
c6a21af2 424 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#171">171</link>:
03a32789 425 <emphasis>Strange seekpos() semantics due to joint position</emphasis>
8a165db0
BK
426 </term>
427 <listitem><para>Quite complex to summarize...
428 </para></listitem></varlistentry>
429
c6a21af2 430 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#181">181</link>:
03a32789 431 <emphasis>make_pair() unintended behavior</emphasis>
8a165db0
BK
432 </term>
433 <listitem><para>This function used to take its arguments as reference-to-const, now
03a32789 434 it copies them (pass by value).
8a165db0
BK
435 </para></listitem></varlistentry>
436
c6a21af2 437 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#195">195</link>:
03a32789 438 <emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis>
8a165db0
BK
439 </term>
440 <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace.
441 </para></listitem></varlistentry>
442
c6a21af2 443 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#211">211</link>:
03a32789 444 <emphasis>operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</emphasis>
8a165db0
BK
445 </term>
446 <listitem><para>If nothing is extracted into the string, <code>op&gt;&gt;</code> now
03a32789 447 sets <code>failbit</code> (which can cause an exception, etc., etc.).
8a165db0
BK
448 </para></listitem></varlistentry>
449
c6a21af2 450 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#214">214</link>:
03a32789 451 <emphasis>set::find() missing const overload</emphasis>
8a165db0
BK
452 </term>
453 <listitem><para>Both <code>set</code> and <code>multiset</code> were missing
03a32789
BK
454 overloaded find, lower_bound, upper_bound, and equal_range functions
455 for const instances.
8a165db0
BK
456 </para></listitem></varlistentry>
457
c6a21af2 458 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#231">231</link>:
03a32789 459 <emphasis>Precision in iostream?</emphasis>
8a165db0
BK
460 </term>
461 <listitem><para>For conversion from a floating-point type, <code>str.precision()</code>
03a32789 462 is specified in the conversion specification.
8a165db0
BK
463 </para></listitem></varlistentry>
464
c6a21af2 465 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#233">233</link>:
03a32789 466 <emphasis>Insertion hints in associative containers</emphasis>
8a165db0
BK
467 </term>
468 <listitem><para>Implement N1780, first check before then check after, insert as close
03a32789 469 to hint as possible.
8a165db0
BK
470 </para></listitem></varlistentry>
471
c6a21af2 472 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#235">235</link>:
03a32789 473 <emphasis>No specification of default ctor for reverse_iterator</emphasis>
8a165db0
BK
474 </term>
475 <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor.
03a32789 476 However, no specification is given what this constructor should do.
8a165db0
BK
477 </para></listitem></varlistentry>
478
c6a21af2 479 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#241">241</link>:
03a32789 480 <emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis>
8a165db0
BK
481 </term>
482 <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing
03a32789 483 one for input_iterator/output_iterator to not rely on Assignability.
8a165db0
BK
484 </para></listitem></varlistentry>
485
c6a21af2 486 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#243">243</link>:
03a32789 487 <emphasis>get and getline when sentry reports failure</emphasis>
8a165db0
BK
488 </term>
489 <listitem><para>Store a null character only if the character array has a non-zero size.
490 </para></listitem></varlistentry>
491
c6a21af2 492 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#251">251</link>:
03a32789 493 <emphasis>basic_stringbuf missing allocator_type</emphasis>
8a165db0
BK
494 </term>
495 <listitem><para>This nested typedef was originally not specified.
496 </para></listitem></varlistentry>
497
c6a21af2 498 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#253">253</link>:
03a32789 499 <emphasis>valarray helper functions are almost entirely useless</emphasis>
8a165db0
BK
500 </term>
501 <listitem><para>Make the copy constructor and copy-assignment operator declarations
03a32789 502 public in gslice_array, indirect_array, mask_array, slice_array; provide
8a165db0
BK
503 definitions.
504 </para></listitem></varlistentry>
505
c6a21af2 506 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#265">265</link>:
03a32789 507 <emphasis>std::pair::pair() effects overly restrictive</emphasis>
8a165db0
BK
508 </term>
509 <listitem><para>The default ctor would build its members from copies of temporaries;
03a32789 510 now it simply uses their respective default ctors.
8a165db0
BK
511 </para></listitem></varlistentry>
512
c6a21af2 513 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#266">266</link>:
03a32789 514 <emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis>
8a165db0
BK
515 </term>
516 <listitem><para>The <code>bad_</code>* classes no longer have destructors (they
03a32789 517 are trivial), since no description of them was ever given.
8a165db0
BK
518 </para></listitem></varlistentry>
519
c6a21af2 520 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#271">271</link>:
03a32789 521 <emphasis>basic_iostream missing typedefs</emphasis>
8a165db0
BK
522 </term>
523 <listitem><para>The typedefs it inherits from its base classes can't be used, since
03a32789 524 (for example) <code>basic_iostream&lt;T&gt;::traits_type</code> is ambiguous.
8a165db0
BK
525 </para></listitem></varlistentry>
526
c6a21af2 527 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#275">275</link>:
03a32789 528 <emphasis>Wrong type in num_get::get() overloads</emphasis>
8a165db0
BK
529 </term>
530 <listitem><para>Similar to 118.
531 </para></listitem></varlistentry>
532
c6a21af2 533 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#280">280</link>:
03a32789 534 <emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis>
8a165db0
BK
535 </term>
536 <listitem><para>Add global functions with two template parameters.
03a32789 537 (NB: not added for now a templated assignment operator)
8a165db0
BK
538 </para></listitem></varlistentry>
539
c6a21af2 540 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#292">292</link>:
03a32789 541 <emphasis>Effects of a.copyfmt (a)</emphasis>
8a165db0
BK
542 </term>
543 <listitem><para>If <code>(this == &amp;rhs)</code> do nothing.
544 </para></listitem></varlistentry>
545
c6a21af2 546 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#300">300</link>:
03a32789 547 <emphasis>List::merge() specification incomplete</emphasis>
8a165db0
BK
548 </term>
549 <listitem><para>If <code>(this == &amp;x)</code> do nothing.
550 </para></listitem></varlistentry>
551
c6a21af2 552 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#303">303</link>:
03a32789 553 <emphasis>Bitset input operator underspecified</emphasis>
8a165db0 554 </term>
03a32789
BK
555 <listitem><para>Basically, compare the input character to
556 <code>is.widen(0)</code> and <code>is.widen(1)</code>.
8a165db0
BK
557 </para></listitem></varlistentry>
558
c6a21af2 559 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#305">305</link>:
03a32789
BK
560 <emphasis>Default behavior of codecvt&lt;wchar_t, char,
561 mbstate_t&gt;::length()</emphasis>
8a165db0 562 </term>
03a32789
BK
563 <listitem><para>Do not specify what <code>codecvt&lt;wchar_t, char,
564 mbstate_t&gt;::do_length</code> must return.
8a165db0
BK
565 </para></listitem></varlistentry>
566
c6a21af2 567 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#328">328</link>:
03a32789
BK
568 <emphasis>Bad sprintf format modifier in
569 money_put&lt;&gt;::do_put()</emphasis>
8a165db0 570 </term>
c6a21af2 571 <listitem><para>Change the format string to "%.0Lf".
8a165db0
BK
572 </para></listitem></varlistentry>
573
c6a21af2 574 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#365">365</link>:
03a32789 575 <emphasis>Lack of const-qualification in clause 27</emphasis>
8a165db0
BK
576 </term>
577 <listitem><para>Add const overloads of <code>is_open</code>.
578 </para></listitem></varlistentry>
579
c6a21af2 580 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#387">387</link>:
03a32789 581 <emphasis>std::complex over-encapsulated</emphasis>
23ed71c6
PC
582 </term>
583 <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
f25481f4 584 members; in C++11 mode, also adjust the existing
03a32789
BK
585 <code>real()</code> and <code>imag()</code> members and
586 free functions.
23ed71c6
PC
587 </para></listitem></varlistentry>
588
c6a21af2 589 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#389">389</link>:
03a32789
BK
590 <emphasis>Const overload of valarray::operator[] returns
591 by value</emphasis>
8a165db0
BK
592 </term>
593 <listitem><para>Change it to return a <code>const T&amp;</code>.
594 </para></listitem></varlistentry>
595
c6a21af2 596 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#396">396</link>:
03a32789 597 <emphasis>what are characters zero and one</emphasis>
47cd1557
PC
598 </term>
599 <listitem><para>Implement the proposed resolution.
600 </para></listitem></varlistentry>
601
c6a21af2 602 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#402">402</link>:
03a32789 603 <emphasis>Wrong new expression in [some_]allocator::construct</emphasis>
8a165db0 604 </term>
c6a21af2 605 <listitem><para>Replace "new" with "::new".
8a165db0
BK
606 </para></listitem></varlistentry>
607
9594f433 608 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#408">408</link>:
03a32789
BK
609 <emphasis>
610 Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?
611 </emphasis>
05168714
PC
612 </term>
613 <listitem><para>Tweak the debug-mode checks in _Safe_iterator.
614 </para></listitem></varlistentry>
615
c6a21af2 616 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#409">409</link>:
03a32789 617 <emphasis>Closing an fstream should clear the error state</emphasis>
8a165db0
BK
618 </term>
619 <listitem><para>Have <code>open</code> clear the error flags.
620 </para></listitem></varlistentry>
621
c6a21af2 622 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#431">431</link>:
03a32789 623 <emphasis>Swapping containers with unequal allocators</emphasis>
8a165db0
BK
624 </term>
625 <listitem><para>Implement Option 3, as per N1599.
626 </para></listitem></varlistentry>
627
c6a21af2 628 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#432">432</link>:
03a32789 629 <emphasis>stringbuf::overflow() makes only one write position
8a165db0
BK
630 available</emphasis>
631 </term>
632 <listitem><para>Implement the resolution, beyond DR 169.
633 </para></listitem></varlistentry>
634
c6a21af2 635 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#434">434</link>:
03a32789 636 <emphasis>bitset::to_string() hard to use</emphasis>
8a165db0
BK
637 </term>
638 <listitem><para>Add three overloads, taking fewer template arguments.
639 </para></listitem></varlistentry>
640
c6a21af2 641 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#438">438</link>:
03a32789 642 <emphasis>Ambiguity in the "do the right thing" clause</emphasis>
8a165db0
BK
643 </term>
644 <listitem><para>Implement the resolution, basically cast less.
645 </para></listitem></varlistentry>
646
5d65efd4
JW
647 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#445">445</link>:
648 <emphasis>iterator_traits::reference unspecified for some iterator categories</emphasis>
649 </term>
650 <listitem><para>Change <code>istreambuf_iterator::reference</code> in C++11 mode.
651 </para></listitem></varlistentry>
652
c6a21af2 653 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#453">453</link>:
03a32789 654 <emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis>
8a165db0
BK
655 </term>
656 <listitem><para>Don't fail if the next pointer is null and newoff is zero.
657 </para></listitem></varlistentry>
658
c6a21af2 659 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#455">455</link>:
03a32789 660 <emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis>
8a165db0
BK
661 </term>
662 <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout.
663 </para></listitem></varlistentry>
664
c6a21af2 665 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#464">464</link>:
03a32789 666 <emphasis>Suggestion for new member functions in standard containers</emphasis>
8a165db0
BK
667 </term>
668 <listitem><para>Add <code>data()</code> to <code>std::vector</code> and
03a32789 669 <code>at(const key_type&amp;)</code> to <code>std::map</code>.
8a165db0
BK
670 </para></listitem></varlistentry>
671
5d65efd4
JW
672 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#467">467</link>:
673 <emphasis>char_traits::lt(), compare(), and memcmp()</emphasis>
674 </term>
675 <listitem><para>Change <code>lt</code>.
676 </para></listitem></varlistentry>
677
c6a21af2 678 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#508">508</link>:
03a32789 679 <emphasis>Bad parameters for ranlux64_base_01</emphasis>
8a165db0
BK
680 </term>
681 <listitem><para>Fix the parameters.
682 </para></listitem></varlistentry>
683
c6a21af2 684 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#512">512</link>:
03a32789 685 <emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis>
8a165db0
BK
686 </term>
687 <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it.
688 </para></listitem></varlistentry>
689
c6a21af2 690 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#526">526</link>:
03a32789 691 <emphasis>Is it undefined if a function in the standard changes in
8a165db0
BK
692 parameters?</emphasis>
693 </term>
694 <listitem><para>Use &amp;value.
695 </para></listitem></varlistentry>
696
c6a21af2 697 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#538">538</link>:
03a32789 698 <emphasis>241 again: Does unique_copy() require CopyConstructible
8a165db0
BK
699 and Assignable?</emphasis>
700 </term>
701 <listitem><para>In case of input_iterator/output_iterator rely on Assignability of
03a32789 702 input_iterator' value_type.
8a165db0
BK
703 </para></listitem></varlistentry>
704
9594f433 705 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#539">539</link>:
03a32789
BK
706 <emphasis>partial_sum and adjacent_difference should mention
707 requirements</emphasis>
8246b314
PC
708 </term>
709 <listitem><para>We were almost doing the right thing, just use std::move
03a32789 710 in adjacent_difference.
8246b314
PC
711 </para></listitem></varlistentry>
712
c6a21af2 713 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#541">541</link>:
03a32789 714 <emphasis>shared_ptr template assignment and void</emphasis>
8a165db0
BK
715 </term>
716 <listitem><para>Add an auto_ptr&lt;void&gt; specialization.
717 </para></listitem></varlistentry>
718
c6a21af2 719 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#543">543</link>:
03a32789 720 <emphasis>valarray slice default constructor</emphasis>
8a165db0
BK
721 </term>
722 <listitem><para>Follow the straightforward proposed resolution.
723 </para></listitem></varlistentry>
724
c6a21af2 725 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#550">550</link>:
03a32789 726 <emphasis>What should the return type of pow(float,int) be?</emphasis>
774c3d86 727 </term>
f25481f4 728 <listitem><para>In C++11 mode, remove the pow(float,int), etc., signatures.
774c3d86
PC
729 </para></listitem></varlistentry>
730
c6a21af2 731 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#586">586</link>:
03a32789 732 <emphasis>string inserter not a formatted function</emphasis>
8a165db0
BK
733 </term>
734 <listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
735 </para></listitem></varlistentry>
736
c6a21af2 737 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#596">596</link>:
03a32789 738 <emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis>
8a165db0
BK
739 </term>
740 <listitem><para>Add the missing modes to fopen_mode.
741 </para></listitem></varlistentry>
742
c6a21af2 743 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#630">630</link>:
03a32789 744 <emphasis>arrays of valarray</emphasis>
af4beb4b
PC
745 </term>
746 <listitem><para>Implement the simple resolution.
747 </para></listitem></varlistentry>
748
c6a21af2 749 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#660">660</link>:
03a32789 750 <emphasis>Missing bitwise operations</emphasis>
8a165db0
BK
751 </term>
752 <listitem><para>Add the missing operations.
753 </para></listitem></varlistentry>
754
c6a21af2 755 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#691">691</link>:
03a32789 756 <emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
64bd554c 757 </term>
f25481f4 758 <listitem><para>In C++11 mode add cbegin(size_type) and cend(size_type)
03a32789 759 to the unordered containers.
64bd554c
PC
760 </para></listitem></varlistentry>
761
c6a21af2 762 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#693">693</link>:
03a32789 763 <emphasis>std::bitset::all() missing</emphasis>
8a165db0
BK
764 </term>
765 <listitem><para>Add it, consistently with the discussion.
766 </para></listitem></varlistentry>
767
c6a21af2 768 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#695">695</link>:
03a32789 769 <emphasis>ctype&lt;char&gt;::classic_table() not accessible</emphasis>
8a165db0
BK
770 </term>
771 <listitem><para>Make the member functions table and classic_table public.
772 </para></listitem></varlistentry>
0fda18dd 773
c6a21af2 774 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#696">696</link>:
03a32789 775 <emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis>
6f0398bb
PC
776 </term>
777 <listitem><para>Implement the straightforward resolution.
778 </para></listitem></varlistentry>
779
c6a21af2 780 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#761">761</link>:
03a32789 781 <emphasis>unordered_map needs an at() member function</emphasis>
2aa5c17c 782 </term>
f25481f4 783 <listitem><para>In C++11 mode, add at() and at() const.
2aa5c17c
PC
784 </para></listitem></varlistentry>
785
c6a21af2 786 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#775">775</link>:
03a32789 787 <emphasis>Tuple indexing should be unsigned?</emphasis>
740508be 788 </term>
c6a21af2 789 <listitem><para>Implement the int -&gt; size_t replacements.
740508be
PC
790 </para></listitem></varlistentry>
791
c6a21af2 792 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#776">776</link>:
03a32789 793 <emphasis>Undescribed assign function of std::array</emphasis>
6a4533e5 794 </term>
f25481f4 795 <listitem><para>In C++11 mode, remove assign, add fill.
6a4533e5 796 </para></listitem></varlistentry>
3cd54fc9 797
c6a21af2 798 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#781">781</link>:
03a32789 799 <emphasis>std::complex should add missing C99 functions</emphasis>
3cd54fc9 800 </term>
f25481f4 801 <listitem><para>In C++11 mode, add std::proj.
3cd54fc9 802 </para></listitem></varlistentry>
caa8b3c6 803
c6a21af2 804 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#809">809</link>:
03a32789 805 <emphasis>std::swap should be overloaded for array types</emphasis>
caa8b3c6
PC
806 </term>
807 <listitem><para>Add the overload.
808 </para></listitem></varlistentry>
3fd29fa9 809
c6a21af2 810 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>:
03a32789 811 <emphasis>to_string needs updating with zero and one</emphasis>
19a6a2ea
PC
812 </term>
813 <listitem><para>Update / add the signatures.
814 </para></listitem></varlistentry>
82ab4b64 815
9594f433 816 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#865">865</link>:
03a32789 817 <emphasis>More algorithms that throw away information</emphasis>
82ab4b64
PC
818 </term>
819 <listitem><para>The traditional HP / SGI return type and value is blessed
03a32789 820 by the resolution of the DR.
82ab4b64 821 </para></listitem></varlistentry>
95707918
JW
822
823 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#1339">1339</link>:
824 <emphasis>uninitialized_fill_n should return the end of its range</emphasis>
825 </term>
826 <listitem><para>Return the end of the filled range.
827 </para></listitem></varlistentry>
828
75eb6443
JW
829 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2021">2021</link>:
830 <emphasis>Further incorrect uses of <code>result_of</code></emphasis>
831 </term>
832 <listitem><para>Correctly decay types in signature of <code>std::async</code>.
833 </para></listitem></varlistentry>
834
5d65efd4
JW
835 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2049">2049</link>:
836 <emphasis><code>is_destructible</code> underspecified</emphasis>
837 </term>
838 <listitem><para>Handle non-object types.
839 </para></listitem></varlistentry>
840
841 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2056">2056</link>:
842 <emphasis>future_errc enums start with value 0 (invalid value for broken_promise)</emphasis>
843 </term>
844 <listitem><para>Reorder enumerators.
845 </para></listitem></varlistentry>
846
847 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2059">2059</link>:
848 <emphasis>C++0x ambiguity problem with map::erase</emphasis>
849 </term>
850 <listitem><para>Add additional overloads.
851 </para></listitem></varlistentry>
852
5caff414
JW
853 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2063">2063</link>:
854 <emphasis>Contradictory requirements for string move assignment</emphasis>
855 </term>
856 <listitem><para>Respect propagation trait for move assignment.
857 </para></listitem></varlistentry>
858
859 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2064">2064</link>:
860 <emphasis>More noexcept issues in basic_string</emphasis>
861 </term>
862 <listitem><para>Add noexcept to the comparison operators.
863 </para></listitem></varlistentry>
864
5d65efd4
JW
865 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2067">2067</link>:
866 <emphasis>packaged_task should have deleted copy c'tor with const parameter</emphasis>
867 </term>
868 <listitem><para>Fix signatures.
869 </para></listitem></varlistentry>
870
871 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2101">2101</link>:
872 <emphasis>Some transformation types can produce impossible types</emphasis>
873 </term>
874 <listitem><para>Use the referenceable type concept.
875 </para></listitem></varlistentry>
876
877 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2106">2106</link>:
878 <emphasis>move_iterator wrapping iterators returning prvalues</emphasis>
879 </term>
880 <listitem><para>Change the <code>reference</code> type.
881 </para></listitem></varlistentry>
882
a2b5fdcb
JW
883 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2108">2108</link>:
884 <emphasis>No way to identify allocator types that always compare equal</emphasis>
885 </term>
886 <listitem><para>Define and use <code>is_always_equal</code> even for C++11.
887 </para></listitem></varlistentry>
888
5d65efd4
JW
889 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2118">2118</link>:
890 <emphasis><code>unique_ptr</code> for array does not support cv qualification conversion of actual argument</emphasis>
891 </term>
892 <listitem><para>Adjust constraints to allow safe conversions.
893 </para></listitem></varlistentry>
894
895 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2132">2132</link>:
896 <emphasis><code>std::function</code> ambiguity</emphasis>
897 </term>
898 <listitem><para>Constrain the constructor to only accept callable types.
899 </para></listitem></varlistentry>
900
901 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2141">2141</link>:
902 <emphasis><code>common_type</code> trait produces reference types</emphasis>
903 </term>
904 <listitem><para>Use <code>decay</code> for the result type.
905 </para></listitem></varlistentry>
906
907 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2144">2144</link>:
908 <emphasis>Missing <code>noexcept</code> specification in <code>type_index</code></emphasis>
909 </term>
910 <listitem><para>Add <code>noexcept</code>
911 </para></listitem></varlistentry>
912
913 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2145">2145</link>:
914 <emphasis><code>error_category</code> default constructor</emphasis>
915 </term>
916 <listitem><para>Declare a public constexpr constructor.
917 </para></listitem></varlistentry>
918
919 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2162">2162</link>:
920 <emphasis><code>allocator_traits::max_size</code> missing <code>noexcept</code></emphasis>
921 </term>
922 <listitem><para>Add <code>noexcept</code>.
923 </para></listitem></varlistentry>
924
925 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2187">2187</link>:
926 <emphasis><code>vector&lt;bool&gt;</code> is missing <code>emplace</code> and <code>emplace_back</code> member functions</emphasis>
927 </term>
928 <listitem><para>Add <code>emplace</code> and <code>emplace_back</code> member functions.
929 </para></listitem></varlistentry>
930
931 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2196">2196</link>:
932 <emphasis>Specification of <code>is_*[copy/move]_[constructible/assignable]</code> unclear for non-referencable types</emphasis>
933 </term>
934 <listitem><para>Use the referenceable type concept.
935 </para></listitem></varlistentry>
936
1b24fb4c
JW
937 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2212">2212</link>:
938 <emphasis><code>tuple_size</code> for <code>const pair</code> request <code>&lt;tuple&gt;</code> header</emphasis>
939 </term>
940 <listitem><para>The <code>tuple_size</code> and <code>tuple_element</code>
941 partial specializations are defined in <code>&lt;utility&gt;</code> which
942 is included by <code>&lt;array&gt;</code>.
943 </para></listitem></varlistentry>
944
5d65efd4
JW
945 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2313">2313</link>:
946 <emphasis><code>tuple_size</code> should always derive from <code>integral_constant&lt;size_t, N&gt;</code></emphasis>
947 </term>
948 <listitem><para>Update definitions of the partial specializations for const and volatile types.
949 </para></listitem></varlistentry>
950
07c772ed
JW
951 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2328">2328</link>:
952 <emphasis>Rvalue stream extraction should use perfect forwarding</emphasis>
953 </term>
954 <listitem><para>Use perfect forwarding for right operand.
955 </para></listitem></varlistentry>
956
5d65efd4
JW
957 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2329">2329</link>:
958 <emphasis><code>regex_match()/regex_search()</code> with <code>match_results</code> should forbid temporary strings</emphasis>
959 </term>
960 <listitem><para>Add deleted overloads for rvalue strings.
961 </para></listitem></varlistentry>
962
963 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2332">2332</link>:
964 <emphasis><code>regex_iterator/regex_token_iterator</code> should forbid temporary regexes</emphasis>
965 </term>
966 <listitem><para>Add deleted constructors.
967 </para></listitem></varlistentry>
968
969 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2399">2399</link>:
970 <emphasis><code>shared_ptr</code>'s constructor from <code>unique_ptr</code> should be constrained</emphasis>
971 </term>
972 <listitem><para>Constrain the constructor to require convertibility.
973 </para></listitem></varlistentry>
974
975 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2400">2400</link>:
976 <emphasis><code>shared_ptr</code>'s <code>get_deleter()</code> should use <code>addressof()</code></emphasis>
977 </term>
978 <listitem><para>Use <code>addressof</code>.
979 </para></listitem></varlistentry>
980
981 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2401">2401</link>:
982 <emphasis><code>std::function</code> needs more <code>noexcept</code></emphasis>
983 </term>
984 <listitem><para>Add <code>noexcept</code> to the assignment and comparisons.
985 </para></listitem></varlistentry>
986
987 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2407">2407</link>:
988 <emphasis><code>packaged_task(allocator_arg_t, const Allocator&amp;, F&amp;&amp;)</code>
989 should neither be constrained nor <code>explicit</code>
990 </emphasis>
991 </term>
992 <listitem><para>Remove <code>explicit</code> from the constructor.
993 </para></listitem></varlistentry>
994
995 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2415">2415</link>:
996 <emphasis>Inconsistency between <code>unique_ptr</code> and <code>shared_ptr</code></emphasis>
997 </term>
998 <listitem><para>Create empty an <code>shared_ptr</code> from an empty
999 <code>unique_ptr</code>.
1000 </para></listitem></varlistentry>
1001
1002 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2418">2418</link>:
1003 <emphasis><code>apply</code> does not work with member pointers</emphasis>
1004 </term>
1005 <listitem><para>Use <code>mem_fn</code> for member pointers.
1006 </para></listitem></varlistentry>
1007
1008 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2440">2440</link>:
1009 <emphasis><code>seed_seq::size()</code> should be <code>noexcept</code></emphasis>
1010 </term>
1011 <listitem><para>Add <code>noexcept</code>.
1012 </para></listitem></varlistentry>
1013
1014 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2454">2454</link>:
1015 <emphasis>Add <code>raw_storage_iterator::base()</code> member
1016 </emphasis>
1017 </term>
1018 <listitem><para>Add the <code>base()</code> member function.
1019 </para></listitem></varlistentry>
1020
1021 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2455">2455</link>:
1022 <emphasis>Allocator default construction should be allowed to throw
1023 </emphasis>
1024 </term>
1025 <listitem><para>Make <code>noexcept</code> specifications conditional.
1026 </para></listitem></varlistentry>
1027
7cbadfdc
JW
1028 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2458">2458</link>:
1029 <emphasis>N3778 and new library deallocation signatures
1030 </emphasis>
1031 </term>
1032 <listitem><para>Remove unused overloads.
1033 </para></listitem></varlistentry>
1034
5d65efd4
JW
1035 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2459">2459</link>:
1036 <emphasis><code>std::polar</code> should require a non-negative rho
1037 </emphasis>
1038 </term>
1039 <listitem><para>Add debug mode assertion.
1040 </para></listitem></varlistentry>
1041
1042 <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#2466">2466</link>:
1043 <emphasis><code>allocator_traits::max_size()</code> default behavior is incorrect
1044 </emphasis>
1045 </term>
1046 <listitem><para>Divide by the object type.
1047 </para></listitem></varlistentry>
1048
1049
8a165db0
BK
1050 </variablelist>
1051
c6a21af2
BK
1052 </section>
1053 </section>
8a165db0
BK
1054</chapter>
1055
1056
1057<!-- Chapter 02 : Setup -->
c6a21af2 1058<chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info>
5e623d0b 1059 <?dbhtml filename="setup.html"?>
c6a21af2 1060
8a165db0 1061
41061822
BK
1062 <para>To transform libstdc++ sources into installed include files
1063 and properly built binaries useful for linking to other software is
1064 a multi-step process. Steps include getting the sources,
1065 configuring and building the sources, testing, and installation.
1066 </para>
1067
1068 <para>The general outline of commands is something like:
1069 </para>
1070
1071 <programlisting>
f0bb8736
JW
1072 <replaceable>get gcc sources</replaceable>
1073 <replaceable>extract into gccsrcdir</replaceable>
1074 mkdir <replaceable>gccbuilddir</replaceable>
1075 cd <replaceable>gccbuilddir</replaceable>
1076 <replaceable>gccsrcdir</replaceable>/configure --prefix=<replaceable>destdir</replaceable> --other-opts...
41061822
BK
1077 make
1078 make check
1079 make install
1080 </programlisting>
1081
1082 <para>
1083 Each step is described in more detail in the following sections.
1084 </para>
1085
1086 <!-- Section 01 : Prerequisites -->
c6a21af2 1087 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml">
8a165db0
BK
1088 </xi:include>
1089
41061822 1090 <!-- Section 02 : Configure -->
c6a21af2 1091 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml">
8a165db0
BK
1092 </xi:include>
1093
41061822 1094 <!-- Section 03 : Make -->
c6a21af2 1095<section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info>
5e623d0b 1096 <?dbhtml filename="make.html"?>
c6a21af2 1097
41061822 1098 <para>If you have never done this before, you should read the basic
c6a21af2
BK
1099 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation
1100 Instructions</link> first. Read <emphasis>all of them</emphasis>.
41061822
BK
1101 <emphasis>Twice.</emphasis>
1102 </para>
1103
8d825422 1104<para>Then type: <command>make</command>, and congratulations, you've
41061822
BK
1105started to build.
1106</para>
1107
c6a21af2 1108</section>
41061822 1109
8a165db0
BK
1110</chapter>
1111
8a165db0 1112<!-- Chapter 03 : Using -->
c6a21af2 1113<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml">
8a165db0
BK
1114</xi:include>
1115
1116</part>
This page took 0.992796 seconds and 5 git commands to generate.