Working Draft, Standard for Programming Language C++

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This document specifies requirements for implementations of the C++ programming language.

Author(s): ISO/IEC
Year: 2018

Language: English
Pages: 1720

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<<......Page 1334
28.7.5.2.4 Character inserter function templates......Page 1335
28.7.5.4 Standard manipulators......Page 1336
28.7.6 Standard manipulators......Page 1337
28.7.7 Extended manipulators......Page 1339
28.7.8 Quoted manipulators......Page 1340
28.8.1 Header synopsis......Page 1341
28.8.2 Class template basic_stringbuf......Page 1342
28.8.2.1 Constructors......Page 1343
28.8.2.4 Overridden virtual functions......Page 1344
28.8.3 Class template basic_istringstream......Page 1346
28.8.4 Class template basic_ostringstream......Page 1347
28.8.4.2 Assignment and swap......Page 1348
28.8.5 Class template basic_stringstream......Page 1349
28.9.1 Header synopsis......Page 1350
28.9.2 Class template basic_filebuf......Page 1351
28.9.2.1 Constructors......Page 1352
28.9.2.3 Member functions......Page 1353
28.9.2.4 Overridden virtual functions......Page 1354
28.9.3.1 Constructors......Page 1357
28.9.3.3 Member functions......Page 1358
28.9.4.1 Constructors......Page 1359
28.9.4.3 Member functions......Page 1360
28.9.5 Class template basic_fstream......Page 1361
28.9.5.3 Member functions......Page 1362
28.10.2.1 Overview......Page 1363
28.10.2.3 Assignment and swap......Page 1364
28.10.2.6 Specialized algorithms......Page 1365
28.10.3.2 Construction and destruction......Page 1366
28.10.3.4 Member functions......Page 1367
28.11.2.1 POSIX conformance......Page 1368
28.11.5 Header synopsis......Page 1369
28.11.6 Error reporting......Page 1372
28.11.7 Class path......Page 1373
28.11.7.1 Generic pathname format......Page 1376
28.11.7.2.1 Argument format conversions......Page 1377
28.11.7.3 Requirements......Page 1378
28.11.7.4.1 Constructors......Page 1379
28.11.7.4.3 Appends......Page 1380
28.11.7.4.5 Modifiers......Page 1381
28.11.7.4.6 Native format observers......Page 1382
28.11.7.4.8 Compare......Page 1383
28.11.7.4.9 Decomposition......Page 1384
28.11.7.4.11 Generation......Page 1385
28.11.7.5 Iterators......Page 1386
28.11.7.7 Non-member functions......Page 1387
28.11.8.1 Members......Page 1388
28.11.9.2 Enum class file_type......Page 1389
28.11.10 Class file_status......Page 1390
28.11.11 Class directory_entry......Page 1392
28.11.11.3 Observers......Page 1394
28.11.12 Class directory_iterator......Page 1396
28.11.12.1 Members......Page 1397
28.11.13 Class recursive_directory_iterator......Page 1398
28.11.13.1 Members......Page 1399
28.11.14.2 Canonical......Page 1401
28.11.14.3 Copy......Page 1402
28.11.14.4 Copy file......Page 1403
28.11.14.7 Create directory......Page 1404
28.11.14.10 Create symlink......Page 1405
28.11.14.14 File size......Page 1406
28.11.14.19 Is empty......Page 1407
28.11.14.23 Is socket......Page 1408
28.11.14.27 Proximate......Page 1409
28.11.14.32 Rename......Page 1410
28.11.14.35 Status......Page 1411
28.11.14.38 Temporary directory path......Page 1412
28.12.1 Header synopsis......Page 1413
28.12.2 Header synopsis......Page 1414
29.2 Definitions......Page 1417
29.3 Requirements......Page 1418
29.4 Header synopsis......Page 1419
29.5.2 Bitmask type match_flag_type......Page 1425
29.5.3 Implementation-defined error_type......Page 1427
29.7 Class template regex_traits......Page 1428
29.8 Class template basic_regex......Page 1430
29.8.1 Constructors......Page 1432
29.8.2 Assignment......Page 1433
29.8.5 Swap......Page 1434
29.9.1 Members......Page 1435
29.9.2 Non-member operators......Page 1436
29.10 Class template match_results......Page 1439
29.10.1 Constructors......Page 1441
29.10.4 Element access......Page 1442
29.10.7 Swap......Page 1443
29.11.2 regex_match......Page 1444
29.11.3 regex_search......Page 1446
29.11.4 regex_replace......Page 1447
29.12.1 Class template regex_iterator......Page 1448
29.12.1.2 Comparisons......Page 1449
29.12.2 Class template regex_token_iterator......Page 1450
29.12.2.1 Constructors......Page 1452
29.13 Modified ECMAScript regular expression grammar......Page 1453
30.2 Header synopsis......Page 1456
30.4 Order and consistency......Page 1460
30.5 Lock-free property......Page 1461
30.6.1 Operations......Page 1462
30.6.2 Specializations for integral types......Page 1464
30.6.3 Specializations for floating-point types......Page 1465
30.6.4 Partial specialization for pointers......Page 1466
30.7 Class template atomic......Page 1467
30.7.1 Operations on atomic types......Page 1468
30.7.2 Specializations for integers......Page 1471
30.7.3 Specializations for floating-point types......Page 1473
30.7.4 Partial specialization for pointers......Page 1474
30.7.5 Member operators common to integers and pointers to objects......Page 1475
30.9 Flag type and operations......Page 1476
30.10 Fences......Page 1477
31.2.4 Timing specifications......Page 1479
31.2.5.2 Cpp17BasicLockable requirements......Page 1480
31.3.1 Header synopsis......Page 1481
31.3.2.1 Class thread::id......Page 1482
31.3.2.5 Members......Page 1484
31.3.3 Namespace this_thread......Page 1485
31.4.2 Header synopsis......Page 1486
31.4.3.2 Mutex types......Page 1487
31.4.3.2.2 Class recursive_mutex......Page 1488
31.4.3.3 Timed mutex types......Page 1489
31.4.3.3.2 Class recursive_timed_mutex......Page 1490
31.4.3.4 Shared mutex types......Page 1491
31.4.3.5 Shared timed mutex types......Page 1492
31.4.3.5.1 Class shared_timed_mutex......Page 1493
31.4.4.1 Class template lock_guard......Page 1494
31.4.4.3 Class template unique_lock......Page 1495
31.4.4.3.1 Constructors, destructor, and assignment......Page 1496
31.4.4.3.2 Locking......Page 1497
31.4.4.4 Class template shared_lock......Page 1499
31.4.4.4.1 Constructors, destructor, and assignment......Page 1500
31.4.4.4.2 Locking......Page 1501
31.4.5 Generic locking algorithms......Page 1502
31.4.6.2 Function call_once......Page 1503
31.5.2 Non-member functions......Page 1504
31.5.3 Class condition_variable......Page 1505
31.5.4 Class condition_variable_any......Page 1508
31.6.2 Header synopsis......Page 1510
31.6.3 Error handling......Page 1511
31.6.5 Shared state......Page 1512
31.6.6 Class template promise......Page 1513
31.6.7 Class template future......Page 1515
31.6.8 Class template shared_future......Page 1517
31.6.9 Function template async......Page 1520
31.6.10 Class template packaged_task......Page 1521
31.6.10.1 Member functions......Page 1522
31.6.10.2 Globals......Page 1523
A.2 Lexical conventions......Page 1524
A.4 Expressions......Page 1528
A.5 Statements......Page 1532
A.6 Declarations......Page 1533
A.7 Classes......Page 1539
A.8 Overloading......Page 1540
A.9 Templates......Page 1541
A.11 Preprocessing directives......Page 1542
B Implementation quantities......Page 1544
C.1.1 Clause 5: lexical conventions......Page 1546
C.1.3 Clause 7: expressions......Page 1547
C.1.4 Clause 8: statements......Page 1548
C.1.5 Clause 9: declarations......Page 1549
C.1.6 Clause 10: classes......Page 1552
C.2.1 Clause 5: lexical conventions......Page 1554
C.2.4 Clause 10: classes......Page 1555
C.2.6 Clause 15: library introduction......Page 1556
C.2.11 Clause 21: containers library......Page 1557
C.2.13 Clause 25: numerics library......Page 1558
C.3.2 Clause 6: basics......Page 1559
C.3.5 Clause 15: library introduction......Page 1560
C.4.3 Clause 9: declarations......Page 1561
C.4.5 Clause 12: templates......Page 1562
C.4.9 Clause 20: strings library......Page 1563
C.5.1 Clause 5: lexical conventions......Page 1564
C.5.4 Clause 9: declarations......Page 1565
C.5.6 Clause 12: templates......Page 1566
C.5.10 Clause 24: algorithms library......Page 1567
C.5.12 Annex D: compatibility features......Page 1568
C.6.2.6 Header ......Page 1569
C.6.4.2 Memory allocation functions......Page 1570
D.4 Redeclaration of static constexpr data members......Page 1571
D.6.5 Header synopsis......Page 1572
D.8.2 Class strstreambuf......Page 1573
D.8.2.1 strstreambuf constructors......Page 1575
D.8.2.3 strstreambuf overridden virtual functions......Page 1576
D.8.3 Class istrstream......Page 1578
D.8.4.1 ostrstream constructors......Page 1579
D.8.5.1 strstream constructors......Page 1580
D.10.1 Basic iterator......Page 1581
D.11 Deprecated shared_ptr atomic access......Page 1582
D.13.2 Requirements......Page 1584
D.14.1 Class template wstring_convert......Page 1585
D.14.2 Class template wbuffer_convert......Page 1588
D.16 Deprecated filesystem path factory functions......Page 1589
Bibliography......Page 1590
Cross references......Page 1591
Cross references from ISO C++ 2017......Page 1612
Index......Page 1614
Index of grammar productions......Page 1645
Index of library headers......Page 1650
Index of library names......Page 1652
Index of implementation-defined behavior......Page 1717