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