]>
Commit | Line | Data |
---|---|---|
8a165db0 BK |
1 | <?xml version='1.0'?> |
2 | <!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" | |
3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" | |
4 | [ ]> | |
5 | ||
6 | <part id="manual.intro" xreflabel="Introduction"> | |
7 | <?dbhtml filename="intro.html"?> | |
8 | ||
9 | <partinfo> | |
10 | <keywordset> | |
11 | <keyword> | |
12 | ISO C++ | |
13 | </keyword> | |
14 | <keyword> | |
15 | library | |
16 | </keyword> | |
17 | </keywordset> | |
18 | </partinfo> | |
19 | ||
20 | <title>Introduction</title> | |
21 | ||
22 | <!-- Chapter 01 : Status --> | |
23 | <chapter id="manual.intro.status" xreflabel="Status"> | |
24 | <title>Status</title> | |
25 | ||
26 | ||
27 | <sect1 id="manual.intro.status.standard" xreflabel="Implementation Status"> | |
28 | <title>Implementation Status</title> | |
29 | ||
30 | <!-- Section 01 : Status C++ 1998 --> | |
31 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
32 | parse="xml" href="status_cxx1998.xml"> | |
33 | </xi:include> | |
34 | ||
35 | <!-- Section 02 : Status C++ TR1 --> | |
36 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
37 | parse="xml" href="status_cxxtr1.xml"> | |
38 | </xi:include> | |
39 | ||
40 | <!-- Section 03 : Status C++ 200x --> | |
41 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
42 | parse="xml" href="status_cxx200x.xml"> | |
43 | </xi:include> | |
44 | </sect1> | |
45 | ||
46 | <!-- Section 02 : License --> | |
47 | <sect1 id="manual.intro.status.license" xreflabel="License"> | |
48 | <title>License</title> | |
49 | <para> | |
50 | There are two licenses affecting GNU libstdc++: one for the code, | |
51 | and one for the documentation. | |
52 | </para> | |
53 | ||
54 | <para> | |
55 | There is a license section in the FAQ regarding common <link | |
56 | linkend="faq.license">questions</link>. If you have more | |
57 | questions, ask the FSF or the <ulink | |
58 | url="http://gcc.gnu.org/lists.html">gcc mailing list</ulink>. | |
59 | </para> | |
60 | ||
61 | <sect2 id="manual.intro.status.license.gpl" xreflabel="License GPL"> | |
62 | <title>The Code: GPL</title> | |
63 | ||
64 | <para> | |
65 | The source code is distributed under the <link | |
66 | linkend="appendix.gpl-2.0">GNU General Public License version 2</link>, | |
67 | with the so-called <quote>Runtime Exception</quote> | |
68 | as follows (or see any header or implementation file): | |
69 | </para> | |
70 | ||
71 | <literallayout> | |
72 | As a special exception, you may use this file as part of a free software | |
73 | library without restriction. Specifically, if other files instantiate | |
74 | templates or use macros or inline functions from this file, or you compile | |
75 | this file and link it with other files to produce an executable, this | |
76 | file does not by itself cause the resulting executable to be covered by | |
77 | the GNU General Public License. This exception does not however | |
78 | invalidate any other reasons why the executable file might be covered by | |
79 | the GNU General Public License. | |
80 | </literallayout> | |
81 | ||
82 | <para> | |
83 | Hopefully that text is self-explanatory. If it isn't, you need to speak | |
84 | to your lawyer, or the Free Software Foundation. | |
85 | </para> | |
86 | </sect2> | |
87 | ||
88 | <sect2 id="manual.intro.status.license.fdl" xreflabel="License FDL"> | |
89 | <title>The Documentation: GPL, FDL</title> | |
90 | ||
91 | <para> | |
92 | The documentation shipped with the library and made available over | |
93 | the web, excluding the pages generated from source comments, are | |
94 | copyrighted by the Free Software Foundation, and placed under the | |
95 | <link linkend="appendix.gfdl-1.2"> GNU Free Documentation | |
96 | License version 1.2</link>. There are no Front-Cover Texts, no | |
97 | Back-Cover Texts, and no Invariant Sections. | |
98 | </para> | |
99 | ||
100 | <para> | |
101 | For documentation generated by doxygen or other automated tools | |
102 | via processing source code comments and markup, the original source | |
103 | code license applies to the generated files. Thus, the doxygen | |
104 | documents are licensed <link linkend="appendix.gpl-2.0">GPL</link>. | |
105 | </para> | |
106 | ||
107 | <para> | |
108 | If you plan on making copies of the documentation, please let us know. | |
109 | We can probably offer suggestions. | |
110 | </para> | |
111 | </sect2> | |
112 | ||
113 | </sect1> | |
114 | ||
115 | <!-- Section 03 : Known Bugs --> | |
116 | <sect1 id="manual.intro.status.bugs" xreflabel="Bugs"> | |
117 | <title>Bugs</title> | |
118 | ||
119 | <sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"> | |
120 | <title>Implementation Bugs</title> | |
121 | <para> | |
122 | Information on known bugs, details on efforts to fix them, and | |
123 | fixed bugs are all available as part of the GCC bug tracking | |
124 | system, <ulink | |
125 | url="http://gcc.gnu.org/bugzilla">bugzilla</ulink>, with the | |
126 | category set to <literal>libstdc++</literal>. | |
127 | </para> | |
128 | </sect2> | |
129 | ||
130 | <sect2 id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"> | |
131 | <title>Standard Bugs</title> | |
132 | <para> | |
133 | Everybody's got issues. Even the C++ Standard Library. | |
134 | </para> | |
135 | <para> | |
136 | The Library Working Group, or LWG, is the ISO subcommittee responsible | |
137 | for making changes to the library. They periodically publish an | |
138 | Issues List containing problems and possible solutions. As they reach | |
139 | a consensus on proposed solutions, we often incorporate the solution. | |
140 | </para> | |
141 | <para> | |
142 | Here are the issues which have resulted in code changes to the library. | |
143 | The links are to the specific defect reports from a <emphasis>partial | |
144 | copy</emphasis> of the Issues List. You can read the full version online | |
145 | at the <ulink url="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ | |
146 | Committee homepage</ulink>, linked to on the | |
147 | <ulink url="http://gcc.gnu.org/readings.html">GCC "Readings" | |
148 | page</ulink>. If | |
149 | you spend a lot of time reading the issues, we recommend downloading | |
150 | the ZIP file and reading them locally. | |
151 | </para> | |
152 | <para> | |
153 | (NB: <emphasis>partial copy</emphasis> means that not all | |
154 | links within the lwg-*.html pages will work. Specifically, | |
155 | links to defect reports that have not been accorded full DR | |
156 | status will probably break. Rather than trying to mirror the | |
157 | entire issues list on our overworked web server, we recommend | |
158 | you go to the LWG homepage instead.) | |
159 | </para> | |
160 | <para> | |
161 | If a DR is not listed here, we may simply not have gotten to | |
162 | it yet; feel free to submit a patch. Search the include/bits | |
163 | and src directories for appearances of | |
164 | <constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples | |
165 | of style. Note that we usually do not make changes to the | |
166 | code until an issue has reached <ulink url="lwg-active.html#DR">DR</ulink> status. | |
167 | </para> | |
168 | ||
169 | <variablelist> | |
170 | <varlistentry><term><ulink url="lwg-defects.html#5">5</ulink>: | |
171 | <emphasis>string::compare specification questionable</emphasis> | |
172 | </term> | |
173 | <listitem><para>This should be two overloaded functions rather than a single function. | |
174 | </para></listitem></varlistentry> | |
175 | ||
176 | <varlistentry><term><ulink url="lwg-defects.html#17">17</ulink>: | |
177 | <emphasis>Bad bool parsing</emphasis> | |
178 | </term> | |
179 | <listitem><para>Apparently extracting Boolean values was messed up... | |
180 | </para></listitem></varlistentry> | |
181 | ||
182 | <varlistentry><term><ulink url="lwg-defects.html#19">19</ulink>: | |
183 | <emphasis>"Noconv" definition too vague</emphasis> | |
184 | </term> | |
185 | <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are | |
186 | no changes to the values in <code>[to, to_limit)</code>. | |
187 | </para></listitem></varlistentry> | |
188 | ||
189 | <varlistentry><term><ulink url="lwg-defects.html#22">22</ulink>: | |
190 | <emphasis>Member open vs flags</emphasis> | |
191 | </term> | |
192 | <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags. | |
193 | </para></listitem></varlistentry> | |
194 | ||
195 | <varlistentry><term><ulink url="lwg-defects.html#25">25</ulink>: | |
196 | <emphasis>String operator<< uses width() value wrong</emphasis> | |
197 | </term> | |
198 | <listitem><para>Padding issues. | |
199 | </para></listitem></varlistentry> | |
200 | ||
201 | <varlistentry><term><ulink url="lwg-defects.html#48">48</ulink>: | |
202 | <emphasis>Use of non-existent exception constructor</emphasis> | |
203 | </term> | |
204 | <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead. | |
205 | </para></listitem></varlistentry> | |
206 | ||
207 | <varlistentry><term><ulink url="lwg-defects.html#49">49</ulink>: | |
208 | <emphasis>Underspecification of ios_base::sync_with_stdio</emphasis> | |
209 | </term> | |
210 | <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization. | |
211 | </para></listitem></varlistentry> | |
212 | ||
213 | <varlistentry><term><ulink url="lwg-defects.html#50">50</ulink>: | |
214 | <emphasis>Copy constructor and assignment operator of ios_base</emphasis> | |
215 | </term> | |
216 | <listitem><para>These members functions are declared <code>private</code> and are | |
217 | thus inaccessible. Specifying the correct semantics of | |
218 | "copying stream state" was deemed too complicated. | |
219 | </para></listitem></varlistentry> | |
220 | ||
221 | <varlistentry><term><ulink url="lwg-defects.html#60">60</ulink>: | |
222 | <emphasis>What is a formatted input function?</emphasis> | |
223 | </term> | |
224 | <listitem><para>This DR made many widespread changes to <code>basic_istream</code> | |
225 | and <code>basic_ostream</code> all of which have been implemented. | |
226 | </para></listitem></varlistentry> | |
227 | ||
228 | <varlistentry><term><ulink url="lwg-defects.html#63">63</ulink>: | |
229 | <emphasis>Exception-handling policy for unformatted output</emphasis> | |
230 | </term> | |
231 | <listitem><para>Make the policy consistent with that of formatted input, unformatted | |
232 | input, and formatted output. | |
233 | </para></listitem></varlistentry> | |
234 | ||
235 | <varlistentry><term><ulink url="lwg-defects.html#68">68</ulink>: | |
236 | <emphasis>Extractors for char* should store null at end</emphasis> | |
237 | </term> | |
238 | <listitem><para>And they do now. An editing glitch in the last item in the list of | |
239 | [27.6.1.2.3]/7. | |
240 | </para></listitem></varlistentry> | |
241 | ||
242 | <varlistentry><term><ulink url="lwg-defects.html#74">74</ulink>: | |
243 | <emphasis>Garbled text for codecvt::do_max_length</emphasis> | |
244 | </term> | |
245 | <listitem><para>The text of the standard was gibberish. Typos gone rampant. | |
246 | </para></listitem></varlistentry> | |
247 | ||
248 | <varlistentry><term><ulink url="lwg-defects.html#75">75</ulink>: | |
249 | <emphasis>Contradiction in codecvt::length's argument types</emphasis> | |
250 | </term> | |
251 | <listitem><para>Change the first parameter to <code>stateT&</code> and implement | |
252 | the new effects paragraph. | |
253 | </para></listitem></varlistentry> | |
254 | ||
255 | <varlistentry><term><ulink url="lwg-defects.html#83">83</ulink>: | |
256 | <emphasis>string::npos vs. string::max_size()</emphasis> | |
257 | </term> | |
258 | <listitem><para>Safety checks on the size of the string should test against | |
259 | <code>max_size()</code> rather than <code>npos</code>. | |
260 | </para></listitem></varlistentry> | |
261 | ||
262 | <varlistentry><term><ulink url="lwg-defects.html#90">90</ulink>: | |
263 | <emphasis>Incorrect description of operator>> for strings</emphasis> | |
264 | </term> | |
265 | <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be | |
266 | replaced by <code>isspace(c,is.getloc())</code>. | |
267 | </para></listitem></varlistentry> | |
268 | ||
269 | <varlistentry><term><ulink url="lwg-defects.html#91">91</ulink>: | |
270 | <emphasis>Description of operator>> and getline() for string<> | |
271 | might cause endless loop</emphasis> | |
272 | </term> | |
273 | <listitem><para>They behave as a formatted input function and as an unformatted | |
274 | input function, respectively (except that <code>getline</code> is | |
275 | not required to set <code>gcount</code>). | |
276 | </para></listitem></varlistentry> | |
277 | ||
278 | <varlistentry><term><ulink url="lwg-defects.html#103">103</ulink>: | |
279 | <emphasis>set::iterator is required to be modifiable, but this allows | |
280 | modification of keys.</emphasis> | |
281 | </term> | |
282 | <listitem><para>For associative containers where the value type is the same as | |
283 | the key type, both <code>iterator</code> and <code>const_iterator | |
284 | </code> are constant iterators. | |
285 | </para></listitem></varlistentry> | |
286 | ||
287 | <varlistentry><term><ulink url="lwg-defects.html#109">109</ulink>: | |
288 | <emphasis>Missing binders for non-const sequence elements</emphasis> | |
289 | </term> | |
290 | <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an | |
291 | <code>operator()</code> taking a non-const parameter. | |
292 | </para></listitem></varlistentry> | |
293 | ||
294 | <varlistentry><term><ulink url="lwg-defects.html#110">110</ulink>: | |
295 | <emphasis>istreambuf_iterator::equal not const</emphasis> | |
296 | </term> | |
297 | <listitem><para>This was not a const member function. Note that the DR says to | |
298 | replace the function with a const one; we have instead provided an | |
299 | overloaded version with identical contents. | |
300 | </para></listitem></varlistentry> | |
301 | ||
302 | <varlistentry><term><ulink url="lwg-defects.html#117">117</ulink>: | |
303 | <emphasis>basic_ostream uses nonexistent num_put member functions</emphasis> | |
304 | </term> | |
305 | <listitem><para><code>num_put::put()</code> was overloaded on the wrong types. | |
306 | </para></listitem></varlistentry> | |
307 | ||
308 | <varlistentry><term><ulink url="lwg-defects.html#118">118</ulink>: | |
309 | <emphasis>basic_istream uses nonexistent num_get member functions</emphasis> | |
310 | </term> | |
311 | <listitem><para>Same as 117, but for <code>num_get::get()</code>. | |
312 | </para></listitem></varlistentry> | |
313 | ||
314 | <varlistentry><term><ulink url="lwg-defects.html#129">129</ulink>: | |
315 | <emphasis>Need error indication from seekp() and seekg()</emphasis> | |
316 | </term> | |
317 | <listitem><para>These functions set <code>failbit</code> on error now. | |
318 | </para></listitem></varlistentry> | |
319 | ||
320 | <varlistentry><term><ulink url="lwg-defects.html#136">136</ulink>: | |
321 | <emphasis>seekp, seekg setting wrong streams?</emphasis> | |
322 | </term> | |
323 | <listitem><para><code>seekp</code> should only set the output stream, and | |
324 | <code>seekg</code> should only set the input stream. | |
325 | </para></listitem></varlistentry> | |
326 | ||
327 | <!--<varlistentry><term><ulink url="lwg-defects.html#159">159</ulink>: | |
328 | <emphasis>Strange use of underflow()</emphasis> | |
329 | </term> | |
330 | <listitem><para>In fstream.tcc, the basic_filebuf<>::showmanyc() function | |
331 | should probably not be calling <code>underflow()</code>. | |
332 | </para></listitem></varlistentry> --> | |
333 | ||
334 | <varlistentry><term><ulink url="lwg-defects.html#167">167</ulink>: | |
335 | <emphasis>Improper use of traits_type::length()</emphasis> | |
336 | </term> | |
337 | <listitem><para><code>op<<</code> with a <code>const char*</code> was | |
338 | calculating an incorrect number of characters to write. | |
339 | </para></listitem></varlistentry> | |
340 | ||
341 | <varlistentry><term><ulink url="lwg-defects.html#169">169</ulink>: | |
342 | <emphasis>Bad efficiency of overflow() mandated</emphasis> | |
343 | </term> | |
344 | <listitem><para>Grow efficiently the internal array object. | |
345 | </para></listitem></varlistentry> | |
346 | ||
347 | <varlistentry><term><ulink url="lwg-defects.html#171">171</ulink>: | |
348 | <emphasis>Strange seekpos() semantics due to joint position</emphasis> | |
349 | </term> | |
350 | <listitem><para>Quite complex to summarize... | |
351 | </para></listitem></varlistentry> | |
352 | ||
353 | <varlistentry><term><ulink url="lwg-defects.html#181">181</ulink>: | |
354 | <emphasis>make_pair() unintended behavior</emphasis> | |
355 | </term> | |
356 | <listitem><para>This function used to take its arguments as reference-to-const, now | |
357 | it copies them (pass by value). | |
358 | </para></listitem></varlistentry> | |
359 | ||
360 | <varlistentry><term><ulink url="lwg-defects.html#195">195</ulink>: | |
361 | <emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis> | |
362 | </term> | |
363 | <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace. | |
364 | </para></listitem></varlistentry> | |
365 | ||
366 | <varlistentry><term><ulink url="lwg-defects.html#211">211</ulink>: | |
367 | <emphasis>operator>>(istream&, string&) doesn't set failbit</emphasis> | |
368 | </term> | |
369 | <listitem><para>If nothing is extracted into the string, <code>op>></code> now | |
370 | sets <code>failbit</code> (which can cause an exception, etc., etc.). | |
371 | </para></listitem></varlistentry> | |
372 | ||
373 | <varlistentry><term><ulink url="lwg-defects.html#214">214</ulink>: | |
374 | <emphasis>set::find() missing const overload</emphasis> | |
375 | </term> | |
376 | <listitem><para>Both <code>set</code> and <code>multiset</code> were missing | |
377 | overloaded find, lower_bound, upper_bound, and equal_range functions | |
378 | for const instances. | |
379 | </para></listitem></varlistentry> | |
380 | ||
381 | <varlistentry><term><ulink url="lwg-defects.html#231">231</ulink>: | |
382 | <emphasis>Precision in iostream?</emphasis> | |
383 | </term> | |
384 | <listitem><para>For conversion from a floating-point type, <code>str.precision()</code> | |
385 | is specified in the conversion specification. | |
386 | </para></listitem></varlistentry> | |
387 | ||
388 | <varlistentry><term><ulink url="lwg-active.html#233">233</ulink>: | |
389 | <emphasis>Insertion hints in associative containers</emphasis> | |
390 | </term> | |
391 | <listitem><para>Implement N1780, first check before then check after, insert as close | |
392 | to hint as possible. | |
393 | </para></listitem></varlistentry> | |
394 | ||
395 | <varlistentry><term><ulink url="lwg-defects.html#235">235</ulink>: | |
396 | <emphasis>No specification of default ctor for reverse_iterator</emphasis> | |
397 | </term> | |
398 | <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor. | |
399 | However, no specification is given what this constructor should do. | |
400 | </para></listitem></varlistentry> | |
401 | ||
402 | <varlistentry><term><ulink url="lwg-defects.html#241">241</ulink>: | |
403 | <emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis> | |
404 | </term> | |
405 | <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing | |
406 | one for input_iterator/output_iterator to not rely on Assignability. | |
407 | </para></listitem></varlistentry> | |
408 | ||
409 | <varlistentry><term><ulink url="lwg-defects.html#243">243</ulink>: | |
410 | <emphasis>get and getline when sentry reports failure</emphasis> | |
411 | </term> | |
412 | <listitem><para>Store a null character only if the character array has a non-zero size. | |
413 | </para></listitem></varlistentry> | |
414 | ||
415 | <varlistentry><term><ulink url="lwg-defects.html#251">251</ulink>: | |
416 | <emphasis>basic_stringbuf missing allocator_type</emphasis> | |
417 | </term> | |
418 | <listitem><para>This nested typedef was originally not specified. | |
419 | </para></listitem></varlistentry> | |
420 | ||
421 | <varlistentry><term><ulink url="lwg-defects.html#253">253</ulink>: | |
422 | <emphasis>valarray helper functions are almost entirely useless</emphasis> | |
423 | </term> | |
424 | <listitem><para>Make the copy constructor and copy-assignment operator declarations | |
425 | public in gslice_array, indirect_array, mask_array, slice_array; provide | |
426 | definitions. | |
427 | </para></listitem></varlistentry> | |
428 | ||
429 | <varlistentry><term><ulink url="lwg-defects.html#265">265</ulink>: | |
430 | <emphasis>std::pair::pair() effects overly restrictive</emphasis> | |
431 | </term> | |
432 | <listitem><para>The default ctor would build its members from copies of temporaries; | |
433 | now it simply uses their respective default ctors. | |
434 | </para></listitem></varlistentry> | |
435 | ||
436 | <varlistentry><term><ulink url="lwg-defects.html#266">266</ulink>: | |
437 | <emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis> | |
438 | </term> | |
439 | <listitem><para>The <code>bad_</code>* classes no longer have destructors (they | |
440 | are trivial), since no description of them was ever given. | |
441 | </para></listitem></varlistentry> | |
442 | ||
443 | <varlistentry><term><ulink url="lwg-defects.html#271">271</ulink>: | |
444 | <emphasis>basic_iostream missing typedefs</emphasis> | |
445 | </term> | |
446 | <listitem><para>The typedefs it inherits from its base classes can't be used, since | |
447 | (for example) <code>basic_iostream<T>::traits_type</code> is ambiguous. | |
448 | </para></listitem></varlistentry> | |
449 | ||
450 | <varlistentry><term><ulink url="lwg-defects.html#275">275</ulink>: | |
451 | <emphasis>Wrong type in num_get::get() overloads</emphasis> | |
452 | </term> | |
453 | <listitem><para>Similar to 118. | |
454 | </para></listitem></varlistentry> | |
455 | ||
456 | <varlistentry><term><ulink url="lwg-defects.html#280">280</ulink>: | |
457 | <emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis> | |
458 | </term> | |
459 | <listitem><para>Add global functions with two template parameters. | |
460 | (NB: not added for now a templated assignment operator) | |
461 | </para></listitem></varlistentry> | |
462 | ||
463 | <varlistentry><term><ulink url="lwg-defects.html#292">292</ulink>: | |
464 | <emphasis>Effects of a.copyfmt (a)</emphasis> | |
465 | </term> | |
466 | <listitem><para>If <code>(this == &rhs)</code> do nothing. | |
467 | </para></listitem></varlistentry> | |
468 | ||
469 | <varlistentry><term><ulink url="lwg-defects.html#300">300</ulink>: | |
470 | <emphasis>List::merge() specification incomplete</emphasis> | |
471 | </term> | |
472 | <listitem><para>If <code>(this == &x)</code> do nothing. | |
473 | </para></listitem></varlistentry> | |
474 | ||
475 | <varlistentry><term><ulink url="lwg-defects.html#303">303</ulink>: | |
476 | <emphasis>Bitset input operator underspecified</emphasis> | |
477 | </term> | |
478 | <listitem><para>Basically, compare the input character to <code>is.widen(0)</code> | |
479 | and <code>is.widen(1)</code>. | |
480 | </para></listitem></varlistentry> | |
481 | ||
482 | <varlistentry><term><ulink url="lwg-defects.html#305">305</ulink>: | |
483 | <emphasis>Default behavior of codecvt<wchar_t, char, mbstate_t>::length()</emphasis> | |
484 | </term> | |
485 | <listitem><para>Do not specify what <code>codecvt<wchar_t, char, mbstate_t>::do_length</code> | |
486 | must return. | |
487 | </para></listitem></varlistentry> | |
488 | ||
489 | <varlistentry><term><ulink url="lwg-defects.html#328">328</ulink>: | |
490 | <emphasis>Bad sprintf format modifier in money_put<>::do_put()</emphasis> | |
491 | </term> | |
492 | <listitem><para>Change the format string to "%.0Lf". | |
493 | </para></listitem></varlistentry> | |
494 | ||
495 | <varlistentry><term><ulink url="lwg-defects.html#365">365</ulink>: | |
496 | <emphasis>Lack of const-qualification in clause 27</emphasis> | |
497 | </term> | |
498 | <listitem><para>Add const overloads of <code>is_open</code>. | |
499 | </para></listitem></varlistentry> | |
500 | ||
501 | <varlistentry><term><ulink url="lwg-defects.html#389">389</ulink>: | |
502 | <emphasis>Const overload of valarray::operator[] returns by value</emphasis> | |
503 | </term> | |
504 | <listitem><para>Change it to return a <code>const T&</code>. | |
505 | </para></listitem></varlistentry> | |
506 | ||
507 | <varlistentry><term><ulink url="lwg-defects.html#402">402</ulink>: | |
508 | <emphasis>Wrong new expression in [some_]allocator::construct</emphasis> | |
509 | </term> | |
510 | <listitem><para>Replace "new" with "::new". | |
511 | </para></listitem></varlistentry> | |
512 | ||
513 | <varlistentry><term><ulink url="lwg-defects.html#409">409</ulink>: | |
514 | <emphasis>Closing an fstream should clear the error state</emphasis> | |
515 | </term> | |
516 | <listitem><para>Have <code>open</code> clear the error flags. | |
517 | </para></listitem></varlistentry> | |
518 | ||
519 | <varlistentry><term><ulink url="lwg-active.html#431">431</ulink>: | |
520 | <emphasis>Swapping containers with unequal allocators</emphasis> | |
521 | </term> | |
522 | <listitem><para>Implement Option 3, as per N1599. | |
523 | </para></listitem></varlistentry> | |
524 | ||
525 | <varlistentry><term><ulink url="lwg-defects.html#432">432</ulink>: | |
526 | <emphasis>stringbuf::overflow() makes only one write position | |
527 | available</emphasis> | |
528 | </term> | |
529 | <listitem><para>Implement the resolution, beyond DR 169. | |
530 | </para></listitem></varlistentry> | |
531 | ||
532 | <varlistentry><term><ulink url="lwg-defects.html#434">434</ulink>: | |
533 | <emphasis>bitset::to_string() hard to use</emphasis> | |
534 | </term> | |
535 | <listitem><para>Add three overloads, taking fewer template arguments. | |
536 | </para></listitem></varlistentry> | |
537 | ||
538 | <varlistentry><term><ulink url="lwg-defects.html#438">438</ulink>: | |
539 | <emphasis>Ambiguity in the "do the right thing" clause</emphasis> | |
540 | </term> | |
541 | <listitem><para>Implement the resolution, basically cast less. | |
542 | </para></listitem></varlistentry> | |
543 | ||
544 | <varlistentry><term><ulink url="lwg-defects.html#453">453</ulink>: | |
545 | <emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis> | |
546 | </term> | |
547 | <listitem><para>Don't fail if the next pointer is null and newoff is zero. | |
548 | </para></listitem></varlistentry> | |
549 | ||
550 | <varlistentry><term><ulink url="lwg-defects.html#455">455</ulink>: | |
551 | <emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis> | |
552 | </term> | |
553 | <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout. | |
554 | </para></listitem></varlistentry> | |
555 | ||
556 | <varlistentry><term><ulink url="lwg-defects.html#464">464</ulink>: | |
557 | <emphasis>Suggestion for new member functions in standard containers</emphasis> | |
558 | </term> | |
559 | <listitem><para>Add <code>data()</code> to <code>std::vector</code> and | |
560 | <code>at(const key_type&)</code> to <code>std::map</code>. | |
561 | </para></listitem></varlistentry> | |
562 | ||
563 | <varlistentry><term><ulink url="lwg-defects.html#508">508</ulink>: | |
564 | <emphasis>Bad parameters for ranlux64_base_01</emphasis> | |
565 | </term> | |
566 | <listitem><para>Fix the parameters. | |
567 | </para></listitem></varlistentry> | |
568 | ||
569 | <varlistentry><term><ulink url="lwg-closed.html#512">512</ulink>: | |
570 | <emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis> | |
571 | </term> | |
572 | <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it. | |
573 | </para></listitem></varlistentry> | |
574 | ||
575 | <varlistentry><term><ulink url="lwg-closed.html#526">526</ulink>: | |
576 | <emphasis>Is it undefined if a function in the standard changes in | |
577 | parameters?</emphasis> | |
578 | </term> | |
579 | <listitem><para>Use &value. | |
580 | </para></listitem></varlistentry> | |
581 | ||
582 | <varlistentry><term><ulink url="lwg-defects.html#538">538</ulink>: | |
583 | <emphasis>241 again: Does unique_copy() require CopyConstructible | |
584 | and Assignable?</emphasis> | |
585 | </term> | |
586 | <listitem><para>In case of input_iterator/output_iterator rely on Assignability of | |
587 | input_iterator' value_type. | |
588 | </para></listitem></varlistentry> | |
589 | ||
590 | <varlistentry><term><ulink url="lwg-defects.html#541">541</ulink>: | |
591 | <emphasis>shared_ptr template assignment and void</emphasis> | |
592 | </term> | |
593 | <listitem><para>Add an auto_ptr<void> specialization. | |
594 | </para></listitem></varlistentry> | |
595 | ||
596 | <varlistentry><term><ulink url="lwg-defects.html#543">543</ulink>: | |
597 | <emphasis>valarray slice default constructor</emphasis> | |
598 | </term> | |
599 | <listitem><para>Follow the straightforward proposed resolution. | |
600 | </para></listitem></varlistentry> | |
601 | ||
602 | <varlistentry><term><ulink url="lwg-defects.html#586">586</ulink>: | |
603 | <emphasis>string inserter not a formatted function</emphasis> | |
604 | </term> | |
605 | <listitem><para>Change it to be a formatted output function (i.e. catch exceptions). | |
606 | </para></listitem></varlistentry> | |
607 | ||
608 | <varlistentry><term><ulink url="lwg-active.html#596">596</ulink>: | |
609 | <emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis> | |
610 | </term> | |
611 | <listitem><para>Add the missing modes to fopen_mode. | |
612 | </para></listitem></varlistentry> | |
613 | ||
614 | <varlistentry><term><ulink url="lwg-defects.html#660">660</ulink>: | |
615 | <emphasis>Missing bitwise operations</emphasis> | |
616 | </term> | |
617 | <listitem><para>Add the missing operations. | |
618 | </para></listitem></varlistentry> | |
619 | ||
620 | <varlistentry><term><ulink url="lwg-active.html#693">693</ulink>: | |
621 | <emphasis>std::bitset::all() missing</emphasis> | |
622 | </term> | |
623 | <listitem><para>Add it, consistently with the discussion. | |
624 | </para></listitem></varlistentry> | |
625 | ||
626 | <varlistentry><term><ulink url="lwg-active.html#695">695</ulink>: | |
627 | <emphasis>ctype<char>::classic_table() not accessible</emphasis> | |
628 | </term> | |
629 | <listitem><para>Make the member functions table and classic_table public. | |
630 | </para></listitem></varlistentry> | |
631 | </variablelist> | |
632 | ||
633 | </sect2> | |
634 | </sect1> | |
635 | </chapter> | |
636 | ||
637 | ||
638 | <!-- Chapter 02 : Setup --> | |
639 | <chapter id="manual.intro.setup" xreflabel="Setup"> | |
640 | <title>Setup</title> | |
641 | ||
642 | <!-- Section 01 : Configure --> | |
643 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
644 | parse="xml" href="configure.xml"> | |
645 | </xi:include> | |
646 | ||
647 | <!-- Section 02 : Build --> | |
648 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
649 | parse="xml" href="build.xml"> | |
650 | </xi:include> | |
651 | ||
652 | <!-- Section 03 : Test --> | |
653 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
654 | parse="xml" href="test.xml"> | |
655 | </xi:include> | |
656 | </chapter> | |
657 | ||
658 | ||
659 | <!-- Chapter 03 : Using --> | |
660 | <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | |
661 | parse="xml" href="using.xml"> | |
662 | </xi:include> | |
663 | ||
664 | </part> |