]>
Commit | Line | Data |
---|---|---|
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 |
82 | GCC RUNTIME LIBRARY EXCEPTION |
83 | ||
84 | Version 3.1, 31 March 2009 | |
85 | ||
fb8c6cc9 | 86 | Copyright (C) 2009 <ulink url="http://www.fsf.org">Free Software Foundation, Inc.</ulink> |
748086b7 JJ |
87 | |
88 | Everyone is permitted to copy and distribute verbatim copies of this | |
89 | license document, but changing it is not allowed. | |
90 | ||
91 | This GCC Runtime Library Exception ("Exception") is an additional | |
92 | permission under section 7 of the GNU General Public License, version | |
93 | 3 ("GPLv3"). It applies to a given file (the "Runtime Library") that | |
94 | bears a notice placed by the copyright holder of the file stating that | |
95 | the file is governed by GPLv3 along with this Exception. | |
96 | ||
97 | When you use GCC to compile a program, GCC may combine portions of | |
98 | certain GCC header files and runtime libraries with the compiled | |
99 | program. The purpose of this Exception is to allow compilation of | |
100 | non-GPL (including proprietary) programs to use, in this way, the | |
101 | header files and runtime libraries covered by this Exception. | |
102 | ||
103 | 0. Definitions. | |
104 | ||
105 | A file is an "Independent Module" if it either requires the Runtime | |
106 | Library for execution after a Compilation Process, or makes use of an | |
107 | interface provided by the Runtime Library, but is not otherwise based | |
108 | on the Runtime Library. | |
109 | ||
110 | "GCC" means a version of the GNU Compiler Collection, with or without | |
111 | modifications, governed by version 3 (or a specified later version) of | |
112 | the GNU General Public License (GPL) with the option of using any | |
113 | subsequent versions published by the FSF. | |
114 | ||
115 | "GPL-compatible Software" is software whose conditions of propagation, | |
116 | modification and use would permit combination with GCC in accord with | |
117 | the license of GCC. | |
118 | ||
119 | "Target Code" refers to output from any compiler for a real or virtual | |
120 | target processor architecture, in executable form or suitable for | |
121 | input to an assembler, loader, linker and/or execution | |
122 | phase. Notwithstanding that, Target Code does not include data in any | |
123 | format that is used as a compiler intermediate representation, or used | |
124 | for producing a compiler intermediate representation. | |
125 | ||
126 | The "Compilation Process" transforms code entirely represented in | |
127 | non-intermediate languages designed for human-written code, and/or in | |
128 | Java Virtual Machine byte code, into Target Code. Thus, for example, | |
129 | use of source code generators and preprocessors need not be considered | |
130 | part of the Compilation Process, since the Compilation Process can be | |
131 | understood as starting with the output of the generators or | |
132 | preprocessors. | |
133 | ||
134 | A Compilation Process is "Eligible" if it is done using GCC, alone or | |
135 | with other GPL-compatible software, or if it is done without using any | |
136 | work based on GCC. For example, using non-GPL-compatible Software to | |
137 | optimize any GCC intermediate representations would not qualify as an | |
138 | Eligible Compilation Process. | |
139 | ||
140 | 1. Grant of Additional Permission. | |
141 | ||
142 | You have permission to propagate a work of Target Code formed by | |
143 | combining the Runtime Library with Independent Modules, even if such | |
144 | propagation would otherwise violate the terms of GPLv3, provided that | |
145 | all Target Code was generated by Eligible Compilation Processes. You | |
146 | may then convey such a combination under terms of your choice, | |
147 | consistent with the licensing of the Independent Modules. | |
148 | ||
149 | 2. No Weakening of GCC Copyleft. | |
150 | ||
151 | The availability of this Exception does not imply any general | |
152 | presumption that third-party software is unaffected by the copyleft | |
153 | requirements 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 "Readings" | |
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>"Noconv" 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<< 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 | "copying stream state" 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&</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>> 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>> and getline() for string<> |
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<>::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<<</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>>(istream&, string&) doesn't set failbit</emphasis> |
8a165db0 BK |
454 | </term> |
455 | <listitem><para>If nothing is extracted into the string, <code>op>></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<T>::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 == &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 == &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<wchar_t, char, |
570 | mbstate_t>::length()</emphasis> | |
8a165db0 | 571 | </term> |
03a32789 BK |
572 | <listitem><para>Do not specify what <code>codecvt<wchar_t, char, |
573 | mbstate_t>::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<>::do_put()</emphasis> | |
8a165db0 BK |
579 | </term> |
580 | <listitem><para>Change the format string to "%.0Lf". | |
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&</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 "new" with "::new". | |
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<reverse_iterator<char*> > 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&)</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 &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<void> 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<char>::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>>(int&) 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<T>, 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 |
882 | started 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> |