ENGLISH

Working Draft, Standard for Programming Language C++

Book information

Year
2018
Language
english
Format
PDF
Filesize
6 MB (6425208 bytes)
Volume
N4788
Pages
1720\1720
Topic
Computers\\Programming
Time added
2019-10-09 18:17:52

Description

This document specifies requirements for implementations of the C++ programming language. Contents......Page 2 1 Scope......Page 9 2 Normative references......Page 10 3 Terms and definitions......Page 11 4.1.1 Abstract machine......Page 14 4.3 Syntax notation......Page 15 4.4 Acknowledgments......Page 16 5.2 Phases of translation......Page 17 5.3 Character sets......Page 18 5.4 Preprocessing tokens......Page 19 5.8 Header names......Page 20 5.10 Identifiers......Page 21 5.12 Operators and punctuators......Page 22 5.13.2 Integer literals......Page 23 5.13.3 Character literals......Page 25 5.13.4 Floating literals......Page 26 5.13.5 String literals......Page 27 5.13.7 Pointer literals......Page 29 5.13.8 User-defined literals......Page 30 6.1 Declarations and definitions......Page 32 6.2 One-definition rule......Page 34 6.3.1 Declarative regions and scopes......Page 37 6.3.2 Point of declaration......Page 38 6.3.4 Function parameter scope......Page 39 6.3.7 Class scope......Page 40 6.3.9 Template parameter scope......Page 41 6.4 Name lookup......Page 42 6.4.1 Unqualified name lookup......Page 43 6.4.2 Argument-dependent name lookup......Page 46 6.4.3 Qualified name lookup......Page 47 6.4.3.1 Class members......Page 48 6.4.3.2 Namespace members......Page 49 6.4.4 Elaborated type specifiers......Page 52 6.4.5 Class member access......Page 53 6.5 Program and linkage......Page 54 6.6.1 Memory model......Page 56 6.6.2 Object model......Page 57 6.6.3 Object lifetime......Page 58 6.6.4 Storage duration......Page 61 6.6.4.4 Dynamic storage duration......Page 62 6.6.4.4.2 Deallocation functions......Page 63 6.6.4.4.3 Safely-derived pointers......Page 64 6.6.6 Temporary objects......Page 65 6.7 Types......Page 68 6.7.1 Fundamental types......Page 70 6.7.2 Compound types......Page 72 6.7.3 CV-qualifiers......Page 73 6.8.1 Sequential execution......Page 74 6.8.2.1 Data races......Page 77 6.8.2.2 Forward progress......Page 80 6.8.3.2 Static initialization......Page 82 6.8.3.3 Dynamic initialization of non-local variables......Page 83 6.8.3.4 Termination......Page 84 7.1 Preamble......Page 86 7.2.1 Value category......Page 87 7.2.2 Type......Page 88 7.2.3 Context dependence......Page 89 7.3 Standard conversions......Page 90 7.3.4 Temporary materialization conversion......Page 91 7.3.6 Integral promotions......Page 92 7.3.11 Pointer conversions......Page 93 7.4 Usual arithmetic conversions......Page 94 7.5.2 This......Page 95 7.5.4 Names......Page 96 7.5.4.2 Qualified names......Page 97 7.5.5 Lambda expressions......Page 98 7.5.5.1 Closure types......Page 99 7.5.5.2 Captures......Page 102 7.5.7 Requires expressions......Page 107 7.5.7.3 Compound requirements......Page 109 7.6.1 Postfix expressions......Page 110 7.6.1.2 Function call......Page 111 7.6.1.4 Class member access......Page 113 7.6.1.6 Dynamic cast......Page 114 7.6.1.8 Static cast......Page 116 7.6.1.9 Reinterpret cast......Page 118 7.6.1.10 Const cast......Page 119 7.6.2.1 Unary operators......Page 120 7.6.2.3 Sizeof......Page 121 7.6.2.4 New......Page 122 7.6.2.5 Delete......Page 126 7.6.3 Explicit type conversion (cast notation)......Page 128 7.6.4 Pointer-to-member operators......Page 129 7.6.6 Additive operators......Page 130 7.6.8 Three-way comparison operator......Page 131 7.6.9 Relational operators......Page 132 7.6.10 Equality operators......Page 133 7.6.13 Bitwise inclusive OR operator......Page 134 7.6.16 Conditional operator......Page 135 7.6.17 Throwing an exception......Page 136 7.6.19 Comma operator......Page 137 7.7 Constant expressions......Page 138 8.1 Labeled statement......Page 143 8.4.1 The if statement......Page 144 8.4.2 The switch statement......Page 145 8.5 Iteration statements......Page 146 8.5.3 The for statement......Page 147 8.6 Jump statements......Page 148 8.6.4 The goto statement......Page 149 8.8 Ambiguity resolution......Page 150 9 Declarations......Page 152 9.1 Specifiers......Page 153 9.1.1 Storage class specifiers......Page 154 9.1.3 The typedef specifier......Page 156 9.1.5 The constexpr specifier......Page 158 9.1.6 The inline specifier......Page 160 9.1.7.1 The cv-qualifiers......Page 161 9.1.7.2 Simple type specifiers......Page 162 9.1.7.3 Elaborated type specifiers......Page 163 9.1.7.4 Decltype specifiers......Page 165 9.1.7.5 Placeholder type specifiers......Page 166 9.1.7.5.1 Placeholder type deduction......Page 168 9.2 Declarators......Page 169 9.2.2 Ambiguity resolution......Page 171 9.2.3 Meaning of declarators......Page 172 9.2.3.1 Pointers......Page 173 9.2.3.2 References......Page 174 9.2.3.3 Pointers to members......Page 175 9.2.3.4 Arrays......Page 176 9.2.3.5 Functions......Page 177 9.2.3.6 Default arguments......Page 181 9.3 Initializers......Page 183 9.3.1 Aggregates......Page 187 9.3.2 Character arrays......Page 191 9.3.3 References......Page 192 9.3.4 List-initialization......Page 194 9.4.2 Explicitly-defaulted functions......Page 199 9.4.3 Deleted definitions......Page 200 9.5 Structured binding declarations......Page 201 9.6 Enumeration declarations......Page 202 9.7.1 Namespace definition......Page 205 9.7.1.2 Namespace member definitions......Page 207 9.7.2 Namespace alias......Page 208 9.7.3 Using directive......Page 209 9.8 The using declaration......Page 211 9.10 Linkage specifications......Page 217 9.11.1 Attribute syntax and semantics......Page 219 9.11.2 Alignment specifier......Page 221 9.11.4.1 Syntax......Page 222 9.11.4.2 Contract conditions......Page 224 9.11.4.3 Checking contracts......Page 225 9.11.6 Fallthrough attribute......Page 226 9.11.8 Maybe unused attribute......Page 227 9.11.11 No unique address attribute......Page 228 10 Classes......Page 230 10.1 Properties of classes......Page 231 10.2 Class names......Page 232 10.3 Class members......Page 233 10.3.1 Member functions......Page 237 10.3.2 Non-static member functions......Page 238 10.3.3 Special member functions......Page 239 10.3.4 Constructors......Page 240 10.3.4.1 Default constructors......Page 241 10.3.4.2 Copy/move constructors......Page 242 10.3.5 Copy/move assignment operator......Page 244 10.3.6 Destructors......Page 246 10.3.7 Conversions......Page 248 10.3.7.1 Conversion by constructor......Page 249 10.3.7.2 Conversion functions......Page 250 10.3.8 Static members......Page 251 10.3.8.2 Static data members......Page 252 10.3.10 Nested class declarations......Page 253 10.3.11 Nested type names......Page 254 10.4 Unions......Page 255 10.4.1 Anonymous unions......Page 256 10.6 Derived classes......Page 257 10.6.1 Multiple base classes......Page 259 10.6.2 Virtual functions......Page 260 10.6.3 Abstract classes......Page 265 10.7 Member name lookup......Page 266 10.8 Member access control......Page 268 10.8.1 Access specifiers......Page 270 10.8.2 Accessibility of base classes and base class members......Page 271 10.8.3 Friends......Page 273 10.8.4 Protected member access......Page 275 10.8.5 Access to virtual functions......Page 276 10.9.1 Explicit initialization......Page 277 10.9.2 Initializing bases and members......Page 278 10.9.3 Initialization by inherited constructor......Page 282 10.9.4 Construction and destruction......Page 284 10.9.5 Copy/move elision......Page 286 10.10.2 Three-way comparison......Page 288 10.11 Free store......Page 289 11.1 Overloadable declarations......Page 292 11.2 Declaration matching......Page 294 11.3.1 Candidate functions and argument lists......Page 295 11.3.1.1.1 Call to named function......Page 297 11.3.1.2 Operators in expressions......Page 298 11.3.1.5 Initialization by conversion function......Page 301 11.3.1.8 Class template argument deduction......Page 302 11.3.2 Viable functions......Page 303 11.3.3 Best viable function......Page 304 11.3.3.1 Implicit conversion sequences......Page 306 11.3.3.1.2 User-defined conversion sequences......Page 308 11.3.3.1.5 List-initialization sequence......Page 309 11.3.3.2 Ranking implicit conversion sequences......Page 312 11.4 Address of overloaded function......Page 314 11.5.1 Unary operators......Page 316 11.5.5 Subscripting......Page 317 11.5.8 User-defined literals......Page 318 11.6 Built-in operators......Page 319 12 Templates......Page 323 12.1 Template parameters......Page 325 12.2 Names of template specializations......Page 328 12.3 Template arguments......Page 330 12.3.1 Template type arguments......Page 332 12.3.2 Template non-type arguments......Page 333 12.3.3 Template template arguments......Page 334 12.4.1.2 Atomic constraints......Page 336 12.4.2 Constrained declarations......Page 337 12.4.4 Partial ordering by constraints......Page 338 12.5 Type equivalence......Page 339 12.6.1 Class templates......Page 340 12.6.1.1 Member functions of class templates......Page 341 12.6.1.4 Enumeration members of class templates......Page 342 12.6.2 Member templates......Page 343 12.6.3 Variadic templates......Page 344 12.6.4 Friends......Page 347 12.6.5 Class template partial specializations......Page 349 12.6.5.1 Matching of class template partial specializations......Page 350 12.6.5.2 Partial ordering of class template specializations......Page 351 12.6.5.3 Members of class template specializations......Page 352 12.6.6.1 Function template overloading......Page 353 12.6.6.2 Partial ordering of function templates......Page 355 12.6.7 Alias templates......Page 357 12.7 Name resolution......Page 358 12.7.1 Locally declared names......Page 362 12.7.2 Dependent names......Page 364 12.7.2.1 Dependent types......Page 365 12.7.2.2 Type-dependent expressions......Page 368 12.7.2.3 Value-dependent expressions......Page 369 12.7.4 Dependent name resolution......Page 370 12.7.4.2 Candidate functions......Page 371 12.8 Template instantiation and specialization......Page 372 12.8.1 Implicit instantiation......Page 373 12.8.2 Explicit instantiation......Page 377 12.8.3 Explicit specialization......Page 380 12.9 Function template specializations......Page 384 12.9.1 Explicit template argument specification......Page 385 12.9.2 Template argument deduction......Page 386 12.9.2.1 Deducing template arguments from a function call......Page 390 12.9.2.3 Deducing conversion function template arguments......Page 393 12.9.2.4 Deducing template arguments during partial ordering......Page 394 12.9.2.5 Deducing template arguments from a type......Page 395 12.9.2.6 Deducing template arguments from a function declaration......Page 401 12.9.3 Overload resolution......Page 402 12.10 Deduction guides......Page 403 13 Exception handling......Page 404 13.1 Throwing an exception......Page 405 13.2 Constructors and destructors......Page 406 13.3 Handling an exception......Page 407 13.4 Exception specifications......Page 408 13.5.1 The std::terminate function......Page 411 13.5.2 The std::uncaught_exceptions() function......Page 412 14 Preprocessing directives......Page 413 14.1 Conditional inclusion......Page 414 14.2 Source file inclusion......Page 416 14.3 Macro replacement......Page 417 14.3.1 Argument substitution......Page 418 14.3.4 Rescanning and further replacement......Page 420 14.3.5 Scope of macro definitions......Page 421 14.8 Predefined macro names......Page 423 14.9 Pragma operator......Page 426 15.1 General......Page 427 15.3 Definitions......Page 428 15.4.1.3 Requirements......Page 431 15.4.1.4 Detailed specifications......Page 432 15.4.2.1.1 General......Page 433 15.4.2.1.4 Bitmask types......Page 434 15.4.2.1.5.2 Multibyte strings......Page 435 15.4.2.4 Private members......Page 436 15.5.1.2 Headers......Page 437 15.5.2.3 Linkage......Page 439 15.5.3.1 Template argument requirements......Page 440 15.5.3.2 Swappable requirements......Page 441 15.5.3.3 Cpp17NullablePointer requirements......Page 442 15.5.3.5 Cpp17Allocator requirements......Page 443 15.5.4.2.1 Namespace std......Page 448 15.5.4.3.1 Zombie names......Page 449 15.5.4.3.3 External linkage......Page 450 15.5.4.6 Replacement functions......Page 451 15.5.4.9 Function arguments......Page 452 15.5.5.4 Non-member functions......Page 453 15.5.5.9 Data race avoidance......Page 454 15.5.5.14 Value of error codes......Page 455 15.5.5.15 Moved-from state of library types......Page 456 16.2.1 Header synopsis......Page 457 16.2.2 Header synopsis......Page 458 16.2.3 Null pointers......Page 459 16.2.5 byte type operations......Page 460 16.3.1 General......Page 461 16.3.2 Header synopsis......Page 463 16.3.4 Class template numeric_limits......Page 464 16.3.4.1 numeric_limits members......Page 465 16.3.4.2 numeric_limits specializations......Page 469 16.3.5 Header synopsis......Page 470 16.4.1 Header synopsis......Page 471 16.5 Start and termination......Page 472 16.6.1 Header synopsis......Page 474 16.6.2.1 Single-object forms......Page 475 16.6.2.2 Array forms......Page 476 16.6.2.4 Data races......Page 478 16.6.3.3 Type new_handler......Page 479 16.6.5 Hardware interference size......Page 480 16.7.2 Class type_info......Page 481 16.7.4 Class bad_typeid......Page 482 16.9.1 Header synopsis......Page 483 16.9.3 Class bad_exception......Page 484 16.9.6 Exception propagation......Page 485 16.9.7 nested_exception......Page 486 16.10.1 Header synopsis......Page 487 16.11.1 Header synopsis......Page 488 16.11.2.2 Class weak_equality......Page 489 16.11.2.3 Class strong_equality......Page 490 16.11.2.4 Class partial_ordering......Page 491 16.11.2.5 Class weak_ordering......Page 492 16.11.2.6 Class strong_ordering......Page 493 16.11.4 Comparison algorithms......Page 495 16.12.2 Header synopsis......Page 496 16.12.4 Signal handlers......Page 497 17.2 Equality preservation......Page 499 17.3 Header synopsis......Page 500 17.4.4 Concept ConvertibleTo......Page 502 17.4.6 Concept Common......Page 503 17.4.9 Concept Swappable......Page 504 17.4.14 Concept CopyConstructible......Page 506 17.5.3 Concept EqualityComparable......Page 507 17.5.4 Concept StrictTotallyOrdered......Page 508 17.7.2 Concept Invocable......Page 509 17.7.6 Concept StrictWeakOrder......Page 510 18.2.2 Class logic_error......Page 511 18.2.5 Class length_error......Page 512 18.2.8 Class range_error......Page 513 18.3.2 The assert macro......Page 514 18.4.1 Header synopsis......Page 515 18.5.1 Header synopsis......Page 516 18.5.2.1 Overview......Page 518 18.5.2.4 Program-defined classes derived from error_category......Page 519 18.5.3.1 Overview......Page 520 18.5.3.4 Observers......Page 521 18.5.4.2 Constructors......Page 522 18.5.5 Comparison functions......Page 523 18.5.7.2 Members......Page 524 19.2.1 Header synopsis......Page 526 19.2.2 swap......Page 528 19.2.4 Forward/move helpers......Page 529 19.4.1 In general......Page 530 19.4.2 Class template pair......Page 531 19.4.3 Specialized algorithms......Page 533 19.4.5 Piecewise construction......Page 534 19.5.2 Header synopsis......Page 535 19.5.3 Class template tuple......Page 536 19.5.3.1 Construction......Page 537 19.5.3.2 Assignment......Page 539 19.5.3.4 Tuple creation functions......Page 540 19.5.3.5 Calling a function with a tuple of arguments......Page 541 19.5.3.6 Tuple helper classes......Page 542 19.5.3.8 Relational operators......Page 543 19.6.1 In general......Page 544 19.6.2 Header synopsis......Page 545 19.6.3 Class template optional......Page 546 19.6.3.1 Constructors......Page 547 19.6.3.3 Assignment......Page 549 19.6.3.4 Swap......Page 552 19.6.3.5 Observers......Page 553 19.6.6 Relational operators......Page 554 19.6.8 Comparison with T......Page 555 19.6.9 Specialized algorithms......Page 556 19.7.2 Header synopsis......Page 557 19.7.3 Class template variant......Page 559 19.7.3.1 Constructors......Page 560 19.7.3.2 Destructor......Page 561 19.7.3.3 Assignment......Page 562 19.7.3.4 Modifiers......Page 563 19.7.4 variant helper classes......Page 564 19.7.5 Value access......Page 565 19.7.6 Relational operators......Page 566 19.7.11 Class bad_variant_access......Page 567 19.8.2 Class bad_any_cast......Page 568 19.8.3.1 Construction and destruction......Page 569 19.8.3.2 Assignment......Page 570 19.8.3.3 Modifiers......Page 571 19.8.4 Non-member functions......Page 572 19.9.2 Class template bitset......Page 573 19.9.2.2 Members......Page 575 19.9.4 bitset operators......Page 578 19.10.2 Header synopsis......Page 579 19.10.3.1 Member types......Page 586 19.10.5 Pointer safety......Page 587 19.10.7 Allocator argument tag......Page 588 19.10.8.2 Uses-allocator construction......Page 589 19.10.9.1 Member types......Page 591 19.10.9.2 Static member functions......Page 592 19.10.10.2 Operators......Page 593 19.10.11.1 Special memory concepts......Page 594 19.10.11.3 uninitialized_default_construct......Page 595 19.10.11.5 uninitialized_copy......Page 596 19.10.11.6 uninitialized_move......Page 597 19.10.11.7 uninitialized_fill......Page 598 19.10.11.8 destroy......Page 599 19.11.1.1.2 default_delete......Page 600 19.11.1.2 unique_ptr for single objects......Page 601 19.11.1.2.1 Constructors......Page 602 19.11.1.2.2 Destructor......Page 603 19.11.1.2.4 Observers......Page 604 19.11.1.3 unique_ptr for array objects with a runtime length......Page 605 19.11.1.3.2 Assignment......Page 606 19.11.1.5 Specialized algorithms......Page 607 19.11.3 Class template shared_ptr......Page 609 19.11.3.1 Constructors......Page 611 19.11.3.2 Destructor......Page 612 19.11.3.5 Observers......Page 613 19.11.3.6 Creation......Page 614 19.11.3.7 Comparison......Page 617 19.11.3.9 Casts......Page 618 19.11.3.11 I/O......Page 619 19.11.4.1 Constructors......Page 620 19.11.4.5 Observers......Page 621 19.11.6 Class template enable_shared_from_this......Page 622 19.11.8 Atomic specializations for smart pointers......Page 623 19.11.8.1 Atomic specialization for shared_ptr......Page 624 19.11.8.2 Atomic specialization for weak_ptr......Page 625 19.12.1 Header synopsis......Page 627 19.12.2.2 Private virtual member functions......Page 628 19.12.3 Class template polymorphic_allocator......Page 629 19.12.3.3 Equality......Page 630 19.12.5.1 Classes synchronized_pool_resource and unsynchronized_pool_resource......Page 631 19.12.5.2 pool_options data members......Page 632 19.12.5.4 Members......Page 633 19.12.6.1 Constructors and destructor......Page 634 19.13.1 Header synopsis......Page 635 19.13.3 Constructors......Page 637 19.13.4 Members......Page 638 19.14.1 Header synopsis......Page 639 19.14.3 Requirements......Page 642 19.14.5 Class template reference_wrapper......Page 643 19.14.5.5 Helper functions......Page 644 19.14.6.2 Class template minus......Page 645 19.14.6.6 Class template negate......Page 646 19.14.7.2 Class template not_equal_to......Page 647 19.14.7.5 Class template greater_equal......Page 648 19.14.8 Range comparisons......Page 649 19.14.9.1 Class template logical_and......Page 651 19.14.10.1 Class template bit_and......Page 652 19.14.11 Class identity......Page 653 19.14.14.1 Class template is_bind_expression......Page 654 19.14.14.3 Function template bind......Page 655 19.14.16 Polymorphic function wrappers......Page 656 19.14.16.2 Class template function......Page 657 19.14.16.2.1 Constructors and destructor......Page 658 19.14.16.2.3 Capacity......Page 659 19.14.17 Searchers......Page 660 19.14.17.2 Class template boyer_moore_searcher......Page 661 19.14.17.3 Class template boyer_moore_horspool_searcher......Page 662 19.15.1 Requirements......Page 663 19.15.2 Header synopsis......Page 664 19.15.3 Helper classes......Page 670 19.15.4.2 Composite type traits......Page 671 19.15.4.3 Type properties......Page 672 19.15.5 Type property queries......Page 678 19.15.6 Relationships between types......Page 679 19.15.7.1 Const-volatile modifications......Page 680 19.15.7.3 Sign modifications......Page 681 19.15.7.6 Other transformations......Page 682 19.15.8 Logical operator traits......Page 686 19.16.1 In general......Page 687 19.16.3 Class template ratio......Page 688 19.16.5 Comparison of ratios......Page 689 19.17.3 type_index members......Page 690 19.18.2 Header synopsis......Page 691 19.18.7 Execution policy objects......Page 692 19.19.2 Primitive numeric output conversion......Page 693 19.19.3 Primitive numeric input conversion......Page 694 20.2.1 Character traits requirements......Page 696 20.2.3.1 struct char_traits......Page 698 20.2.3.3 struct char_traits......Page 699 20.2.3.5 struct char_traits......Page 700 20.3.1 Header synopsis......Page 701 20.3.2 Class template basic_string......Page 705 20.3.2.1 General requirements......Page 709 20.3.2.2 Constructors and assignment operators......Page 710 20.3.2.4 Capacity......Page 712 20.3.2.6.1 basic_string::operator+=......Page 713 20.3.2.6.2 basic_string::append......Page 714 20.3.2.6.3 basic_string::assign......Page 715 20.3.2.6.4 basic_string::insert......Page 716 20.3.2.6.5 basic_string::erase......Page 717 20.3.2.6.6 basic_string::replace......Page 718 20.3.2.6.8 basic_string::swap......Page 719 20.3.2.7.2 Searching......Page 720 20.3.2.7.4 basic_string::compare......Page 721 20.3.3.1 operator+......Page 722 20.3.3.2 Non-member comparison functions......Page 723 20.3.3.4 Inserters and extractors......Page 724 20.3.3.5 Erasure......Page 725 20.3.4 Numeric conversions......Page 726 20.3.6 Suffix for basic_string literals......Page 727 20.4.1 Header synopsis......Page 728 20.4.2 Class template basic_string_view......Page 729 20.4.2.2 Iterator support......Page 731 20.4.2.5 Modifiers......Page 732 20.4.2.6 String operations......Page 733 20.4.2.7 Searching......Page 734 20.4.3 Non-member comparison functions......Page 735 20.4.5 Hash support......Page 736 20.5.2 Header synopsis......Page 737 20.5.4 Header synopsis......Page 738 20.5.6 Multibyte / wide string and character conversion functions......Page 740 21.2.1 General container requirements......Page 742 21.2.3 Sequence containers......Page 748 21.2.4.1 Overview......Page 752 21.2.4.4 Observers......Page 754 21.2.6 Associative containers......Page 755 21.2.7 Unordered associative containers......Page 764 21.3.2 Header synopsis......Page 776 21.3.4 Header synopsis......Page 777 21.3.5 Header synopsis......Page 778 21.3.7.1 Overview......Page 779 21.3.7.2 Constructors, copy, and assignment......Page 780 21.3.7.6 Tuple interface......Page 781 21.3.8.1 Overview......Page 782 21.3.8.4 Modifiers......Page 784 21.3.9.1 Overview......Page 785 21.3.9.2 Constructors, copy, and assignment......Page 787 21.3.9.5 Modifiers......Page 788 21.3.9.6 Operations......Page 790 21.3.10.1 Overview......Page 791 21.3.10.4 Modifiers......Page 794 21.3.10.5 Operations......Page 795 21.3.11.1 Overview......Page 797 21.3.11.3 Capacity......Page 799 21.3.11.4 Data......Page 800 21.3.12 Class vector......Page 801 21.4.1 In general......Page 803 21.4.2 Header synopsis......Page 804 21.4.3 Header synopsis......Page 805 21.4.4.1 Overview......Page 806 21.4.4.2 Constructors, copy, and assignment......Page 809 21.4.4.4 Modifiers......Page 810 21.4.5.1 Overview......Page 811 21.4.5.2 Constructors......Page 814 21.4.6.1 Overview......Page 815 21.4.7.1 Overview......Page 818 21.5.1 In general......Page 821 21.5.2 Header synopsis......Page 822 21.5.3 Header synopsis......Page 823 21.5.4.1 Overview......Page 824 21.5.4.3 Element access......Page 828 21.5.4.4 Modifiers......Page 829 21.5.5.1 Overview......Page 830 21.5.5.3 Modifiers......Page 834 21.5.6.1 Overview......Page 835 21.5.6.2 Constructors......Page 838 21.5.7.1 Overview......Page 839 21.6.1 In general......Page 843 21.6.3 Header synopsis......Page 844 21.6.4.1 Definition......Page 845 21.6.4.5 Specialized algorithms......Page 846 21.6.5.1 Overview......Page 847 21.6.5.3 Constructors with allocators......Page 848 21.6.6.1 Definition......Page 849 21.6.6.4 Operators......Page 850 21.7.3.1 Overview......Page 851 21.7.3.2 Constructors, copy, and assignment......Page 853 21.7.3.3 Subviews......Page 854 21.7.3.6 Iterator support......Page 855 21.7.3.7 Views of object representation......Page 856 22.2 Header synopsis......Page 857 22.3.1 In general......Page 863 22.3.2.1 Incrementable traits......Page 865 22.3.2.2 Readable traits......Page 866 22.3.2.3 Iterator traits......Page 867 22.3.3.2 iter_swap......Page 869 22.3.4.2 Concept Readable......Page 870 22.3.4.4 Concept WeaklyIncrementable......Page 871 22.3.4.8 Concept SizedSentinel......Page 872 22.3.4.11 Concept ForwardIterator......Page 873 22.3.4.13 Concept RandomAccessIterator......Page 874 22.3.5.2 Input iterators......Page 875 22.3.5.3 Output iterators......Page 876 22.3.5.4 Forward iterators......Page 877 22.3.5.6 Random access iterators......Page 878 22.3.6.2 Indirect callables......Page 879 22.3.7.2 Concept IndirectlyMovable......Page 880 22.3.7.5 Concept IndirectlyComparable......Page 881 22.4.1 Standard iterator tags......Page 882 22.4.3 Range iterator operations......Page 883 22.4.3.2 ranges::distance......Page 884 22.5.1.1 Class template reverse_iterator......Page 885 22.5.1.4 Conversion......Page 887 22.5.1.7 Comparisons......Page 888 22.5.1.8 Non-member functions......Page 889 22.5.2.1 Class template back_insert_iterator......Page 890 22.5.2.2 Class template front_insert_iterator......Page 891 22.5.2.3 Class template insert_iterator......Page 892 22.5.3.1 Class template move_iterator......Page 893 22.5.3.5 Element access......Page 895 22.5.3.7 Comparisons......Page 896 22.5.3.8 Non-member functions......Page 897 22.5.3.10 Operations......Page 898 22.5.4.1 Class template common_iterator......Page 899 22.5.4.3 Constructors and conversions......Page 900 22.5.4.5 Navigation......Page 901 22.5.6.1 Class template counted_iterator......Page 902 22.5.6.2 Constructors and conversions......Page 904 22.5.6.5 Navigation......Page 905 22.5.6.6 Comparisons......Page 906 22.5.7.1 Class unreachable_sentinel_t......Page 907 22.6.1 Class template istream_iterator......Page 908 22.6.1.1 Constructors and destructor......Page 909 22.6.2 Class template ostream_iterator......Page 910 22.6.3 Class template istreambuf_iterator......Page 911 22.6.3.1 Class istreambuf_iterator::proxy......Page 912 22.6.4 Class template ostreambuf_iterator......Page 913 22.7 Range access......Page 914 22.8 Container and view access......Page 915 23.2 Header synopsis......Page 917 23.3.2 ranges::end......Page 920 23.3.6 ranges::rend......Page 921 23.4.2 empty......Page 922 23.5.2 Ranges......Page 923 23.5.3 Sized ranges......Page 924 23.5.5 Common range refinements......Page 925 23.6.2 View interface......Page 926 23.6.3 Sub-ranges......Page 928 23.6.3.2 Accessors......Page 930 23.7.1 Range adaptor objects......Page 931 23.7.3.1 ref-view......Page 932 23.7.4.2 Class template filter_view......Page 933 23.7.4.3 Class filter_view::iterator......Page 934 23.7.4.4 Class filter_view::sentinel......Page 936 23.7.5.2 Class template transform_view......Page 937 23.7.5.3 Class template transform_view::iterator......Page 938 23.7.5.4 Class template transform_view::sentinel......Page 941 23.7.6.2 Class template iota_view......Page 943 23.7.6.3 Class iota_view::iterator......Page 945 23.7.6.4 Class iota_view::sentinel......Page 947 23.7.7.2 Class template take_view......Page 948 23.7.7.3 Class template take_view::sentinel......Page 949 23.7.8.2 Class template join_view......Page 950 23.7.8.3 Class template join_view::iterator......Page 951 23.7.8.4 Class template join_view::sentinel......Page 954 23.7.9.2 Class template empty_view......Page 955 23.7.10.2 Class template single_view......Page 956 23.7.11.2 Class template split_view......Page 957 23.7.11.3 Class template split_view::outer_iterator......Page 958 23.7.11.5 Class template split_view::inner_iterator......Page 960 23.7.13.1 Overview......Page 962 23.7.13.2 Class template common_view......Page 963 23.7.14.2 Class template reverse_view......Page 964 23.7.14.3 view::reverse......Page 965 24.2 Algorithms requirements......Page 966 24.3.3 Effect of execution policies on algorithm execution......Page 968 24.4 Header synopsis......Page 970 24.5.1 All of......Page 1005 24.5.4 For each......Page 1006 24.5.5 Find......Page 1008 24.5.7 Find first......Page 1009 24.5.8 Adjacent find......Page 1010 24.5.9 Count......Page 1011 24.5.10 Mismatch......Page 1012 24.5.11 Equal......Page 1013 24.5.12 Is permutation......Page 1014 24.5.13 Search......Page 1015 24.6.1 Copy......Page 1017 24.6.2 Move......Page 1019 24.6.4 Transform......Page 1021 24.6.5 Replace......Page 1023 24.6.6 Fill......Page 1025 24.6.8 Remove......Page 1026 24.6.9 Unique......Page 1028 24.6.10 Reverse......Page 1030 24.6.11 Rotate......Page 1031 24.6.12 Sample......Page 1032 24.6.14 Shift......Page 1033 24.7.1.1 sort......Page 1034 24.7.1.2 stable_sort......Page 1035 24.7.1.4 partial_sort_copy......Page 1036 24.7.1.5 is_sorted......Page 1038 24.7.3 Binary search......Page 1039 24.7.3.2 upper_bound......Page 1040 24.7.3.4 binary_search......Page 1041 24.7.4 Partitions......Page 1042 24.7.5 Merge......Page 1044 24.7.6.1 includes......Page 1046 24.7.6.2 set_union......Page 1047 24.7.6.3 set_intersection......Page 1048 24.7.6.4 set_difference......Page 1049 24.7.6.5 set_symmetric_difference......Page 1050 24.7.7.1 push_heap......Page 1051 24.7.7.3 make_heap......Page 1052 24.7.7.5 is_heap......Page 1053 24.7.8 Minimum and maximum......Page 1055 24.7.10 Lexicographical comparison......Page 1058 24.7.11 Three-way comparison algorithms......Page 1059 24.7.12 Permutation generators......Page 1060 24.8 Header synopsis......Page 1061 24.9.3 Reduce......Page 1065 24.9.5 Transform reduce......Page 1066 24.9.7 Exclusive scan......Page 1068 24.9.8 Inclusive scan......Page 1069 24.9.9 Transform exclusive scan......Page 1070 24.9.10 Transform inclusive scan......Page 1071 24.9.12 Iota......Page 1072 24.10 C library algorithms......Page 1073 25.2 Numeric type requirements......Page 1074 25.3.1 Header synopsis......Page 1075 25.4.1 Header synopsis......Page 1076 25.4.2 Class template complex......Page 1077 25.4.3 Specializations......Page 1078 25.4.4 Member functions......Page 1079 25.4.6 Non-member operations......Page 1080 25.4.8 Transcendentals......Page 1082 25.4.9 Additional overloads......Page 1083 25.5.3 Function template bit_cast......Page 1084 25.6 Random number generation......Page 1085 25.6.1 Header synopsis......Page 1086 25.6.2.2 Seed sequence requirements......Page 1088 25.6.2.3 Uniform random bit generator requirements......Page 1089 25.6.2.4 Random number engine requirements......Page 1090 25.6.2.6 Random number distribution requirements......Page 1092 25.6.3.1 Class template linear_congruential_engine......Page 1095 25.6.3.2 Class template mersenne_twister_engine......Page 1096 25.6.3.3 Class template subtract_with_carry_engine......Page 1097 25.6.4.1 In general......Page 1098 25.6.4.3 Class template independent_bits_engine......Page 1099 25.6.4.4 Class template shuffle_order_engine......Page 1100 25.6.5 Engines and engine adaptors with predefined parameters......Page 1101 25.6.6 Class random_device......Page 1102 25.6.7.1 Class seed_seq......Page 1103 25.6.8.2.1 Class template uniform_int_distribution......Page 1105 25.6.8.2.2 Class template uniform_real_distribution......Page 1106 25.6.8.3.1 Class bernoulli_distribution......Page 1107 25.6.8.3.3 Class template geometric_distribution......Page 1108 25.6.8.3.4 Class template negative_binomial_distribution......Page 1109 25.6.8.4.2 Class template exponential_distribution......Page 1110 25.6.8.4.3 Class template gamma_distribution......Page 1111 25.6.8.4.4 Class template weibull_distribution......Page 1112 25.6.8.5.1 Class template normal_distribution......Page 1113 25.6.8.5.2 Class template lognormal_distribution......Page 1114 25.6.8.5.3 Class template chi_squared_distribution......Page 1115 25.6.8.5.5 Class template fisher_f_distribution......Page 1116 25.6.8.5.6 Class template student_t_distribution......Page 1117 25.6.8.6.1 Class template discrete_distribution......Page 1118 25.6.8.6.2 Class template piecewise_constant_distribution......Page 1119 25.6.8.6.3 Class template piecewise_linear_distribution......Page 1121 25.7.1 Header synopsis......Page 1122 25.7.2.1 Overview......Page 1125 25.7.2.3 Assignment......Page 1127 25.7.2.5 Subset operations......Page 1128 25.7.2.7 Compound assignment......Page 1130 25.7.2.8 Member functions......Page 1131 25.7.3.1 Binary operators......Page 1132 25.7.3.2 Logical operators......Page 1133 25.7.4.2 Constructors......Page 1134 25.7.5.3 Compound assignment......Page 1135 25.7.6.1 Overview......Page 1136 25.7.7.1 Overview......Page 1137 25.7.8.1 Overview......Page 1138 25.7.9.1 Overview......Page 1139 25.7.10 valarray range access......Page 1140 25.8.1 Header synopsis......Page 1141 25.8.5.1 Associated Laguerre polynomials......Page 1150 25.8.5.6 Complete elliptic integral of the third kind......Page 1151 25.8.5.10 Cylindrical Neumann functions......Page 1152 25.8.5.14 Exponential integral......Page 1153 25.8.5.18 Riemann zeta function......Page 1154 25.8.5.21 Spherical Neumann functions......Page 1155 26.2 Header synopsis......Page 1156 26.3 Cpp17Clock requirements......Page 1171 26.4.2 duration_values......Page 1172 26.5 Class template duration......Page 1173 26.5.1 Constructors......Page 1174 26.5.3 Arithmetic......Page 1175 26.5.5 Non-member arithmetic......Page 1176 26.5.6 Comparisons......Page 1177 26.5.8 Suffixes for duration literals......Page 1178 26.5.10 I/O......Page 1179 26.6 Class template time_point......Page 1180 26.6.3 Arithmetic......Page 1181 26.6.6 Comparisons......Page 1182 26.7.1.1 Overview......Page 1183 26.7.1.3 Non-member functions......Page 1184 26.7.2.2 Member functions......Page 1185 26.7.2.3 Non-member functions......Page 1186 26.7.3.2 Member functions......Page 1187 26.7.4.1 Overview......Page 1188 26.7.4.3 Non-member functions......Page 1189 26.7.5.2 Member functions......Page 1190 26.7.6 Class steady_clock......Page 1191 26.7.9.1 Class template clock_time_conversion......Page 1192 26.7.9.3 Conversions between system_clock and utc_clock......Page 1193 26.7.9.5 Conversions between utc_clock and other clocks......Page 1194 26.8.2 Class last_spec......Page 1195 26.8.3.2 Member functions......Page 1196 26.8.4.1 Overview......Page 1197 26.8.4.2 Member functions......Page 1198 26.8.4.3 Non-member functions......Page 1199 26.8.5.2 Member functions......Page 1200 26.8.5.3 Non-member functions......Page 1201 26.8.6.1 Overview......Page 1202 26.8.6.2 Member functions......Page 1203 26.8.7.1 Overview......Page 1204 26.8.8.1 Overview......Page 1205 26.8.9.2 Member functions......Page 1206 26.8.10 Class month_day_last......Page 1207 26.8.11.2 Member functions......Page 1208 26.8.12.3 Non-member functions......Page 1209 26.8.13.2 Member functions......Page 1210 26.8.13.3 Non-member functions......Page 1211 26.8.14.2 Member functions......Page 1212 26.8.14.3 Non-member functions......Page 1213 26.8.15.1 Overview......Page 1214 26.8.15.2 Member functions......Page 1215 26.8.16.1 Overview......Page 1216 26.8.16.2 Member functions......Page 1217 26.8.16.3 Non-member functions......Page 1218 26.8.17.2 Member functions......Page 1219 26.8.17.3 Non-member functions......Page 1220 26.8.18 Conventional syntax operators......Page 1221 26.9.2 Hours precision......Page 1224 26.9.3 Minutes precision......Page 1225 26.9.5 Sub-second precision......Page 1226 26.9.6 Formatted output......Page 1227 26.10.2.1 Class tzdb......Page 1229 26.10.2.2 Class tzdb_list......Page 1230 26.10.3.1 Class nonexistent_local_time......Page 1231 26.10.3.2 Class ambiguous_local_time......Page 1232 26.10.4.1 Class sys_info......Page 1233 26.10.5.1 Overview......Page 1234 26.10.6 Class template zoned_traits......Page 1235 26.10.7.1 Overview......Page 1236 26.10.7.2 Constructors......Page 1237 26.10.7.4 Non-member functions......Page 1239 26.10.8.1 Overview......Page 1240 26.10.8.3 Non-member functions......Page 1241 26.11 Formatting......Page 1242 26.12 Parsing......Page 1245 26.13 Header synopsis......Page 1248 27.2 Header synopsis......Page 1250 27.3.1 Class locale......Page 1251 27.3.1.1.1 Type locale::category......Page 1253 27.3.1.1.2 Class locale::facet......Page 1254 27.3.1.2 Constructors and destructor......Page 1255 27.3.1.4 Operators......Page 1256 27.3.3.2.1 Character conversions......Page 1257 27.4.1.1 Class template ctype......Page 1258 27.4.1.1.2 ctype virtual functions......Page 1259 27.4.1.3 ctype specialization......Page 1261 27.4.1.3.2 Members......Page 1262 27.4.1.4 Class template codecvt......Page 1263 27.4.1.4.1 Members......Page 1264 27.4.1.4.2 Virtual functions......Page 1265 27.4.1.5 Class template codecvt_byname......Page 1266 27.4.2.1 Class template num_get......Page 1267 27.4.2.1.2 Virtual functions......Page 1268 27.4.2.2.2 Virtual functions......Page 1271 27.4.3.1.1 Members......Page 1274 27.4.4.1 Class template collate......Page 1275 27.4.4.2 Class template collate_byname......Page 1276 27.4.5.1 Class template time_get......Page 1277 27.4.5.1.1 Members......Page 1278 27.4.5.1.2 Virtual functions......Page 1279 27.4.5.3 Class template time_put......Page 1280 27.4.5.4 Class template time_put_byname......Page 1281 27.4.6.1.2 Virtual functions......Page 1282 27.4.6.2 Class template money_put......Page 1283 27.4.6.3 Class template moneypunct......Page 1284 27.4.6.4 Class template moneypunct_byname......Page 1286 27.4.7.1.2 Virtual functions......Page 1287 27.5.1 Header synopsis......Page 1288 28.2.1 Imbue limitations......Page 1290 28.3.1 Header synopsis......Page 1291 28.4.2 Overview......Page 1293 28.5.1 Header synopsis......Page 1294 28.5.2 Types......Page 1295 28.5.3 Class ios_base......Page 1296 28.5.3.1.2 Type ios_base::fmtflags......Page 1298 28.5.3.1.5 Type ios_base::seekdir......Page 1299 28.5.3.2 State functions......Page 1300 28.5.3.5 Storage functions......Page 1301 28.5.4 Class template fpos......Page 1302 28.5.4.2 Requirements......Page 1303 28.5.5.1 Overview......Page 1304 28.5.5.3 Member functions......Page 1305 28.5.5.4 Flags functions......Page 1307 28.5.6.1 fmtflags manipulators......Page 1308 28.5.6.4 floatfield manipulators......Page 1309 28.6.2 Stream buffer requirements......Page 1310 28.6.3 Class template basic_streambuf......Page 1311 28.6.3.1 Constructors......Page 1312 28.6.3.2.3 Get area......Page 1313 28.6.3.3.2 Get area access......Page 1314 28.6.3.4.2 Buffer management and positioning......Page 1315 28.6.3.4.3 Get area......Page 1316 28.6.3.4.5 Put area......Page 1317 28.7.2 Header synopsis......Page 1318 28.7.4.1 Class template basic_istream......Page 1319 28.7.4.1.3 Class basic_istream::sentry......Page 1321 28.7.4.2.2 Arithmetic extractors......Page 1322 28.7.4.2.3 basic_istream::operator>>......Page 1323 28.7.4.3 Unformatted input functions......Page 1325 28.7.4.4 Standard basic_istream manipulators......Page 1328 28.7.4.6.2 Destructor......Page 1329 28.7.5.1 Class template basic_ostream......Page 1330 28.7.5.1.1 Constructors......Page 1331 28.7.5.1.4 Seek members......Page 1332 28.7.5.2.2 Arithmetic inserters......Page 1333 28.7.5.2.3 basic_ostream::operator

Similar books