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