xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/doc/xml/manual/status_cxx1998.xml (revision b1e838363e3c6fc78a55519254d99869742dd33c)
1<section xmlns="http://docbook.org/ns/docbook" version="5.0"
2	 xml:id="status.iso.1998" xreflabel="ISO C++ 1998">
3<?dbhtml filename="status_iso_cxx1998.html"?>
4
5<info><title>C++ 1998/2003</title>
6  <keywordset>
7    <keyword>ISO C++</keyword>
8    <keyword>1998</keyword>
9  </keywordset>
10</info>
11
12
13<section xml:id="iso.1998.status" xreflabel="Implementation Status">
14<info><title>Implementation Status</title></info>
15
16<para>
17This status table is based on the table of contents of ISO/IEC 14882:2003.
18</para>
19
20<para>
21This section describes the C++ support in the GCC 12 release series,
22not in any particular release.
23</para>
24
25<!-- Status is Yes or No, Broken/Partial-->
26<!--
27   Yes
28
29   No
30      <?dbhtml bgcolor="#C8B0B0" ?>
31   Broken/Partial
32      <?dbhtml bgcolor="#B0B0B0" ?>
33-->
34<table frame="all" xml:id="table.cxx98_status">
35  <title>C++ 1998/2003 Implementation Status</title>
36
37<tgroup cols="4" align="left" colsep="0" rowsep="1">
38<colspec colname="c1"/>
39<colspec colname="c2"/>
40<colspec colname="c3"/>
41<colspec colname="c4"/>
42  <thead>
43    <row>
44      <entry>Section</entry>
45      <entry>Description</entry>
46      <entry>Status</entry>
47      <entry>Comments</entry>
48    </row>
49  </thead>
50
51  <tbody>
52    <row>
53      <entry>
54	<emphasis>18</emphasis>
55      </entry>
56      <entry namest="c2" nameend="c4" align="left">
57	<emphasis>Language support</emphasis>
58      </entry>
59    </row>
60
61    <row>
62      <entry>18.1</entry>
63      <entry>Types</entry>
64      <entry>Y</entry>
65      <entry/>
66    </row>
67    <row>
68      <entry>18.2</entry>
69      <entry>Implementation properties</entry>
70      <entry>Y</entry>
71      <entry/>
72    </row>
73    <row>
74      <entry>18.2.1</entry>
75      <entry>Numeric Limits</entry>
76      <entry/>
77      <entry/>
78    </row>
79    <row>
80      <entry>18.2.1.1</entry>
81      <entry>Class template <code>numeric_limits</code></entry>
82      <entry>Y</entry>
83      <entry/>
84    </row>
85    <row>
86      <entry>18.2.1.2</entry>
87      <entry><code>numeric_limits</code> members</entry>
88      <entry>Y</entry>
89    </row>
90    <row>
91      <entry>18.2.1.3</entry>
92      <entry><code>float_round_style</code></entry>
93      <entry>Y</entry>
94    </row>
95    <row>
96      <entry>18.2.1.4</entry>
97      <entry><code>float_denorm_style</code></entry>
98      <entry>Y</entry>
99    </row>
100    <row>
101      <entry>18.2.1.5</entry>
102      <entry><code>numeric_limits</code> specializations</entry>
103      <entry>Y</entry>
104      <entry/>
105    </row>
106    <row>
107      <entry>18.2.2</entry>
108      <entry>C Library</entry>
109      <entry>Y</entry>
110      <entry/>
111    </row>
112    <row>
113      <entry>18.3</entry>
114      <entry>Start and termination</entry>
115      <entry>Y</entry>
116      <entry/>
117    </row>
118    <row>
119      <entry>18.4</entry>
120      <entry>Dynamic memory management</entry>
121      <entry>Y</entry>
122      <entry/>
123    </row>
124    <row>
125      <entry>18.5</entry>
126      <entry>Type identification</entry>
127      <entry/>
128      <entry/>
129    </row>
130    <row>
131      <entry>18.5.1</entry>
132      <entry>Class type_info</entry>
133      <entry>Y</entry>
134      <entry/>
135    </row>
136    <row>
137      <entry>18.5.2</entry>
138      <entry>Class bad_cast</entry>
139      <entry>Y</entry>
140      <entry/>
141    </row>
142    <row>
143      <entry>18.5.3</entry>
144      <entry>Class bad_typeid</entry>
145      <entry>Y</entry>
146      <entry/>
147    </row>
148    <row>
149      <entry>18.6</entry>
150      <entry>Exception handling</entry>
151      <entry/>
152      <entry/>
153    </row>
154    <row>
155      <entry>18.6.1</entry>
156      <entry>Class exception</entry>
157      <entry>Y</entry>
158      <entry/>
159    </row>
160    <row>
161      <entry>18.6.2</entry>
162      <entry>Violation exception-specifications</entry>
163      <entry>Y</entry>
164      <entry/>
165    </row>
166    <row>
167      <entry>18.6.3</entry>
168      <entry>Abnormal termination</entry>
169      <entry>Y</entry>
170      <entry/>
171    </row>
172    <row>
173      <entry>18.6.4</entry>
174      <entry><code>uncaught_exception</code></entry>
175      <entry>Y</entry>
176      <entry/>
177    </row>
178    <row>
179      <entry>18.7</entry>
180      <entry>Other runtime support</entry>
181      <entry>Y</entry>
182      <entry/>
183    </row>
184    <row>
185      <entry>
186	<emphasis>19</emphasis>
187      </entry>
188      <entry namest="c2" nameend="c4" align="left">
189	<emphasis>Diagnostics</emphasis>
190      </entry>
191    </row>
192    <row>
193      <entry>19.1</entry>
194      <entry>Exception classes</entry>
195      <entry>Y</entry>
196      <entry/>
197    </row>
198    <row>
199      <entry>19.2</entry>
200      <entry>Assertions</entry>
201      <entry>Y</entry>
202      <entry/>
203    </row>
204    <row>
205      <entry>19.3</entry>
206      <entry>Error numbers</entry>
207      <entry>Y</entry>
208      <entry/>
209    </row>
210    <row>
211      <entry>
212	<emphasis>20</emphasis>
213      </entry>
214      <entry namest="c2" nameend="c4" align="left">
215	<emphasis>General utilities</emphasis>
216      </entry>
217    </row>
218    <row>
219      <entry>20.1</entry>
220      <entry>Requirements</entry>
221      <entry>Y</entry>
222      <entry/>
223    </row>
224   <row>
225      <entry>20.2</entry>
226      <entry>Utility components</entry>
227      <entry/>
228      <entry/>
229    </row>
230    <row>
231      <entry>20.2.1</entry>
232      <entry>Operators</entry>
233      <entry>Y</entry>
234      <entry/>
235    </row>
236    <row>
237      <entry>20.2.2</entry>
238      <entry><code>pair</code></entry>
239      <entry>Y</entry>
240      <entry/>
241    </row>
242   <row>
243      <entry>20.3</entry>
244      <entry>Function objects</entry>
245      <entry/>
246      <entry/>
247    </row>
248    <row>
249      <entry>20.3.1</entry>
250      <entry>Base</entry>
251      <entry>Y</entry>
252      <entry/>
253    </row>
254    <row>
255      <entry>20.3.2</entry>
256      <entry>Arithmetic operation</entry>
257      <entry>Y</entry>
258      <entry/>
259    </row>
260    <row>
261      <entry>20.3.3</entry>
262      <entry>Comparisons</entry>
263      <entry>Y</entry>
264      <entry/>
265    </row>
266    <row>
267      <entry>20.3.4</entry>
268      <entry>Logical operations</entry>
269      <entry>Y</entry>
270      <entry/>
271    </row>
272    <row>
273      <entry>20.3.5</entry>
274      <entry>Negators</entry>
275      <entry>Y</entry>
276      <entry/>
277    </row>
278    <row>
279      <entry>20.3.6</entry>
280      <entry>Binders</entry>
281      <entry>Y</entry>
282      <entry/>
283    </row>
284    <row>
285      <entry>20.3.7</entry>
286      <entry>Adaptors for pointers to functions</entry>
287      <entry>Y</entry>
288      <entry/>
289    </row>
290    <row>
291      <entry>20.3.8</entry>
292      <entry>Adaptors for pointers to members</entry>
293      <entry>Y</entry>
294      <entry/>
295    </row>
296    <row>
297      <entry>20.4</entry>
298      <entry>Memory</entry>
299      <entry/>
300      <entry/>
301    </row>
302    <row>
303      <entry>20.4.1</entry>
304      <entry>The default allocator</entry>
305      <entry>Y</entry>
306      <entry/>
307    </row>
308    <row>
309      <entry>20.4.2</entry>
310      <entry>Raw storage iterator</entry>
311      <entry>Y</entry>
312      <entry/>
313    </row>
314    <row>
315      <entry>20.4.3</entry>
316      <entry>Temporary buffers</entry>
317      <entry>Y</entry>
318      <entry/>
319    </row>
320    <row>
321      <entry>20.4.4</entry>
322      <entry>Specialized algorithms</entry>
323      <entry>Y</entry>
324      <entry/>
325    </row>
326    <row>
327      <entry>20.4.4.1</entry>
328      <entry><code>uninitialized_copy</code></entry>
329      <entry>Y</entry>
330      <entry/>
331    </row>
332    <row>
333      <entry>20.4.4.2</entry>
334      <entry><code>uninitialized_fill</code></entry>
335      <entry>Y</entry>
336      <entry/>
337    </row>
338    <row>
339      <entry>20.4.4.3</entry>
340      <entry><code>uninitialized_fill_n</code></entry>
341      <entry>Y</entry>
342      <entry/>
343    </row>
344    <row>
345      <entry>20.4.5</entry>
346      <entry>Class template <code>auto_ptr</code></entry>
347      <entry>Y</entry>
348      <entry/>
349    </row>
350    <row>
351      <entry>20.4.6</entry>
352      <entry>C library</entry>
353      <entry>Y</entry>
354      <entry/>
355    </row>
356    <row>
357      <entry>
358	<emphasis>21</emphasis>
359      </entry>
360      <entry namest="c2" nameend="c4" align="left">
361	<emphasis>Strings</emphasis>
362      </entry>
363    </row>
364    <row>
365      <entry>21.1</entry>
366      <entry>Character traits</entry>
367      <entry/>
368      <entry/>
369    </row>
370    <row>
371      <entry>21.1.1</entry>
372      <entry>Character traits requirements</entry>
373      <entry>Y</entry>
374      <entry/>
375    </row>
376    <row>
377      <entry>21.1.2</entry>
378      <entry>traits typedef</entry>
379      <entry>Y</entry>
380      <entry/>
381    </row>
382    <row>
383      <entry>21.1.3</entry>
384      <entry><code>char_traits</code> specializations</entry>
385      <entry/>
386      <entry/>
387    </row>
388    <row>
389      <entry>21.1.3.1</entry>
390      <entry>struct <code>char_traits&lt;char&gt;</code></entry>
391      <entry>Y</entry>
392      <entry/>
393    </row>
394    <row>
395      <entry>21.1.3.2</entry>
396      <entry>struct <code>char_traits&lt;wchar_t&gt;</code></entry>
397      <entry>Y</entry>
398      <entry/>
399    </row>
400    <row>
401      <entry>21.2</entry>
402      <entry>String classes</entry>
403      <entry>Y</entry>
404      <entry/>
405    </row>
406    <row>
407      <entry>21.3</entry>
408      <entry>Class template <code>basic_string</code></entry>
409      <entry>Y</entry>
410      <entry/>
411    </row>
412    <row>
413      <entry>21.4</entry>
414      <entry>Null-terminated sequence utilities</entry>
415      <entry>Y</entry>
416      <entry>C library dependency</entry>
417    </row>
418    <row>
419      <entry>
420      	<emphasis>22</emphasis>
421      </entry>
422      <entry namest="c2" nameend="c4" align="left">
423	<emphasis>Localization</emphasis>
424      </entry>
425    </row>
426    <row>
427      <entry>22.1</entry>
428      <entry>Locales</entry>
429      <entry/>
430      <entry/>
431    </row>
432    <row>
433      <entry>22.1.1</entry>
434      <entry>Class <code>locale</code></entry>
435      <entry>Y</entry>
436      <entry/>
437    </row>
438    <row>
439      <entry>22.1.2</entry>
440      <entry><code>locale</code> globals</entry>
441      <entry>Y</entry>
442      <entry/>
443    </row>
444    <row>
445      <entry>22.1.3</entry>
446      <entry>Convenience interfaces</entry>
447      <entry/>
448      <entry/>
449    </row>
450    <row>
451      <entry>22.1.3.1</entry>
452      <entry>Character classification</entry>
453      <entry>Y</entry>
454      <entry/>
455    </row>
456    <row>
457      <entry>22.1.3.2</entry>
458      <entry>Character conversions</entry>
459      <entry>Y</entry>
460      <entry/>
461    </row>
462    <row>
463      <entry>22.2</entry>
464      <entry>Standard locale categories</entry>
465      <entry/>
466      <entry/>
467    </row>
468    <row>
469      <entry>22.2.1</entry>
470      <entry><code>ctype</code></entry>
471      <entry>Y</entry>
472      <entry/>
473    </row>
474    <row>
475      <entry>22.2.2</entry>
476      <entry>Numeric</entry>
477      <entry/>
478      <entry/>
479    </row>
480    <row>
481      <entry>22.2.2.1</entry>
482      <entry><code>num_get</code></entry>
483      <entry>Y</entry>
484      <entry/>
485    </row>
486    <row>
487      <entry>22.2.2.2</entry>
488      <entry><code>num_put</code></entry>
489      <entry>Y</entry>
490      <entry/>
491    </row>
492    <row>
493      <entry>22.2.3</entry>
494      <entry><code>num_punct</code></entry>
495      <entry>Y</entry>
496      <entry/>
497    </row>
498    <row>
499      <entry>22.2.4</entry>
500      <entry><code>collate</code></entry>
501      <entry>Y</entry>
502      <entry/>
503    </row>
504    <row>
505      <entry>22.2.5</entry>
506      <entry>Time</entry>
507      <entry/>
508      <entry/>
509    </row>
510    <row>
511      <entry>22.2.5.1</entry>
512      <entry><code>time_get</code></entry>
513      <entry>Y</entry>
514      <entry/>
515    </row>
516    <row>
517      <entry>22.2.5.2</entry>
518      <entry><code>time_get_byname</code></entry>
519      <entry>Y</entry>
520      <entry/>
521    </row>
522    <row>
523      <entry>22.2.5.3</entry>
524      <entry><code>time_put</code></entry>
525      <entry>Y</entry>
526      <entry/>
527    </row>
528    <row>
529      <entry>22.2.5.3</entry>
530      <entry><code>time_put_byname</code></entry>
531      <entry>Y</entry>
532      <entry/>
533    </row>
534    <row>
535      <entry>22.2.6</entry>
536      <entry>Monetary</entry>
537      <entry/>
538      <entry/>
539    </row>
540    <row>
541      <entry>22.2.6.1</entry>
542      <entry><code>money_get</code></entry>
543      <entry>Y</entry>
544      <entry/>
545    </row>
546    <row>
547      <entry>22.2.6.2</entry>
548      <entry><code>money_put</code></entry>
549      <entry>Y</entry>
550      <entry/>
551    </row>
552    <row>
553      <entry>22.2.6.3</entry>
554      <entry><code>money_punct</code></entry>
555      <entry>Y</entry>
556      <entry/>
557    </row>
558    <row>
559      <entry>22.2.6.4</entry>
560      <entry><code>money_punct_byname</code></entry>
561      <entry>Y</entry>
562      <entry/>
563    </row>
564    <row>
565      <entry>22.2.7</entry>
566      <entry><code>messages</code></entry>
567      <entry>Y</entry>
568      <entry/>
569    </row>
570    <row>
571      <entry>22.2.8</entry>
572      <entry>Program-defined facets</entry>
573      <entry>Y</entry>
574      <entry/>
575    </row>
576    <row>
577      <entry>22.3</entry>
578      <entry>C Library Locales</entry>
579      <entry>Y</entry>
580      <entry/>
581    </row>
582    <row>
583      <entry>
584	<emphasis>23</emphasis>
585      </entry>
586      <entry namest="c2" nameend="c4" align="left">
587	<emphasis>Containers</emphasis>
588      </entry>
589    </row>
590    <row>
591      <entry>23.1</entry>
592      <entry>Container requirements</entry>
593      <entry>Y</entry>
594      <entry/>
595    </row>
596    <row>
597      <entry>23.2</entry>
598      <entry>Sequence containers</entry>
599      <entry/>
600      <entry/>
601    </row>
602    <row>
603      <entry>23.2.1</entry>
604      <entry>Class template <code>deque</code></entry>
605      <entry>Y</entry>
606      <entry/>
607    </row>
608    <row>
609      <entry>23.2.2</entry>
610      <entry>Class template <code>list</code></entry>
611      <entry>Y</entry>
612      <entry/>
613    </row>
614    <row>
615      <entry>23.2.3</entry>
616      <entry>Adaptors</entry>
617      <entry/>
618      <entry/>
619    </row>
620    <row>
621      <entry>23.2.3.1</entry>
622      <entry>Class template <code>queue</code></entry>
623      <entry>Y</entry>
624      <entry/>
625    </row>
626    <row>
627      <entry>23.2.3.2</entry>
628      <entry>Class template <code>priority_queue</code></entry>
629      <entry>Y</entry>
630      <entry/>
631    </row>
632    <row>
633      <entry>23.2.3.3</entry>
634      <entry>Class template <code>stack</code></entry>
635      <entry>Y</entry>
636      <entry/>
637    </row>
638    <row>
639      <entry>23.2.4</entry>
640      <entry>Class template <code>vector</code></entry>
641      <entry>Y</entry>
642      <entry/>
643    </row>
644    <row>
645      <entry>23.2.5</entry>
646      <entry>Class <code>vector&lt;bool&gt;</code></entry>
647      <entry>Y</entry>
648      <entry/>
649    </row>
650    <row>
651      <entry>23.3</entry>
652      <entry>Associative containers</entry>
653      <entry/>
654      <entry/>
655    </row>
656    <row>
657      <entry>23.3.1</entry>
658      <entry>Class template <code>map</code></entry>
659      <entry>Y</entry>
660      <entry/>
661    </row>
662    <row>
663      <entry>23.3.2</entry>
664      <entry>Class template <code>multimap</code></entry>
665      <entry>Y</entry>
666      <entry/>
667    </row>
668    <row>
669      <entry>23.3.3</entry>
670      <entry>Class template <code>set</code></entry>
671      <entry>Y</entry>
672      <entry/>
673    </row>
674    <row>
675      <entry>23.3.4</entry>
676      <entry>Class template <code>multiset</code></entry>
677      <entry>Y</entry>
678      <entry/>
679    </row>
680    <row>
681      <entry>
682	<emphasis>24</emphasis>
683      </entry>
684      <entry namest="c2" nameend="c4" align="left">
685	<emphasis>Iterators</emphasis>
686      </entry>
687    </row>
688    <row>
689      <entry>24.1</entry>
690      <entry>Requirements</entry>
691      <entry>Y</entry>
692      <entry/>
693    </row>
694    <row>
695      <entry>24.2</entry>
696      <entry>Header <code>&lt;iterator&gt;</code> synopsis</entry>
697      <entry>Y</entry>
698      <entry/>
699    </row>
700    <row>
701      <entry>24.3</entry>
702      <entry>Iterator primitives</entry>
703      <entry>Y</entry>
704      <entry/>
705    </row>
706    <row>
707      <entry>24.4</entry>
708      <entry>Predefined iterators and Iterator adaptors</entry>
709      <entry/>
710      <entry/>
711    </row>
712    <row>
713      <entry>24.4.1</entry>
714      <entry>Reverse iterators</entry>
715      <entry>Y</entry>
716      <entry/>
717    </row>
718    <row>
719      <entry>24.4.2</entry>
720      <entry>Insert iterators</entry>
721      <entry>Y</entry>
722      <entry/>
723    </row>
724    <row>
725      <entry>24.5</entry>
726      <entry>Stream iterators</entry>
727      <entry/>
728      <entry/>
729    </row>
730    <row>
731      <entry>24.5.1</entry>
732      <entry>Class template <code>istream_iterator</code></entry>
733      <entry>Y</entry>
734      <entry/>
735    </row>
736    <row>
737      <entry>24.5.2</entry>
738      <entry>Class template <code>ostream_iterator</code></entry>
739      <entry>Y</entry>
740      <entry/>
741    </row>
742    <row>
743      <entry>24.5.3</entry>
744      <entry>Class template <code>istreambuf_iterator</code></entry>
745      <entry>Y</entry>
746      <entry/>
747    </row>
748    <row>
749      <entry>24.5.4</entry>
750      <entry>Class template <code>ostreambuf_iterator</code></entry>
751      <entry>Y</entry>
752      <entry/>
753    </row>
754    <row>
755      <entry>
756	<emphasis>25</emphasis>
757      </entry>
758      <entry namest="c2" nameend="c4" align="left">
759	<emphasis>Algorithms</emphasis>
760      </entry>
761    </row>
762    <row>
763      <entry>25.1</entry>
764      <entry>Non-modifying sequence operations</entry>
765      <entry>Y</entry>
766      <entry/>
767    </row>
768    <row>
769      <entry>25.2</entry>
770      <entry>Mutating sequence operations</entry>
771      <entry>Y</entry>
772      <entry/>
773    </row>
774    <row>
775      <entry>25.3</entry>
776      <entry>Sorting and related operations</entry>
777      <entry>Y</entry>
778      <entry/>
779    </row>
780    <row>
781      <entry>25.4</entry>
782      <entry>C library algorithms</entry>
783      <entry>Y</entry>
784      <entry/>
785    </row>
786    <row>
787      <entry>
788      <emphasis>26</emphasis>
789      </entry>
790      <entry namest="c2" nameend="c4" align="left">
791	<emphasis>Numerics</emphasis>
792      </entry>
793    </row>
794    <row>
795      <entry>26.1</entry>
796      <entry>Numeric type requirements</entry>
797      <entry>Y</entry>
798      <entry/>
799    </row>
800    <row>
801      <entry>26.2</entry>
802      <entry>Complex numbers</entry>
803      <entry>Y</entry>
804      <entry/>
805    </row>
806    <row>
807      <entry>26.3</entry>
808      <entry>Numeric arrays</entry>
809      <entry/>
810      <entry/>
811    </row>
812    <row>
813      <entry>26.3.1</entry>
814      <entry>Header <code>&lt;valarray&gt;</code> synopsis</entry>
815      <entry>Y</entry>
816      <entry/>
817    </row>
818    <row>
819      <entry>26.3.2</entry>
820      <entry>Class template <code>valarray</code></entry>
821      <entry>Y</entry>
822      <entry/>
823    </row>
824    <row>
825      <entry>26.3.3</entry>
826      <entry><code>valarray</code> non-member operations</entry>
827      <entry>Y</entry>
828      <entry/>
829    </row>
830    <row>
831      <entry>26.3.4</entry>
832      <entry>Class <code>slice</code></entry>
833      <entry>Y</entry>
834      <entry/>
835    </row>
836    <row>
837      <entry>26.3.5</entry>
838      <entry>Class template <code>slice_array</code></entry>
839      <entry>Y</entry>
840      <entry/>
841    </row>
842    <row>
843      <entry>26.3.6</entry>
844      <entry>Class <code>gslice</code></entry>
845      <entry>Y</entry>
846      <entry/>
847    </row>
848    <row>
849      <entry>26.3.7</entry>
850      <entry>Class template <code>gslice_array</code></entry>
851      <entry>Y</entry>
852      <entry/>
853    </row>
854    <row>
855      <entry>26.3.8</entry>
856      <entry>Class template <code>mask_array</code></entry>
857      <entry>Y</entry>
858      <entry/>
859    </row>
860    <row>
861      <entry>26.3.9</entry>
862      <entry>Class template <code>indirect_array</code></entry>
863      <entry>Y</entry>
864      <entry/>
865    </row>
866    <row>
867      <entry>26.4</entry>
868      <entry>Generalized numeric operations</entry>
869      <entry/>
870      <entry/>
871    </row>
872    <row>
873      <entry>26.4.1</entry>
874      <entry><code>accumulate</code></entry>
875      <entry>Y</entry>
876      <entry/>
877    </row>
878    <row>
879      <entry>26.4.2</entry>
880      <entry><code>inner_product</code></entry>
881      <entry>Y</entry>
882      <entry/>
883    </row>
884    <row>
885      <entry>26.4.3</entry>
886      <entry><code>partial_sum</code></entry>
887      <entry>Y</entry>
888      <entry/>
889    </row>
890    <row>
891      <entry>26.4.4</entry>
892      <entry><code>adjacent_difference</code></entry>
893      <entry>Y</entry>
894      <entry/>
895    </row>
896    <row>
897      <entry>26.4.5</entry>
898      <entry>iota</entry>
899      <entry>Y</entry>
900      <entry/>
901    </row>
902    <row>
903      <entry>26.5</entry>
904      <entry>C Library</entry>
905      <entry>Y</entry>
906      <entry/>
907    </row>
908    <row>
909      <entry>
910	<emphasis>27</emphasis>
911      </entry>
912      <entry namest="c2" nameend="c4" align="left">
913	<emphasis>Input/output</emphasis>
914      </entry>
915    </row>
916    <row>
917      <entry>27.1</entry>
918      <entry>Requirements</entry>
919      <entry>Y</entry>
920      <entry/>
921    </row>
922    <row>
923      <entry>27.2</entry>
924      <entry>Forward declarations</entry>
925      <entry>Y</entry>
926      <entry/>
927    </row>
928    <row>
929      <entry>27.3</entry>
930      <entry>Standard iostream objects</entry>
931      <entry>Y</entry>
932      <entry/>
933    </row>
934    <row>
935      <entry>27.3.1</entry>
936      <entry>Narrow stream objects</entry>
937      <entry>Y</entry>
938      <entry/>
939    </row>
940    <row>
941      <entry>27.3.2</entry>
942      <entry>Wide stream objects</entry>
943      <entry>Y</entry>
944      <entry/>
945    </row>
946    <row>
947      <entry>27.4</entry>
948      <entry>Iostreams base classes</entry>
949      <entry>Y</entry>
950      <entry/>
951    </row>
952    <row>
953      <entry>27.5</entry>
954      <entry>Stream buffers</entry>
955      <entry>Y</entry>
956      <entry/>
957    </row>
958    <row>
959      <entry>27.6</entry>
960      <entry>Formatting and manipulators</entry>
961      <entry>Y</entry>
962      <entry/>
963    </row>
964    <row>
965      <entry>27.7</entry>
966      <entry>String-based streams</entry>
967      <entry>Y</entry>
968      <entry/>
969    </row>
970    <row>
971      <entry>27.8</entry>
972      <entry>File-based streams</entry>
973      <entry>Y</entry>
974      <entry/>
975    </row>
976    <row>
977      <entry>
978      	<emphasis>Appendix D</emphasis>
979      </entry>
980      <entry namest="c2" nameend="c4" align="left">
981	<emphasis>Compatibility features</emphasis>
982      </entry>
983    </row>
984    <row>
985      <entry>D.1</entry>
986      <entry>Increment operator with bool operand</entry>
987      <entry/>
988      <entry/>
989    </row>
990    <row>
991      <entry>D.2</entry>
992      <entry><code>static</code> keyword</entry>
993      <entry/>
994      <entry/>
995    </row>
996    <row>
997      <entry>D.3</entry>
998      <entry>Access declarations</entry>
999      <entry/>
1000      <entry/>
1001    </row>
1002    <row>
1003      <entry>D.4</entry>
1004      <entry>Implicit conversion from const strings</entry>
1005      <entry/>
1006      <entry/>
1007    </row>
1008    <row>
1009      <entry>D.5</entry>
1010      <entry>C standard library headers</entry>
1011      <entry/>
1012      <entry/>
1013    </row>
1014    <row>
1015      <entry>D.6</entry>
1016      <entry>Old iostreams members</entry>
1017      <entry/>
1018      <entry/>
1019    </row>
1020    <row>
1021      <entry>D.7</entry>
1022      <entry>char* streams</entry>
1023      <entry/>
1024      <entry/>
1025    </row>
1026
1027  </tbody>
1028</tgroup>
1029</table>
1030</section>
1031
1032<section xml:id="iso.1998.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
1033
1034
1035   <para>
1036     The ISO standard defines the following phrase:
1037   </para>
1038   <blockquote>
1039     <variablelist>
1040     <varlistentry>
1041       <term>
1042	 <code>[1.3.5] implementation-defined behavior</code>
1043       </term>
1044       <listitem>
1045	 <para>
1046	 Behavior, for a well-formed program construct and correct data, that
1047	 depends on the implementation <emphasis>and that each implementation
1048	 shall document</emphasis>.
1049	 </para>
1050       </listitem>
1051     </varlistentry>
1052     </variablelist>
1053   </blockquote>
1054   <para>
1055     We do so here, for the C++ library only.  Behavior of the
1056     compiler, linker, runtime loader, and other elements of "the
1057     implementation" are documented elsewhere.  Everything listed
1058     in Annex B, Implementation Qualities, are also part of the
1059     compiler, not the library.
1060   </para>
1061   <para>
1062     For each entry, we give the section number of the standard, when
1063     applicable.  This list is probably incomplet and inkorrekt.
1064   </para>
1065   <para>
1066     <emphasis>[1.9]/11 #3</emphasis> If <code>isatty(3)</code> is true, then
1067      interactive stream support is implied.
1068   </para>
1069   <para>
1070     <emphasis>[17.4.4.5]</emphasis> Non-reentrant functions are probably best
1071      discussed in the various sections on multithreading (see above).
1072   </para>
1073   <!-- [17.4.4.8]/3 says any function that doesn't have an exception-spec
1074	can throw whatever we want; see also its footnote.  Let's list those
1075	in the sections where the function itself occurs.
1076   -->
1077   <para><emphasis>[18.1]/4</emphasis> The type of <code>NULL</code> is described
1078      under <link linkend="std.support.types.null">Support</link>.
1079   </para>
1080   <para><emphasis>[18.3]/8</emphasis> Even though it's listed in the library
1081      sections, libstdc++ has zero control over what the cleanup code hands
1082      back to the runtime loader.  Talk to the compiler people.  :-)
1083   </para>
1084   <para><emphasis>[18.4.2.1]/5</emphasis> (bad_alloc),
1085      <emphasis>[18.5.2]/5</emphasis> (bad_cast),
1086      <emphasis>[18.5.3]/5</emphasis> (bad_typeid),
1087      <emphasis>[18.6.1]/8</emphasis> (exception),
1088      <emphasis>[18.6.2.1]/5</emphasis> (bad_exception):  The <code>what()</code>
1089      member function of class <code>std::exception</code>, and these other
1090      classes publicly derived from it, returns the name of the
1091      class, e.g. <literal>"std::bad_alloc"</literal>.
1092   </para>
1093   <para><emphasis>[18.5.1]/7</emphasis> The return value of
1094      <code>std::type_info::name()</code> is the mangled type name.
1095      You will need to call <code>c++filt</code> and pass the names as
1096      command-line parameters to demangle them, or call a
1097      <link linkend="manual.ext.demangle">runtime demangler function</link>.
1098   </para>
1099   <para><emphasis>[20.1.5]/5</emphasis> <emphasis>"Implementors are encouraged to
1100      supply libraries that can accept allocators that encapsulate more
1101      general memory models and that support non-equal instances.  In such
1102      implementations, any requirements imposed on allocators by containers
1103      beyond those requirements that appear in Table 32, and the semantics
1104      of containers and algorithms when allocator instances compare
1105      non-equal, are implementation-defined."</emphasis>  There is experimental
1106      support for non-equal allocators in the standard containers in C++98
1107      mode. There are no additional requirements on allocators. It is undefined
1108      behaviour to swap two containers if their allocators are not equal.
1109   </para>
1110   <para><emphasis>[21.1.3.1]/3,4</emphasis>,
1111      <emphasis>[21.1.3.2]/2</emphasis>,
1112      <emphasis>[21.3]/6 basic_string::iterator, basic_string::const_iterator</emphasis>,
1113      <emphasis>[23.*]'s foo::iterator</emphasis>,
1114      <emphasis>[27.*]'s foo::*_type</emphasis>,
1115      <emphasis>others...</emphasis>
1116      Nope, these types are called implementation-defined because you
1117      shouldn't be taking advantage of their underlying types.  Listing them
1118      here would defeat the purpose.  :-)
1119   </para>
1120   <para><emphasis>[21.1.3.1]/5</emphasis> I don't really know about
1121      the <type>mbstate_t</type> stuff... see
1122      the <link linkend="std.localization.facet.codecvt"><code>codecvt</code>
1123      notes</link> for what does exist.
1124   </para>
1125   <para><emphasis>[22.*]</emphasis> Anything and everything we have on locale
1126      implementation will be described under
1127      <link linkend="std.localization.locales.locale">Localization</link>.
1128   </para>
1129   <para><emphasis>[23.*]</emphasis> All of the containers in this clause
1130     define <type>size_type</type> as <type>std::size_t</type> and
1131     <type>difference_type</type> as <type>std::ptrdiff_t</type>.
1132   </para>
1133   <para><emphasis>[26.2.8]/9</emphasis> I have no idea what
1134      <code>complex&lt;T&gt;</code>'s <code>pow(0,0)</code> returns.
1135   </para>
1136   <para><emphasis>[27.4.2.4]/2</emphasis> Calling
1137      <code>std::ios_base::sync_with_stdio</code> after I/O has already been
1138      performed on the standard stream objects will
1139      flush the buffers, and <!-- this line might go away -->
1140      destroy and recreate the underlying buffer instances.  Whether or not
1141      the previously-written I/O is destroyed in this process depends mostly
1142      on the <code>--enable-libio</code> choice:  for stdio, if the written
1143      data is already in the stdio buffer, the data may be completely safe!
1144   </para>
1145   <para><emphasis>[27.6.1.1.2]</emphasis>,
1146      <emphasis>[27.6.2.3]</emphasis> The I/O sentry ctor and dtor can perform
1147      additional work than the minimum required.  We are not currently taking
1148      advantage of this yet.
1149   </para>
1150   <para><emphasis>[27.7.1.3]/16</emphasis>,
1151      <emphasis>[27.8.1.4]/10</emphasis>
1152      The effects of <code>pubsetbuf/setbuf</code> are described in the
1153      <link linkend="std.io">Input and Output</link> chapter.
1154   </para>
1155   <para><emphasis>[27.8.1.4]/16</emphasis> Calling <code>fstream::sync</code> when
1156      a get area exists will... whatever <code>fflush()</code> does, I think.
1157   </para>
1158
1159</section>
1160
1161</section>
1162