Shopping Cart

No products in the cart.

BS ISO/IEC 14882:2020

$165.47

Programming languages. C++

Published By Publication Date Number of Pages
BSI 2020 1868
Guaranteed Safe Checkout
Category:

If you have any questions, feel free to reach out to our online customer service team by clicking on the bottom right corner. We’re here to assist you 24/7.
Email:[email protected]

PDF Catalog

PDF Pages PDF Title
2 undefined
3 79358.pdf
5 Contents
12 Foreword
14 Blank Page
15 1 Scope
16 2 Normative references
17 3 Terms and definitions
23 4 General principles
4.1 Implementation compliance
4.1.1 General
24 4.1.2 Abstract machine
4.2 Structure of this document
25 4.3 Syntax notation
26 5 Lexical conventions
5.1 Separate translation
5.2 Phases of translation
27 5.3 Character sets
28 5.4 Preprocessing tokens
29 5.5 Alternative tokens
5.6 Tokens
5.7 Comments
30 5.8 Header names
5.9 Preprocessing numbers
5.10 Identifiers
31 5.11 Keywords
32 5.12 Operators and punctuators
33 5.13 Literals
5.13.1 Kinds of literals
5.13.2 Integer literals
34 5.13.3 Character literals
36 5.13.4 Floating-point literals
37 5.13.5 String literals
39 5.13.6 Boolean literals
5.13.7 Pointer literals
5.13.8 User-defined literals
42 6 Basics
6.1 Preamble
6.2 Declarations and definitions
44 6.3 One-definition rule
48 6.4 Scope
6.4.1 Declarative regions and scopes
49 6.4.2 Point of declaration
51 6.4.3 Block scope
6.4.4 Function parameter scope
6.4.5 Function scope
6.4.6 Namespace scope
52 6.4.7 Class scope
53 6.4.8 Enumeration scope
6.4.9 Template parameter scope
54 6.4.10 Name hiding
6.5 Name lookup
6.5.1 General
55 6.5.2 Unqualified name lookup
58 6.5.3 Argument-dependent name lookup
60 6.5.4 Qualified name lookup
6.5.4.1 General
61 6.5.4.2 Class members
62 6.5.4.3 Namespace members
65 6.5.5 Elaborated type specifiers
66 6.5.6 Class member access
67 6.5.7 Using-directives and namespace aliases
6.6 Program and linkage
71 6.7 Memory and objects
6.7.1 Memory model
72 6.7.2 Object model
74 6.7.3 Lifetime
77 6.7.4 Indeterminate values
78 6.7.5 Storage duration
6.7.5.1 General
6.7.5.2 Static storage duration
6.7.5.3 Thread storage duration
6.7.5.4 Automatic storage duration
79 6.7.5.5 Dynamic storage duration
6.7.5.5.1 General
6.7.5.5.2 Allocation functions
80 6.7.5.5.3 Deallocation functions
81 6.7.5.5.4 Safely-derived pointers
6.7.5.6 Duration of subobjects
6.7.6 Alignment
82 6.7.7 Temporary objects
85 6.8 Types
6.8.1 General
87 6.8.2 Fundamental types
89 6.8.3 Compound types
91 6.8.4 CV-qualifiers
6.8.5 Integer conversion rank
92 6.9 Program execution
6.9.1 Sequential execution
95 6.9.2 Multi-threaded executions and data races
6.9.2.1 General
6.9.2.2 Data races
98 6.9.2.3 Forward progress
100 6.9.3 Start and termination
6.9.3.1 main function
6.9.3.2 Static initialization
101 6.9.3.3 Dynamic initialization of non-local variables
102 6.9.3.4 Termination
104 7 Expressions
7.1 Preamble
105 7.2 Properties of expressions
7.2.1 Value category
106 7.2.2 Type
107 7.2.3 Context dependence
108 7.3 Standard conversions
7.3.1 General
109 7.3.2 Lvalue-to-rvalue conversion
7.3.3 Array-to-pointer conversion
7.3.4 Function-to-pointer conversion
7.3.5 Temporary materialization conversion
110 7.3.6 Qualification conversions
7.3.7 Integral promotions
111 7.3.8 Floating-point promotion
7.3.9 Integral conversions
7.3.10 Floating-point conversions
7.3.11 Floating-integral conversions
112 7.3.12 Pointer conversions
7.3.13 Pointer-to-member conversions
7.3.14 Function pointer conversions
7.3.15 Boolean conversions
113 7.4 Usual arithmetic conversions
7.5 Primary expressions
7.5.1 Literals
7.5.2 This
114 7.5.3 Parentheses
7.5.4 Names
7.5.4.1 General
115 7.5.4.2 Unqualified names
116 7.5.4.3 Qualified names
7.5.4.4 Destruction
117 7.5.5 Lambda expressions
7.5.5.1 General
7.5.5.2 Closure types
121 7.5.5.3 Captures
126 7.5.6 Fold expressions
127 7.5.7 Requires expressions
7.5.7.1 General
128 7.5.7.2 Simple requirements
7.5.7.3 Type requirements
7.5.7.4 Compound requirements
129 7.5.7.5 Nested requirements
130 7.6 Compound expressions
7.6.1 Postfix expressions
7.6.1.1 General
7.6.1.2 Subscripting
7.6.1.3 Function call
132 7.6.1.4 Explicit type conversion (functional notation)
133 7.6.1.5 Class member access
134 7.6.1.6 Increment and decrement
7.6.1.7 Dynamic cast
135 7.6.1.8 Type identification
136 7.6.1.9 Static cast
138 7.6.1.10 Reinterpret cast
139 7.6.1.11 Const cast
140 7.6.2 Unary expressions
7.6.2.1 General
7.6.2.2 Unary operators
141 7.6.2.3 Increment and decrement
142 7.6.2.4 Await
143 7.6.2.5 Sizeof
144 7.6.2.6 Alignof
7.6.2.7 noexcept operator
7.6.2.8 New
149 7.6.2.9 Delete
150 7.6.3 Explicit type conversion (cast notation)
151 7.6.4 Pointer-to-member operators
152 7.6.5 Multiplicative operators
153 7.6.6 Additive operators
7.6.7 Shift operators
154 7.6.8 Three-way comparison operator
7.6.9 Relational operators
155 7.6.10 Equality operators
156 7.6.11 Bitwise AND operator
157 7.6.12 Bitwise exclusive OR operator
7.6.13 Bitwise inclusive OR operator
7.6.14 Logical AND operator
7.6.15 Logical OR operator
7.6.16 Conditional operator
159 7.6.17 Yielding a value
7.6.18 Throwing an exception
160 7.6.19 Assignment and compound assignment operators
161 7.6.20 Comma operator
7.7 Constant expressions
167 8 Statements
8.1 Preamble
168 8.2 Labeled statement
8.3 Expression statement
8.4 Compound statement or block
8.5 Selection statements
8.5.1 General
169 8.5.2 The if statement
170 8.5.3 The switch statement
8.6 Iteration statements
8.6.1 General
171 8.6.2 The while statement
8.6.3 The do statement
172 8.6.4 The for statement
8.6.5 The range-based for statement
173 8.7 Jump statements
8.7.1 General
8.7.2 The break statement
8.7.3 The continue statement
174 8.7.4 The return statement
8.7.5 The co_return statement
8.7.6 The goto statement
175 8.8 Declaration statement
8.9 Ambiguity resolution
177 9 Declarations
9.1 Preamble
179 9.2 Specifiers
9.2.1 General
9.2.2 Storage class specifiers
181 9.2.3 Function specifiers
9.2.4 The typedef specifier
183 9.2.5 The friend specifier
9.2.6 The constexpr and consteval specifiers
186 9.2.7 The constinit specifier
9.2.8 The inline specifier
187 9.2.9 Type specifiers
9.2.9.1 General
188 9.2.9.2 The cv-qualifiers
189 9.2.9.3 Simple type specifiers
9.2.9.4 Elaborated type specifiers
191 9.2.9.5 Decltype specifiers
192 9.2.9.6 Placeholder type specifiers
9.2.9.6.1 General
194 9.2.9.6.2 Placeholder type deduction
196 9.2.9.7 Deduced class template specialization types
9.3 Declarators
9.3.1 General
198 9.3.2 Type names
9.3.3 Ambiguity resolution
200 9.3.4 Meaning of declarators
9.3.4.1 General
9.3.4.2 Pointers
201 9.3.4.3 References
202 9.3.4.4 Pointers to members
203 9.3.4.5 Arrays
204 9.3.4.6 Functions
208 9.3.4.7 Default arguments
211 9.4 Initializers
9.4.1 General
215 9.4.2 Aggregates
220 9.4.3 Character arrays
9.4.4 References
223 9.4.5 List-initialization
227 9.5 Function definitions
9.5.1 In general
228 9.5.2 Explicitly-defaulted functions
229 9.5.3 Deleted definitions
230 9.5.4 Coroutine definitions
233 9.6 Structured binding declarations
234 9.7 Enumerations
9.7.1 Enumeration declarations
237 9.7.2 The using enum declaration
238 9.8 Namespaces
9.8.1 General
9.8.2 Namespace definition
9.8.2.1 General
240 9.8.2.2 Unnamed namespaces
9.8.2.3 Namespace member definitions
242 9.8.3 Namespace alias
9.8.4 Using namespace directive
245 9.9 The using declaration
250 9.10 The asm declaration
251 9.11 Linkage specifications
253 9.12 Attributes
9.12.1 Attribute syntax and semantics
255 9.12.2 Alignment specifier
256 9.12.3 Carries dependency attribute
257 9.12.4 Deprecated attribute
9.12.5 Fallthrough attribute
258 9.12.6 Likelihood attributes
9.12.7 Maybe unused attribute
259 9.12.8 Nodiscard attribute
260 9.12.9 Noreturn attribute
9.12.10 No unique address attribute
261 10 Modules
10.1 Module units and purviews
262 10.2 Export declaration
265 10.3 Import declaration
266 10.4 Global module fragment
268 10.5 Private module fragment
269 10.6 Instantiation context
270 10.7 Reachability
272 11 Classes
11.1 Preamble
273 11.2 Properties of classes
274 11.3 Class names
276 11.4 Class members
11.4.1 General
279 11.4.2 Member functions
280 11.4.3 Non-static member functions
11.4.3.1 General
281 11.4.3.2 The this pointer
282 11.4.4 Special member functions
283 11.4.5 Constructors
11.4.5.1 General
11.4.5.2 Default constructors
284 11.4.5.3 Copy/move constructors
287 11.4.6 Copy/move assignment operator
289 11.4.7 Destructors
292 11.4.8 Conversions
11.4.8.1 General
293 11.4.8.2 Conversion by constructor
11.4.8.3 Conversion functions
295 11.4.9 Static members
11.4.9.1 General
11.4.9.2 Static member functions
296 11.4.9.3 Static data members
11.4.10 Bit-fields
297 11.4.11 Nested class declarations
298 11.4.12 Nested type names
11.5 Unions
11.5.1 General
300 11.5.2 Anonymous unions
301 11.6 Local class declarations
11.7 Derived classes
11.7.1 General
303 11.7.2 Multiple base classes
304 11.7.3 Virtual functions
308 11.7.4 Abstract classes
309 11.8 Member name lookup
312 11.9 Member access control
11.9.1 General
314 11.9.2 Access specifiers
315 11.9.3 Accessibility of base classes and base class members
317 11.9.4 Friends
320 11.9.5 Protected member access
11.9.6 Access to virtual functions
321 11.9.7 Multiple access
11.9.8 Nested classes
322 11.10 Initialization
11.10.1 General
11.10.2 Explicit initialization
323 11.10.3 Initializing bases and members
327 11.10.4 Initialization by inherited constructor
328 11.10.5 Construction and destruction
331 11.10.6 Copy/move elision
333 11.11 Comparisons
11.11.1 Defaulted comparison operator functions
334 11.11.2 Equality operator
335 11.11.3 Three-way comparison
11.11.4 Secondary comparison operators
336 11.12 Free store
338 12 Overloading
12.1 Preamble
12.2 Overloadable declarations
340 12.3 Declaration matching
341 12.4 Overload resolution
12.4.1 General
342 12.4.2 Candidate functions and argument lists
12.4.2.1 General
343 12.4.2.2 Function call syntax
12.4.2.2.1 General
344 12.4.2.2.2 Call to named function
12.4.2.2.3 Call to object of class type
345 12.4.2.3 Operators in expressions
348 12.4.2.4 Initialization by constructor
12.4.2.5 Copy-initialization of class by user-defined conversion
12.4.2.6 Initialization by conversion function
349 12.4.2.7 Initialization by conversion function for direct reference binding
12.4.2.8 Initialization by list-initialization
12.4.2.9 Class template argument deduction
353 12.4.3 Viable functions
12.4.4 Best viable function
12.4.4.1 General
356 12.4.4.2 Implicit conversion sequences
12.4.4.2.1 General
358 12.4.4.2.2 Standard conversion sequences
12.4.4.2.3 User-defined conversion sequences
359 12.4.4.2.4 Ellipsis conversion sequences
12.4.4.2.5 Reference binding
12.4.4.2.6 List-initialization sequence
362 12.4.4.3 Ranking implicit conversion sequences
365 12.5 Address of overloaded function
366 12.6 Overloaded operators
12.6.1 General
367 12.6.2 Unary operators
368 12.6.3 Binary operators
12.6.3.1 General
12.6.3.2 Simple assignment
12.6.4 Function call
369 12.6.5 Subscripting
12.6.6 Class member access
12.6.7 Increment and decrement
370 12.7 Built-in operators
372 12.8 User-defined literals
374 13 Templates
13.1 Preamble
375 13.2 Template parameters
379 13.3 Names of template specializations
382 13.4 Template arguments
13.4.1 General
384 13.4.2 Template type arguments
13.4.3 Template non-type arguments
386 13.4.4 Template template arguments
387 13.5 Template constraints
13.5.1 General
388 13.5.2 Constraints
13.5.2.1 General
13.5.2.2 Logical operations
389 13.5.2.3 Atomic constraints
390 13.5.3 Constrained declarations
391 13.5.4 Constraint normalization
392 13.5.5 Partial ordering by constraints
393 13.6 Type equivalence
394 13.7 Template declarations
13.7.1 General
13.7.2 Class templates
13.7.2.1 General
395 13.7.2.2 Member functions of class templates
396 13.7.2.3 Deduction guides
13.7.2.4 Member classes of class templates
13.7.2.5 Static data members of class templates
397 13.7.2.6 Enumeration members of class templates
13.7.3 Member templates
399 13.7.4 Variadic templates
402 13.7.5 Friends
404 13.7.6 Class template partial specializations
13.7.6.1 General
405 13.7.6.2 Matching of class template partial specializations
406 13.7.6.3 Partial ordering of class template specializations
407 13.7.6.4 Members of class template specializations
408 13.7.7 Function templates
13.7.7.1 General
13.7.7.2 Function template overloading
410 13.7.7.3 Partial ordering of function templates
413 13.7.8 Alias templates
414 13.7.9 Concept definitions
415 13.8 Name resolution
13.8.1 General
419 13.8.2 Locally declared names
421 13.8.3 Dependent names
13.8.3.1 General
422 13.8.3.2 Dependent types
425 13.8.3.3 Type-dependent expressions
426 13.8.3.4 Value-dependent expressions
427 13.8.3.5 Dependent template arguments
13.8.4 Non-dependent names
428 13.8.5 Dependent name resolution
13.8.5.1 Point of instantiation
13.8.5.2 Candidate functions
431 13.8.6 Friend names declared within a class template
13.9 Template instantiation and specialization
13.9.1 General
433 13.9.2 Implicit instantiation
437 13.9.3 Explicit instantiation
440 13.9.4 Explicit specialization
445 13.10 Function template specializations
13.10.1 General
13.10.2 Explicit template argument specification
447 13.10.3 Template argument deduction
13.10.3.1 General
451 13.10.3.2 Deducing template arguments from a function call
454 13.10.3.3 Deducing template arguments taking the address of a function template
13.10.3.4 Deducing conversion function template arguments
455 13.10.3.5 Deducing template arguments during partial ordering
456 13.10.3.6 Deducing template arguments from a type
462 13.10.3.7 Deducing template arguments from a function declaration
463 13.10.4 Overload resolution
465 14 Exception handling
14.1 Preamble
466 14.2 Throwing an exception
467 14.3 Constructors and destructors
468 14.4 Handling an exception
470 14.5 Exception specifications
472 14.6 Special functions
14.6.1 General
14.6.2 The std::terminate function
473 14.6.3 The std::uncaught_exceptions function
474 15 Preprocessing directives
15.1 Preamble
476 15.2 Conditional inclusion
478 15.3 Source file inclusion
479 15.4 Module directive
480 15.5 Header unit importation
481 15.6 Macro replacement
15.6.1 General
482 15.6.2 Argument substitution
484 15.6.3 The # operator
15.6.4 The ## operator
485 15.6.5 Rescanning and further replacement
486 15.6.6 Scope of macro definitions
15.7 Line control
487 15.8 Error directive
15.9 Pragma directive
15.10 Null directive
15.11 Predefined macro names
489 15.12 Pragma operator
491 16 Library introduction
16.1 General
492 16.2 The C standard library
16.3 Method of description
16.3.1 General
16.3.2 Structure of each clause
16.3.2.1 Elements
16.3.2.2 Summary
16.3.2.3 Requirements
493 16.3.2.4 Detailed specifications
494 16.3.2.5 C library
16.3.3 Other conventions
16.3.3.1 General
495 16.3.3.2 Exposition-only functions
16.3.3.3 Type descriptions
16.3.3.3.1 General
16.3.3.3.2 Exposition-only types
16.3.3.3.3 Enumerated types
496 16.3.3.3.4 Bitmask types
497 16.3.3.3.5 Character sequences
16.3.3.3.5.1 General
16.3.3.3.5.2 Byte strings
16.3.3.3.5.3 Multibyte strings
16.3.3.3.6 Customization Point Object types
498 16.3.3.4 Functions within classes
16.3.3.5 Private members
16.4 Library-wide requirements
16.4.1 General
16.4.2 Library contents and organization
16.4.2.1 General
16.4.2.2 Library contents
16.4.2.3 Headers
500 16.4.2.4 Freestanding implementations
16.4.3 Using the library
16.4.3.1 Overview
501 16.4.3.2 Headers
16.4.3.3 Linkage
16.4.4 Requirements on types and expressions
16.4.4.1 General
502 16.4.4.2 Template argument requirements
16.4.4.3 Swappable requirements
504 16.4.4.4 Cpp17NullablePointer requirements
16.4.4.5 Cpp17Hash requirements
505 16.4.4.6 Cpp17Allocator requirements
16.4.4.6.1 General
510 16.4.4.6.2 Allocator completeness requirements
16.4.5 Constraints on programs
16.4.5.1 Overview
16.4.5.2 Namespace use
16.4.5.2.1 Namespace std
511 16.4.5.2.2 Namespace posix
16.4.5.2.3 Namespaces for future standardization
16.4.5.3 Reserved names
16.4.5.3.1 General
16.4.5.3.2 Zombie names
513 16.4.5.3.3 Macro names
16.4.5.3.4 External linkage
16.4.5.3.5 Types
16.4.5.3.6 User-defined literal suffixes
16.4.5.4 Headers
16.4.5.5 Derived classes
16.4.5.6 Replacement functions
514 16.4.5.7 Handler functions
16.4.5.8 Other functions
16.4.5.9 Function arguments
515 16.4.5.10 Library object access
16.4.5.11 Semantic requirements
16.4.6 Conforming implementations
16.4.6.1 Overview
16.4.6.2 Headers
16.4.6.3 Restrictions on macro definitions
516 16.4.6.4 Non-member functions
16.4.6.5 Member functions
16.4.6.6 Friend functions
16.4.6.7 Constexpr functions and constructors
16.4.6.8 Requirements for stable algorithms
16.4.6.9 Reentrancy
517 16.4.6.10 Data race avoidance
16.4.6.11 Protection within classes
16.4.6.12 Derived classes
16.4.6.13 Restrictions on exception handling
518 16.4.6.14 Restrictions on storage of pointers
16.4.6.15 Value of error codes
16.4.6.16 Moved-from state of library types
519 17 Language support library
17.1 General
17.2 Common definitions
17.2.1 Header synopsis
520 17.2.2 Header synopsis
521 17.2.3 Null pointers
17.2.4 Sizes, alignments, and offsets
522 17.2.5 byte type operations
523 17.3 Implementation properties
17.3.1 General
17.3.2 Header synopsis
525 17.3.3 Header synopsis
526 17.3.4 Floating-point type properties
17.3.4.1 Type float_round_style
17.3.4.2 Type float_denorm_style
17.3.5 Class template numeric_limits
17.3.5.1 General
527 17.3.5.2 numeric_limits members
531 17.3.5.3 numeric_limits specializations
532 17.3.6 Header synopsis
533 17.3.7 Header synopsis
17.4 Integer types
17.4.1 General
17.4.2 Header synopsis
534 17.5 Startup and termination
536 17.6 Dynamic memory management
17.6.1 General
17.6.2 Header synopsis
537 17.6.3 Storage allocation and deallocation
17.6.3.1 General
17.6.3.2 Single-object forms
539 17.6.3.3 Array forms
540 17.6.3.4 Non-allocating forms
541 17.6.3.5 Data races
17.6.4 Storage allocation errors
17.6.4.1 Class bad_alloc
17.6.4.2 Class bad_array_new_length
17.6.4.3 Type new_handler
17.6.4.4 set_new_handler
542 17.6.4.5 get_new_handler
17.6.5 Pointer optimization barrier
17.6.6 Hardware interference size
543 17.7 Type identification
17.7.1 General
17.7.2 Header synopsis
17.7.3 Class type_info
544 17.7.4 Class bad_cast
17.7.5 Class bad_typeid
17.8 Source location
17.8.1 Header synopsis
17.8.2 Class source_location
17.8.2.1 General
545 17.8.2.2 Creation
546 17.8.2.3 Observers
17.9 Exception handling
17.9.1 General
17.9.2 Header synopsis
547 17.9.3 Class exception
17.9.4 Class bad_exception
548 17.9.5 Abnormal termination
17.9.5.1 Type terminate_handler
17.9.5.2 set_terminate
17.9.5.3 get_terminate
17.9.5.4 terminate
17.9.6 uncaught_exceptions
17.9.7 Exception propagation
549 17.9.8 nested_exception
550 17.10 Initializer lists
17.10.1 General
17.10.2 Header synopsis
551 17.10.3 Initializer list constructors
17.10.4 Initializer list access
17.10.5 Initializer list range access
17.11 Comparisons
17.11.1 Header synopsis
552 17.11.2 Comparison category types
17.11.2.1 Preamble
17.11.2.2 Class partial_ordering
553 17.11.2.3 Class weak_ordering
554 17.11.2.4 Class strong_ordering
556 17.11.3 Class template common_comparison_category
17.11.4 Concept three_way_comparable
557 17.11.5 Result of three-way comparison
17.11.6 Comparison algorithms
559 17.12 Coroutines
17.12.1 General
17.12.2 Header synopsis
560 17.12.3 Coroutine traits
17.12.3.1 General
17.12.3.2 Class template coroutine_traits
17.12.4 Class template coroutine_handle
17.12.4.1 General
561 17.12.4.2 Construct/reset
17.12.4.3 Export/import
17.12.4.4 Observers
17.12.4.5 Resumption
17.12.4.6 Promise access
562 17.12.4.7 Comparison operators
17.12.4.8 Hash support
17.12.5 No-op coroutines
17.12.5.1 Class noop_coroutine_promise
17.12.5.2 Class coroutine_handle
17.12.5.2.1 Observers
17.12.5.2.2 Resumption
563 17.12.5.2.3 Promise access
17.12.5.2.4 Address
17.12.5.3 Function noop_coroutine
17.12.6 Trivial awaitables
17.13 Other runtime support
17.13.1 General
17.13.2 Header synopsis
564 17.13.3 Header synopsis
17.13.4 Header synopsis
17.13.5 Signal handlers
566 18 Concepts library
18.1 General
18.2 Equality preservation
567 18.3 Header synopsis
569 18.4 Language-related concepts
18.4.1 General
18.4.2 Concept same_as
18.4.3 Concept derived_from
570 18.4.4 Concept convertible_to
18.4.5 Concept common_reference_with
18.4.6 Concept common_with
571 18.4.7 Arithmetic concepts
18.4.8 Concept assignable_from
572 18.4.9 Concept swappable
573 18.4.10 Concept destructible
18.4.11 Concept constructible_from
18.4.12 Concept default_initializable
574 18.4.13 Concept move_constructible
18.4.14 Concept copy_constructible
18.5 Comparison concepts
18.5.1 General
18.5.2 Boolean testability
575 18.5.3 Concept equality_comparable
576 18.5.4 Concept totally_ordered
577 18.6 Object concepts
18.7 Callable concepts
18.7.1 General
18.7.2 Concept invocable
18.7.3 Concept regular_invocable
18.7.4 Concept predicate
18.7.5 Concept relation
578 18.7.6 Concept equivalence_relation
18.7.7 Concept strict_weak_order
579 19 Diagnostics library
19.1 General
19.2 Exception classes
19.2.1 General
19.2.2 Header synopsis
19.2.3 Class logic_error
580 19.2.4 Class domain_error
19.2.5 Class invalid_argument
19.2.6 Class length_error
19.2.7 Class out_of_range
581 19.2.8 Class runtime_error
19.2.9 Class range_error
19.2.10 Class overflow_error
582 19.2.11 Class underflow_error
19.3 Assertions
19.3.1 General
19.3.2 Header synopsis
19.3.3 The assert macro
19.4 Error numbers
19.4.1 General
19.4.2 Header synopsis
584 19.5 System error support
19.5.1 General
19.5.2 Header synopsis
586 19.5.3 Class error_category
19.5.3.1 Overview
19.5.3.2 Virtual members
587 19.5.3.3 Non-virtual members
19.5.3.4 Program-defined classes derived from error_category
19.5.3.5 Error category objects
588 19.5.4 Class error_code
19.5.4.1 Overview
19.5.4.2 Constructors
19.5.4.3 Modifiers
589 19.5.4.4 Observers
19.5.4.5 Non-member functions
19.5.5 Class error_condition
19.5.5.1 Overview
590 19.5.5.2 Constructors
19.5.5.3 Modifiers
19.5.5.4 Observers
19.5.5.5 Non-member functions
19.5.6 Comparison operator functions
591 19.5.7 System error hash support
19.5.8 Class system_error
19.5.8.1 Overview
19.5.8.2 Members
593 20 General utilities library
20.1 General
20.2 Utility components
20.2.1 Header synopsis
595 20.2.2 swap
596 20.2.3 exchange
20.2.4 Forward/move helpers
597 20.2.5 Function template as_const
20.2.6 Function template declval
20.2.7 Integer comparison functions
598 20.3 Compile-time integer sequences
20.3.1 In general
20.3.2 Class template integer_sequence
20.3.3 Alias template make_integer_sequence
599 20.4 Pairs
20.4.1 In general
20.4.2 Class template pair
601 20.4.3 Specialized algorithms
602 20.4.4 Tuple-like access to pair
603 20.4.5 Piecewise construction
20.5 Tuples
20.5.1 In general
20.5.2 Header synopsis
604 20.5.3 Class template tuple
606 20.5.3.1 Construction
608 20.5.3.2 Assignment
609 20.5.3.3 swap
20.5.4 Tuple creation functions
610 20.5.5 Calling a function with a tuple of arguments
20.5.6 Tuple helper classes
611 20.5.7 Element access
612 20.5.8 Relational operators
20.5.9 Tuple traits
20.5.10 Tuple specialized algorithms
613 20.6 Optional objects
20.6.1 In general
20.6.2 Header synopsis
614 20.6.3 Class template optional
20.6.3.1 General
615 20.6.3.2 Constructors
617 20.6.3.3 Destructor
20.6.3.4 Assignment
620 20.6.3.5 Swap
621 20.6.3.6 Observers
622 20.6.3.7 Modifiers
20.6.4 No-value state indicator
20.6.5 Class bad_optional_access
20.6.6 Relational operators
623 20.6.7 Comparison with nullopt
20.6.8 Comparison with T
624 20.6.9 Specialized algorithms
625 20.6.10 Hash support
20.7 Variants
20.7.1 In general
20.7.2 Header synopsis
627 20.7.3 Class template variant
20.7.3.1 General
628 20.7.3.2 Constructors
630 20.7.3.3 Destructor
20.7.3.4 Assignment
631 20.7.3.5 Modifiers
632 20.7.3.6 Value status
20.7.3.7 Swap
633 20.7.4 variant helper classes
20.7.5 Value access
634 20.7.6 Relational operators
635 20.7.7 Visitation
20.7.8 Class monostate
20.7.9 monostate relational operators
20.7.10 Specialized algorithms
20.7.11 Class bad_variant_access
636 20.7.12 Hash support
20.8 Storage for any type
20.8.1 General
20.8.2 Header synopsis
20.8.3 Class bad_any_cast
637 20.8.4 Class any
20.8.4.1 General
20.8.4.2 Construction and destruction
638 20.8.4.3 Assignment
639 20.8.4.4 Modifiers
640 20.8.4.5 Observers
20.8.5 Non-member functions
641 20.9 Bitsets
20.9.1 Header synopsis
20.9.2 Class template bitset
20.9.2.1 General
643 20.9.2.2 Constructors
20.9.2.3 Members
646 20.9.3 bitset hash support
20.9.4 bitset operators
20.10 Memory
20.10.1 In general
647 20.10.2 Header synopsis
654 20.10.3 Pointer traits
20.10.3.1 General
20.10.3.2 Member types
655 20.10.3.3 Member functions
20.10.3.4 Optional members
20.10.4 Pointer conversion
20.10.5 Pointer safety
656 20.10.6 Pointer alignment
20.10.7 Allocator argument tag
657 20.10.8 uses_allocator
20.10.8.1 uses_allocator trait
20.10.8.2 Uses-allocator construction
659 20.10.9 Allocator traits
20.10.9.1 General
20.10.9.2 Member types
660 20.10.9.3 Static member functions
661 20.10.10 The default allocator
20.10.10.1 General
20.10.10.2 Members
662 20.10.10.3 Operators
20.10.11 addressof
20.10.12 C library memory allocation
20.11 Smart pointers
20.11.1 Class template unique_ptr
20.11.1.1 General
663 20.11.1.2 Default deleters
20.11.1.2.1 In general
20.11.1.2.2 default_delete
20.11.1.2.3 default_delete
20.11.1.3 unique_ptr for single objects
20.11.1.3.1 General
664 20.11.1.3.2 Constructors
666 20.11.1.3.3 Destructor
20.11.1.3.4 Assignment
20.11.1.3.5 Observers
667 20.11.1.3.6 Modifiers
20.11.1.4 unique_ptr for array objects with a runtime length
20.11.1.4.1 General
668 20.11.1.4.2 Constructors
669 20.11.1.4.3 Assignment
20.11.1.4.4 Observers
20.11.1.4.5 Modifiers
20.11.1.5 Creation
670 20.11.1.6 Specialized algorithms
671 20.11.1.7 I/O
20.11.2 Class bad_weak_ptr
672 20.11.3 Class template shared_ptr
20.11.3.1 General
673 20.11.3.2 Constructors
675 20.11.3.3 Destructor
20.11.3.4 Assignment
20.11.3.5 Modifiers
676 20.11.3.6 Observers
677 20.11.3.7 Creation
680 20.11.3.8 Comparison
20.11.3.9 Specialized algorithms
20.11.3.10 Casts
681 20.11.3.11 get_deleter
20.11.3.12 I/O
20.11.4 Class template weak_ptr
20.11.4.1 General
682 20.11.4.2 Constructors
683 20.11.4.3 Destructor
20.11.4.4 Assignment
20.11.4.5 Modifiers
20.11.4.6 Observers
20.11.4.7 Specialized algorithms
684 20.11.5 Class template owner_less
20.11.6 Class template enable_shared_from_this
685 20.11.7 Smart pointer hash support
20.12 Memory resources
20.12.1 Header synopsis
686 20.12.2 Class memory_resource
20.12.2.1 General
20.12.2.2 Public member functions
20.12.2.3 Private virtual member functions
687 20.12.2.4 Equality
20.12.3 Class template polymorphic_allocator
20.12.3.1 General
688 20.12.3.2 Constructors
20.12.3.3 Member functions
689 20.12.3.4 Equality
20.12.4 Access to program-wide memory_resource objects
690 20.12.5 Pool resource classes
20.12.5.1 Classes synchronized_pool_resource and unsynchronized_pool_resource
691 20.12.5.2 pool_options data members
692 20.12.5.3 Constructors and destructors
20.12.5.4 Members
693 20.12.6 Class monotonic_buffer_resource
20.12.6.1 General
20.12.6.2 Constructors and destructor
694 20.12.6.3 Members
20.13 Class template scoped_allocator_adaptor
20.13.1 Header synopsis
696 20.13.2 Member types
20.13.3 Constructors
697 20.13.4 Members
698 20.13.5 Operators
20.14 Function objects
20.14.1 General
20.14.2 Header synopsis
700 20.14.3 Definitions
701 20.14.4 Requirements
702 20.14.5 Function template invoke
20.14.6 Class template reference_wrapper
20.14.6.1 General
20.14.6.2 Constructors and destructor
703 20.14.6.3 Assignment
20.14.6.4 Access
20.14.6.5 Invocation
20.14.6.6 Helper functions
20.14.7 Arithmetic operations
20.14.7.1 General
20.14.7.2 Class template plus
704 20.14.7.3 Class template minus
20.14.7.4 Class template multiplies
20.14.7.5 Class template divides
20.14.7.6 Class template modulus
705 20.14.7.7 Class template negate
20.14.8 Comparisons
20.14.8.1 General
20.14.8.2 Class template equal_to
706 20.14.8.3 Class template not_equal_to
20.14.8.4 Class template greater
20.14.8.5 Class template less
707 20.14.8.6 Class template greater_equal
20.14.8.7 Class template less_equal
20.14.8.8 Class compare_three_way
708 20.14.9 Concept-constrained comparisons
709 20.14.10 Logical operations
20.14.10.1 General
20.14.10.2 Class template logical_and
710 20.14.10.3 Class template logical_or
20.14.10.4 Class template logical_not
20.14.11 Bitwise operations
20.14.11.1 General
20.14.11.2 Class template bit_and
711 20.14.11.3 Class template bit_or
20.14.11.4 Class template bit_xor
20.14.11.5 Class template bit_not
712 20.14.12 Class identity
20.14.13 Function template not_fn
20.14.14 Function template bind_front
713 20.14.15 Function object binders
20.14.15.1 General
20.14.15.2 Class template is_bind_expression
20.14.15.3 Class template is_placeholder
20.14.15.4 Function template bind
714 20.14.15.5 Placeholders
20.14.16 Function template mem_fn
20.14.17 Polymorphic function wrappers
20.14.17.1 General
715 20.14.17.2 Class bad_function_call
20.14.17.3 Class template function
20.14.17.3.1 General
716 20.14.17.3.2 Constructors and destructor
717 20.14.17.3.3 Modifiers
20.14.17.3.4 Capacity
20.14.17.3.5 Invocation
20.14.17.3.6 Target access
718 20.14.17.3.7 Null pointer comparison operator functions
20.14.17.3.8 Specialized algorithms
20.14.18 Searchers
20.14.18.1 General
20.14.18.2 Class template default_searcher
719 20.14.18.3 Class template boyer_moore_searcher
720 20.14.18.4 Class template boyer_moore_horspool_searcher
721 20.14.19 Class template hash
20.15 Metaprogramming and type traits
20.15.1 General
20.15.2 Requirements
722 20.15.3 Header synopsis
728 20.15.4 Helper classes
729 20.15.5 Unary type traits
20.15.5.1 General
20.15.5.2 Primary type categories
730 20.15.5.3 Composite type traits
20.15.5.4 Type properties
736 20.15.6 Type property queries
737 20.15.7 Relationships between types
739 20.15.8 Transformations between types
20.15.8.1 General
20.15.8.2 Const-volatile modifications
20.15.8.3 Reference modifications
20.15.8.4 Sign modifications
740 20.15.8.5 Array modifications
20.15.8.6 Pointer modifications
741 20.15.8.7 Other transformations
744 20.15.9 Logical operator traits
745 20.15.10 Member relationships
746 20.15.11 Constant evaluation context
20.16 Compile-time rational arithmetic
20.16.1 In general
20.16.2 Header synopsis
747 20.16.3 Class template ratio
20.16.4 Arithmetic on ratios
748 20.16.5 Comparison of ratios
20.16.6 SI types for ratio
20.17 Class type_index
20.17.1 Header synopsis
749 20.17.2 type_index overview
20.17.3 type_index members
750 20.17.4 Hash support
20.18 Execution policies
20.18.1 In general
20.18.2 Header synopsis
751 20.18.3 Execution policy type trait
20.18.4 Sequenced execution policy
20.18.5 Parallel execution policy
20.18.6 Parallel and unsequenced execution policy
20.18.7 Unsequenced execution policy
20.18.8 Execution policy objects
752 20.19 Primitive numeric conversions
20.19.1 Header synopsis
753 20.19.2 Primitive numeric output conversion
754 20.19.3 Primitive numeric input conversion
20.20 Formatting
20.20.1 Header synopsis
756 20.20.2 Format string
20.20.2.1 In general
757 20.20.2.2 Standard format specifiers
761 20.20.3 Error reporting
20.20.4 Formatting functions
764 20.20.5 Formatter
20.20.5.1 Formatter requirements
20.20.5.2 Formatter specializations
766 20.20.5.3 Class template basic_format_parse_context
767 20.20.5.4 Class template basic_format_context
768 20.20.6 Arguments
20.20.6.1 Class template basic_format_arg
771 20.20.6.2 Class template format-arg-store
20.20.6.3 Class template basic_format_args
772 20.20.7 Class format_error
773 21 Strings library
21.1 General
21.2 Character traits
21.2.1 General
21.2.2 Character traits requirements
775 21.2.3 Traits typedefs
21.2.4 char_traits specializations
21.2.4.1 General
21.2.4.2 struct char_traits
776 21.2.4.3 struct char_traits
21.2.4.4 struct char_traits
777 21.2.4.5 struct char_traits
21.2.4.6 struct char_traits
778 21.3 String classes
21.3.1 General
21.3.2 Header synopsis
781 21.3.3 Class template basic_string
21.3.3.1 General
786 21.3.3.2 General requirements
21.3.3.3 Constructors and assignment operators
789 21.3.3.4 Iterator support
21.3.3.5 Capacity
790 21.3.3.6 Element access
21.3.3.7 Modifiers
21.3.3.7.1 basic_string::operator+=
791 21.3.3.7.2 basic_string::append
792 21.3.3.7.3 basic_string::assign
793 21.3.3.7.4 basic_string::insert
794 21.3.3.7.5 basic_string::erase
21.3.3.7.6 basic_string::replace
796 21.3.3.7.7 basic_string::copy
21.3.3.7.8 basic_string::swap
21.3.3.8 String operations
21.3.3.8.1 Accessors
797 21.3.3.8.2 Searching
798 21.3.3.8.3 basic_string::substr
21.3.3.8.4 basic_string::compare
799 21.3.3.8.5 basic_string::starts_with
21.3.3.8.6 basic_string::ends_with
21.3.4 Non-member functions
21.3.4.1 operator+
800 21.3.4.2 Non-member comparison operator functions
801 21.3.4.3 swap
21.3.4.4 Inserters and extractors
802 21.3.4.5 Erasure
21.3.5 Numeric conversions
804 21.3.6 Hash support
21.3.7 Suffix for basic_string literals
21.4 String view classes
21.4.1 General
805 21.4.2 Header synopsis
21.4.3 Class template basic_string_view
21.4.3.1 General
807 21.4.3.2 Construction and assignment
808 21.4.3.3 Iterator support
21.4.3.4 Capacity
809 21.4.3.5 Element access
21.4.3.6 Modifiers
21.4.3.7 String operations
811 21.4.3.8 Searching
812 21.4.4 Deduction guide
21.4.5 Non-member comparison functions
813 21.4.6 Inserters and extractors
21.4.7 Hash support
21.4.8 Suffix for basic_string_view literals
814 21.5 Null-terminated sequence utilities
21.5.1 Header synopsis
21.5.2 Header synopsis
21.5.3 Header synopsis
815 21.5.4 Header synopsis
817 21.5.5 Header synopsis
21.5.6 Multibyte / wide string and character conversion functions
819 22 Containers library
22.1 General
22.2 Container requirements
22.2.1 General container requirements
825 22.2.2 Container data races
22.2.3 Sequence containers
829 22.2.4 Node handles
22.2.4.1 Overview
831 22.2.4.2 Constructors, copy, and assignment
22.2.4.3 Destructor
22.2.4.4 Observers
832 22.2.4.5 Modifiers
22.2.5 Insert return type
22.2.6 Associative containers
22.2.6.1 General
841 22.2.6.2 Exception safety guarantees
22.2.7 Unordered associative containers
22.2.7.1 General
853 22.2.7.2 Exception safety guarantees
22.3 Sequence containers
22.3.1 In general
22.3.2 Header synopsis
854 22.3.3 Header synopsis
22.3.4 Header synopsis
855 22.3.5 Header synopsis
22.3.6 Header synopsis
856 22.3.7 Class template array
22.3.7.1 Overview
857 22.3.7.2 Constructors, copy, and assignment
22.3.7.3 Member functions
22.3.7.4 Specialized algorithms
858 22.3.7.5 Zero-sized arrays
22.3.7.6 Array creation functions
22.3.7.7 Tuple interface
22.3.8 Class template deque
22.3.8.1 Overview
860 22.3.8.2 Constructors, copy, and assignment
861 22.3.8.3 Capacity
22.3.8.4 Modifiers
862 22.3.8.5 Erasure
22.3.9 Class template forward_list
22.3.9.1 Overview
864 22.3.9.2 Constructors, copy, and assignment
865 22.3.9.3 Iterators
22.3.9.4 Element access
22.3.9.5 Modifiers
867 22.3.9.6 Operations
868 22.3.9.7 Erasure
22.3.10 Class template list
22.3.10.1 Overview
871 22.3.10.2 Constructors, copy, and assignment
22.3.10.3 Capacity
22.3.10.4 Modifiers
872 22.3.10.5 Operations
874 22.3.10.6 Erasure
22.3.11 Class template vector
22.3.11.1 Overview
876 22.3.11.2 Constructors
877 22.3.11.3 Capacity
878 22.3.11.4 Data
22.3.11.5 Modifiers
22.3.11.6 Erasure
879 22.3.12 Class vector
881 22.4 Associative containers
22.4.1 In general
22.4.2 Header

synopsis
882 22.4.3 Header synopsis
883 22.4.4 Class template map
22.4.4.1 Overview
886 22.4.4.2 Constructors, copy, and assignment
887 22.4.4.3 Element access
22.4.4.4 Modifiers
888 22.4.4.5 Erasure
22.4.5 Class template multimap
22.4.5.1 Overview
891 22.4.5.2 Constructors
892 22.4.5.3 Modifiers
22.4.5.4 Erasure
22.4.6 Class template set
22.4.6.1 Overview
895 22.4.6.2 Constructors, copy, and assignment
22.4.6.3 Erasure
22.4.7 Class template multiset
22.4.7.1 Overview
898 22.4.7.2 Constructors
22.4.7.3 Erasure
899 22.5 Unordered associative containers
22.5.1 In general
22.5.2 Header synopsis
900 22.5.3 Header synopsis
901 22.5.4 Class template unordered_map
22.5.4.1 Overview
905 22.5.4.2 Constructors
22.5.4.3 Element access
22.5.4.4 Modifiers
907 22.5.4.5 Erasure
22.5.5 Class template unordered_multimap
22.5.5.1 Overview
911 22.5.5.2 Constructors
22.5.5.3 Modifiers
22.5.5.4 Erasure
912 22.5.6 Class template unordered_set
22.5.6.1 Overview
915 22.5.6.2 Constructors
916 22.5.6.3 Erasure
22.5.7 Class template unordered_multiset
22.5.7.1 Overview
920 22.5.7.2 Constructors
22.5.7.3 Erasure
22.6 Container adaptors
22.6.1 In general
921 22.6.2 Header synopsis
22.6.3 Header synopsis
922 22.6.4 Class template queue
22.6.4.1 Definition
923 22.6.4.2 Constructors
22.6.4.3 Constructors with allocators
22.6.4.4 Operators
924 22.6.4.5 Specialized algorithms
22.6.5 Class template priority_queue
22.6.5.1 Overview
925 22.6.5.2 Constructors
22.6.5.3 Constructors with allocators
926 22.6.5.4 Members
22.6.5.5 Specialized algorithms
22.6.6 Class template stack
22.6.6.1 General
22.6.6.2 Definition
927 22.6.6.3 Constructors
22.6.6.4 Constructors with allocators
928 22.6.6.5 Operators
22.6.6.6 Specialized algorithms
22.7 Views
22.7.1 General
22.7.2 Header synopsis
929 22.7.3 Class template span
22.7.3.1 Overview
930 22.7.3.2 Constructors, copy, and assignment
932 22.7.3.3 Deduction guides
22.7.3.4 Subviews
933 22.7.3.5 Observers
22.7.3.6 Element access
934 22.7.3.7 Iterator support
22.7.3.8 Views of object representation
935 23 Iterators library
23.1 General
23.2 Header synopsis
942 23.3 Iterator requirements
23.3.1 In general
943 23.3.2 Associated types
23.3.2.1 Incrementable traits
944 23.3.2.2 Indirectly readable traits
945 23.3.2.3 Iterator traits
947 23.3.3 Customization points
23.3.3.1 ranges::iter_move
23.3.3.2 ranges::iter_swap
948 23.3.4 Iterator concepts
23.3.4.1 General
949 23.3.4.2 Concept indirectly_readable
23.3.4.3 Concept indirectly_writable
23.3.4.4 Concept weakly_incrementable
951 23.3.4.5 Concept incrementable
23.3.4.6 Concept input_or_output_iterator
23.3.4.7 Concept sentinel_for
952 23.3.4.8 Concept sized_sentinel_for
23.3.4.9 Concept input_iterator
23.3.4.10 Concept output_iterator
953 23.3.4.11 Concept forward_iterator
23.3.4.12 Concept bidirectional_iterator
954 23.3.4.13 Concept random_access_iterator
23.3.4.14 Concept contiguous_iterator
955 23.3.5 C++17 iterator requirements
23.3.5.1 General
23.3.5.2 Cpp17Iterator
23.3.5.3 Input iterators
956 23.3.5.4 Output iterators
957 23.3.5.5 Forward iterators
23.3.5.6 Bidirectional iterators
23.3.5.7 Random access iterators
959 23.3.6 Indirect callable requirements
23.3.6.1 General
23.3.6.2 Indirect callables
960 23.3.6.3 Class template projected
23.3.7 Common algorithm requirements
23.3.7.1 General
23.3.7.2 Concept indirectly_movable
961 23.3.7.3 Concept indirectly_copyable
23.3.7.4 Concept indirectly_swappable
23.3.7.5 Concept indirectly_comparable
23.3.7.6 Concept permutable
962 23.3.7.7 Concept mergeable
23.3.7.8 Concept sortable
23.4 Iterator primitives
23.4.1 General
23.4.2 Standard iterator tags
963 23.4.3 Iterator operations
23.4.4 Range iterator operations
23.4.4.1 General
964 23.4.4.2 ranges::advance
965 23.4.4.3 ranges::distance
23.4.4.4 ranges::next
23.4.4.5 ranges::prev
23.5 Iterator adaptors
23.5.1 Reverse iterators
23.5.1.1 General
966 23.5.1.2 Class template reverse_iterator
23.5.1.3 Requirements
967 23.5.1.4 Construction and assignment
23.5.1.5 Conversion
23.5.1.6 Element access
23.5.1.7 Navigation
968 23.5.1.8 Comparisons
969 23.5.1.9 Non-member functions
970 23.5.2 Insert iterators
23.5.2.1 General
23.5.2.2 Class template back_insert_iterator
23.5.2.2.1 Operations
971 23.5.2.2.2 back_inserter
23.5.2.3 Class template front_insert_iterator
23.5.2.3.1 Operations
972 23.5.2.3.2 front_inserter
23.5.2.4 Class template insert_iterator
23.5.2.4.1 Operations
973 23.5.2.4.2 inserter
23.5.3 Move iterators and sentinels
23.5.3.1 General
23.5.3.2 Class template move_iterator
974 23.5.3.3 Requirements
23.5.3.4 Construction and assignment
23.5.3.5 Conversion
975 23.5.3.6 Element access
23.5.3.7 Navigation
23.5.3.8 Comparisons
976 23.5.3.9 Non-member functions
977 23.5.3.10 Class template move_sentinel
23.5.3.11 Operations
978 23.5.4 Common iterators
23.5.4.1 Class template common_iterator
979 23.5.4.2 Associated types
23.5.4.3 Constructors and conversions
980 23.5.4.4 Accessors
23.5.4.5 Navigation
981 23.5.4.6 Comparisons
23.5.4.7 Customizations
23.5.5 Default sentinel
23.5.6 Counted iterators
23.5.6.1 Class template counted_iterator
983 23.5.6.2 Constructors and conversions
23.5.6.3 Accessors
984 23.5.6.4 Element access
23.5.6.5 Navigation
985 23.5.6.6 Comparisons
986 23.5.6.7 Customizations
23.5.7 Unreachable sentinel
23.6 Stream iterators
23.6.1 General
23.6.2 Class template istream_iterator
23.6.2.1 General
987 23.6.2.2 Constructors and destructor
23.6.2.3 Operations
988 23.6.3 Class template ostream_iterator
23.6.3.1 General
23.6.3.2 Constructors and destructor
989 23.6.3.3 Operations
23.6.4 Class template istreambuf_iterator
23.6.4.1 General
990 23.6.4.2 Class istreambuf_iterator::proxy
23.6.4.3 Constructors
23.6.4.4 Operations
991 23.6.5 Class template ostreambuf_iterator
23.6.5.1 General
23.6.5.2 Constructors
23.6.5.3 Operations
992 23.7 Range access
994 24 Ranges library
24.1 General
24.2 Header synopsis
999 24.3 Range access
24.3.1 General
24.3.2 ranges::begin
24.3.3 ranges::end
1000 24.3.4 ranges::cbegin
24.3.5 ranges::cend
24.3.6 ranges::rbegin
24.3.7 ranges::rend
1001 24.3.8 ranges::crbegin
24.3.9 ranges::crend
24.3.10 ranges::size
1002 24.3.11 ranges::ssize
24.3.12 ranges::empty
24.3.13 ranges::data
1003 24.3.14 ranges::cdata
24.4 Range requirements
24.4.1 General
24.4.2 Ranges
1004 24.4.3 Sized ranges
24.4.4 Views
1005 24.4.5 Other range refinements
1006 24.5 Range utilities
24.5.1 General
24.5.2 Helper concepts
24.5.3 View interface
24.5.3.1 General
1007 24.5.3.2 Members
24.5.4 Sub-ranges
24.5.4.1 General
1009 24.5.4.2 Constructors and conversions
1010 24.5.4.3 Accessors
1011 24.5.5 Dangling iterator handling
24.6 Range factories
24.6.1 General
1012 24.6.2 Empty view
24.6.2.1 Overview
24.6.2.2 Class template empty_view
24.6.3 Single view
24.6.3.1 Overview
24.6.3.2 Class template single_view
1013 24.6.4 Iota view
24.6.4.1 Overview
24.6.4.2 Class template iota_view
1015 24.6.4.3 Class iota_view::iterator
1018 24.6.4.4 Class iota_view::sentinel
1019 24.6.5 Istream view
24.6.5.1 Overview
24.6.5.2 Class template basic_istream_view
1020 24.6.5.3 Class template basic_istream_view::iterator
1021 24.7 Range adaptors
24.7.1 General
24.7.2 Range adaptor objects
1022 24.7.3 Semiregular wrapper
24.7.4 All view
24.7.4.1 General
24.7.4.2 Class template ref_view
1023 24.7.5 Filter view
24.7.5.1 Overview
24.7.5.2 Class template filter_view
1024 24.7.5.3 Class filter_view::iterator
1026 24.7.5.4 Class filter_view::sentinel
24.7.6 Transform view
24.7.6.1 Overview
1027 24.7.6.2 Class template transform_view
1028 24.7.6.3 Class template transform_view::iterator
1031 24.7.6.4 Class template transform_view::sentinel
1032 24.7.7 Take view
24.7.7.1 Overview
1033 24.7.7.2 Class template take_view
1034 24.7.7.3 Class template take_view::sentinel
1035 24.7.8 Take while view
24.7.8.1 Overview
24.7.8.2 Class template take_while_view
1036 24.7.8.3 Class template take_while_view::sentinel
24.7.9 Drop view
24.7.9.1 Overview
1037 24.7.9.2 Class template drop_view
1038 24.7.10 Drop while view
24.7.10.1 Overview
24.7.10.2 Class template drop_while_view
1039 24.7.11 Join view
24.7.11.1 Overview
24.7.11.2 Class template join_view
1040 24.7.11.3 Class template join_view::iterator
1043 24.7.11.4 Class template join_view::sentinel
1044 24.7.12 Split view
24.7.12.1 Overview
24.7.12.2 Class template split_view
1045 24.7.12.3 Class template split_view::outer-iterator
1047 24.7.12.4 Class split_view::outer-iterator::value_type
24.7.12.5 Class template split_view::inner-iterator
1049 24.7.13 Counted view
24.7.14 Common view
24.7.14.1 Overview
1050 24.7.14.2 Class template common_view
1051 24.7.15 Reverse view
24.7.15.1 Overview
24.7.15.2 Class template reverse_view
1052 24.7.16 Elements view
24.7.16.1 Overview
1053 24.7.16.2 Class template elements_view
1054 24.7.16.3 Class template elements_view::iterator
1057 24.7.16.4 Class template elements_view::sentinel
1058 25 Algorithms library
25.1 General
25.2 Algorithms requirements
1060 25.3 Parallel algorithms
25.3.1 Preamble
1061 25.3.2 Requirements on user-provided function objects
25.3.3 Effect of execution policies on algorithm execution
1062 25.3.4 Parallel algorithm exceptions
1063 25.3.5 ExecutionPolicy algorithm overloads
25.4 Header synopsis
1098 25.5 Algorithm result types
1101 25.6 Non-modifying sequence operations
25.6.1 All of
25.6.2 Any of
25.6.3 None of
1102 25.6.4 For each
1103 25.6.5 Find
1104 25.6.6 Find end
1105 25.6.7 Find first
1106 25.6.8 Adjacent find
1107 25.6.9 Count
1108 25.6.10 Mismatch
1109 25.6.11 Equal
1110 25.6.12 Is permutation
1111 25.6.13 Search
1113 25.7 Mutating sequence operations
25.7.1 Copy
1115 25.7.2 Move
1116 25.7.3 Swap
1117 25.7.4 Transform
1118 25.7.5 Replace
1120 25.7.6 Fill
1121 25.7.7 Generate
1122 25.7.8 Remove
1124 25.7.9 Unique
1125 25.7.10 Reverse
1126 25.7.11 Rotate
1127 25.7.12 Sample
1128 25.7.13 Shuffle
1129 25.7.14 Shift
25.8 Sorting and related operations
25.8.1 General
1130 25.8.2 Sorting
25.8.2.1 sort
25.8.2.2 stable_sort
1131 25.8.2.3 partial_sort
1132 25.8.2.4 partial_sort_copy
1133 25.8.2.5 is_sorted
1134 25.8.3 Nth element
1135 25.8.4 Binary search
25.8.4.1 General
25.8.4.2 lower_bound
25.8.4.3 upper_bound
1136 25.8.4.4 equal_range
25.8.4.5 binary_search
1137 25.8.5 Partitions
1140 25.8.6 Merge
1141 25.8.7 Set operations on sorted structures
25.8.7.1 General
1142 25.8.7.2 includes
25.8.7.3 set_union
1143 25.8.7.4 set_intersection
1144 25.8.7.5 set_difference
1145 25.8.7.6 set_symmetric_difference
1146 25.8.8 Heap operations
25.8.8.1 General
25.8.8.2 push_heap
1147 25.8.8.3 pop_heap
25.8.8.4 make_heap
1148 25.8.8.5 sort_heap
25.8.8.6 is_heap
1149 25.8.9 Minimum and maximum
1153 25.8.10 Bounded value
25.8.11 Lexicographical comparison
1154 25.8.12 Three-way comparison algorithms
1155 25.8.13 Permutation generators
1156 25.9 Header synopsis
1159 25.10 Generalized numeric operations
25.10.1 General
25.10.2 Definitions
25.10.3 Accumulate
1160 25.10.4 Reduce
25.10.5 Inner product
1161 25.10.6 Transform reduce
1162 25.10.7 Partial sum
1163 25.10.8 Exclusive scan
1164 25.10.9 Inclusive scan
1165 25.10.10 Transform exclusive scan
25.10.11 Transform inclusive scan
1167 25.10.12 Adjacent difference
25.10.13 Iota
1168 25.10.14 Greatest common divisor
25.10.15 Least common multiple
25.10.16 Midpoint
25.11 Specialized algorithms
25.11.1 General
1169 25.11.2 Special memory concepts
25.11.3 uninitialized_default_construct
1170 25.11.4 uninitialized_value_construct
1171 25.11.5 uninitialized_copy
1172 25.11.6 uninitialized_move
1173 25.11.7 uninitialized_fill
25.11.8 construct_at
25.11.9 destroy
1174 25.12 C library algorithms
1175 26 Numerics library
26.1 General
26.2 Numeric type requirements
26.3 The floating-point environment
26.3.1 Header synopsis
1176 26.3.2 Threads
26.4 Complex numbers
26.4.1 General
1177 26.4.2 Header synopsis
1178 26.4.3 Class template complex
26.4.4 Specializations
1180 26.4.5 Member functions
26.4.6 Member operators
1181 26.4.7 Non-member operations
1182 26.4.8 Value operations
26.4.9 Transcendentals
1184 26.4.10 Additional overloads
26.4.11 Suffixes for complex number literals
26.5 Bit manipulation
26.5.1 General
26.5.2 Header synopsis
1185 26.5.3 Function template bit_cast
26.5.4 Integral powers of 2
1186 26.5.5 Rotating
26.5.6 Counting
1187 26.5.7 Endian
26.6 Random number generation
26.6.1 General
1188 26.6.2 Header synopsis
1190 26.6.3 Requirements
26.6.3.1 General requirements
26.6.3.2 Seed sequence requirements
1191 26.6.3.3 Uniform random bit generator requirements
1192 26.6.3.4 Random number engine requirements
1193 26.6.3.5 Random number engine adaptor requirements
1194 26.6.3.6 Random number distribution requirements
1196 26.6.4 Random number engine class templates
26.6.4.1 General
1197 26.6.4.2 Class template linear_congruential_engine
1198 26.6.4.3 Class template mersenne_twister_engine
1199 26.6.4.4 Class template subtract_with_carry_engine
1200 26.6.5 Random number engine adaptor class templates
26.6.5.1 In general
26.6.5.2 Class template discard_block_engine
1201 26.6.5.3 Class template independent_bits_engine
1202 26.6.5.4 Class template shuffle_order_engine
1203 26.6.6 Engines and engine adaptors with predefined parameters
1204 26.6.7 Class random_device
1205 26.6.8 Utilities
26.6.8.1 Class seed_seq
1207 26.6.8.2 Function template generate_canonical
26.6.9 Random number distribution class templates
26.6.9.1 In general
26.6.9.2 Uniform distributions
26.6.9.2.1 Class template uniform_int_distribution
1208 26.6.9.2.2 Class template uniform_real_distribution
1209 26.6.9.3 Bernoulli distributions
26.6.9.3.1 Class bernoulli_distribution
26.6.9.3.2 Class template binomial_distribution
1210 26.6.9.3.3 Class template geometric_distribution
1211 26.6.9.3.4 Class template negative_binomial_distribution
26.6.9.4 Poisson distributions
26.6.9.4.1 Class template poisson_distribution
1212 26.6.9.4.2 Class template exponential_distribution
1213 26.6.9.4.3 Class template gamma_distribution
1214 26.6.9.4.4 Class template weibull_distribution
26.6.9.4.5 Class template extreme_value_distribution
1215 26.6.9.5 Normal distributions
26.6.9.5.1 Class template normal_distribution
1216 26.6.9.5.2 Class template lognormal_distribution
1217 26.6.9.5.3 Class template chi_squared_distribution
26.6.9.5.4 Class template cauchy_distribution
1218 26.6.9.5.5 Class template fisher_f_distribution
1219 26.6.9.5.6 Class template student_t_distribution
26.6.9.6 Sampling distributions
26.6.9.6.1 Class template discrete_distribution
1221 26.6.9.6.2 Class template piecewise_constant_distribution
1222 26.6.9.6.3 Class template piecewise_linear_distribution
1224 26.6.10 Low-quality random number generation
26.7 Numeric arrays
26.7.1 Header synopsis
1227 26.7.2 Class template valarray
26.7.2.1 Overview
1228 26.7.2.2 Constructors
1229 26.7.2.3 Assignment
1230 26.7.2.4 Element access
26.7.2.5 Subset operations
1231 26.7.2.6 Unary operators
1232 26.7.2.7 Compound assignment
26.7.2.8 Member functions
1233 26.7.3 valarray non-member operations
26.7.3.1 Binary operators
1234 26.7.3.2 Logical operators
1235 26.7.3.3 Transcendentals
1236 26.7.3.4 Specialized algorithms
26.7.4 Class slice
26.7.4.1 Overview
26.7.4.2 Constructors
26.7.4.3 Access functions
26.7.4.4 Operators
1237 26.7.5 Class template slice_array
26.7.5.1 Overview
26.7.5.2 Assignment
26.7.5.3 Compound assignment
26.7.5.4 Fill function
1238 26.7.6 The gslice class
26.7.6.1 Overview
1239 26.7.6.2 Constructors
26.7.6.3 Access functions
26.7.7 Class template gslice_array
26.7.7.1 Overview
1240 26.7.7.2 Assignment
26.7.7.3 Compound assignment
26.7.7.4 Fill function
26.7.8 Class template mask_array
26.7.8.1 Overview
1241 26.7.8.2 Assignment
26.7.8.3 Compound assignment
26.7.8.4 Fill function
26.7.9 Class template indirect_array
26.7.9.1 Overview
1242 26.7.9.2 Assignment
26.7.9.3 Compound assignment
26.7.9.4 Fill function
26.7.10 valarray range access
1243 26.8 Mathematical functions for floating-point types
26.8.1 Header synopsis
1251 26.8.2 Absolute values
1252 26.8.3 Three-dimensional hypotenuse
26.8.4 Linear interpolation
26.8.5 Classification / comparison functions
26.8.6 Mathematical special functions
26.8.6.1 General
26.8.6.2 Associated Laguerre polynomials
1253 26.8.6.3 Associated Legendre functions
26.8.6.4 Beta function
26.8.6.5 Complete elliptic integral of the first kind
26.8.6.6 Complete elliptic integral of the second kind
1254 26.8.6.7 Complete elliptic integral of the third kind
26.8.6.8 Regular modified cylindrical Bessel functions
26.8.6.9 Cylindrical Bessel functions of the first kind
26.8.6.10 Irregular modified cylindrical Bessel functions
1255 26.8.6.11 Cylindrical Neumann functions
26.8.6.12 Incomplete elliptic integral of the first kind
26.8.6.13 Incomplete elliptic integral of the second kind
26.8.6.14 Incomplete elliptic integral of the third kind
1256 26.8.6.15 Exponential integral
26.8.6.16 Hermite polynomials
26.8.6.17 Laguerre polynomials
26.8.6.18 Legendre polynomials
26.8.6.19 Riemann zeta function
1257 26.8.6.20 Spherical Bessel functions of the first kind
26.8.6.21 Spherical associated Legendre functions
26.8.6.22 Spherical Neumann functions
1258 26.9 Numbers
26.9.1 Header synopsis
26.9.2 Mathematical constants
1259 27 Time library
27.1 General
27.2 Header synopsis
1273 27.3 Cpp17Clock requirements
27.4 Time-related traits
27.4.1 treat_as_floating_point
1274 27.4.2 duration_values
27.4.3 Specializations of common_type
27.4.4 Class template is_clock
1275 27.5 Class template duration
27.5.1 General
1276 27.5.2 Constructors
27.5.3 Observer
27.5.4 Arithmetic
1277 27.5.5 Special values
27.5.6 Non-member arithmetic
1278 27.5.7 Comparisons
1279 27.5.8 Conversions
1280 27.5.9 Suffixes for duration literals
27.5.10 Algorithms
1281 27.5.11 I/O
1282 27.6 Class template time_point
27.6.1 General
27.6.2 Constructors
1283 27.6.3 Observer
27.6.4 Arithmetic
27.6.5 Special values
27.6.6 Non-member arithmetic
1284 27.6.7 Comparisons
27.6.8 Conversions
1285 27.7 Clocks
27.7.1 General
27.7.2 Class system_clock
27.7.2.1 Overview
27.7.2.2 Members
27.7.2.3 Non-member functions
1286 27.7.3 Class utc_clock
27.7.3.1 Overview
1287 27.7.3.2 Member functions
27.7.3.3 Non-member functions
1288 27.7.4 Class tai_clock
27.7.4.1 Overview
1289 27.7.4.2 Member functions
27.7.4.3 Non-member functions
1290 27.7.5 Class gps_clock
27.7.5.1 Overview
27.7.5.2 Member functions
1291 27.7.5.3 Non-member functions
27.7.6 Type file_clock
27.7.6.1 Overview
27.7.6.2 Member functions
1292 27.7.6.3 Non-member functions
27.7.7 Class steady_clock
27.7.8 Class high_resolution_clock
1293 27.7.9 Local time
27.7.10 time_point conversions
27.7.10.1 Class template clock_time_conversion
27.7.10.2 Identity conversions
1294 27.7.10.3 Conversions between system_clock and utc_clock
27.7.10.4 Conversions between system_clock and other clocks
1295 27.7.10.5 Conversions between utc_clock and other clocks
27.7.10.6 Function template clock_cast
1296 27.8 The civil calendar
27.8.1 In general
27.8.2 Class last_spec
27.8.3 Class day
27.8.3.1 Overview
27.8.3.2 Member functions
1297 27.8.3.3 Non-member functions
1298 27.8.4 Class month
27.8.4.1 Overview
27.8.4.2 Member functions
1299 27.8.4.3 Non-member functions
1300 27.8.5 Class year
27.8.5.1 Overview
27.8.5.2 Member functions
1301 27.8.5.3 Non-member functions
1302 27.8.6 Class weekday
27.8.6.1 Overview
1303 27.8.6.2 Member functions
1304 27.8.6.3 Non-member functions
27.8.7 Class weekday_indexed
27.8.7.1 Overview
1305 27.8.7.2 Member functions
27.8.7.3 Non-member functions
27.8.8 Class weekday_last
27.8.8.1 Overview
1306 27.8.8.2 Member functions
27.8.8.3 Non-member functions
27.8.9 Class month_day
27.8.9.1 Overview
27.8.9.2 Member functions
1307 27.8.9.3 Non-member functions
27.8.10 Class month_day_last
1308 27.8.11 Class month_weekday
27.8.11.1 Overview
27.8.11.2 Member functions
1309 27.8.11.3 Non-member functions
27.8.12 Class month_weekday_last
27.8.12.1 Overview
27.8.12.2 Member functions
27.8.12.3 Non-member functions
1310 27.8.13 Class year_month
27.8.13.1 Overview
27.8.13.2 Member functions
1311 27.8.13.3 Non-member functions
1312 27.8.14 Class year_month_day
27.8.14.1 Overview
27.8.14.2 Member functions
1314 27.8.14.3 Non-member functions
1315 27.8.15 Class year_month_day_last
27.8.15.1 Overview
27.8.15.2 Member functions
1316 27.8.15.3 Non-member functions
1317 27.8.16 Class year_month_weekday
27.8.16.1 Overview
1318 27.8.16.2 Member functions
1319 27.8.16.3 Non-member functions
1320 27.8.17 Class year_month_weekday_last
27.8.17.1 Overview
27.8.17.2 Member functions
1321 27.8.17.3 Non-member functions
1322 27.8.18 Conventional syntax operators
1325 27.9 Class template hh_mm_ss
27.9.1 Overview
1326 27.9.2 Members
1327 27.9.3 Non-members
27.10 12/24 hours functions
27.11 Time zones
27.11.1 In general
1328 27.11.2 Time zone database
27.11.2.1 Class tzdb
27.11.2.2 Class tzdb_list
1329 27.11.2.3 Time zone database access
27.11.2.4 Remote time zone database support
1330 27.11.3 Exception classes
27.11.3.1 Class nonexistent_local_time
1331 27.11.3.2 Class ambiguous_local_time
27.11.4 Information classes
27.11.4.1 Class sys_info
1332 27.11.4.2 Class local_info
1333 27.11.5 Class time_zone
27.11.5.1 Overview
27.11.5.2 Member functions
1334 27.11.5.3 Non-member functions
27.11.6 Class template zoned_traits
27.11.7 Class template zoned_time
27.11.7.1 Overview
1336 27.11.7.2 Constructors
1337 27.11.7.3 Member functions
1338 27.11.7.4 Non-member functions
27.11.8 Class leap_second
27.11.8.1 Overview
1339 27.11.8.2 Member functions
27.11.8.3 Non-member functions
1340 27.11.9 Class time_zone_link
27.11.9.1 Overview
27.11.9.2 Member functions
27.11.9.3 Non-member functions
27.12 Formatting
1344 27.13 Parsing
1348 27.14 Header synopsis
1349 28 Localization library
28.1 General
28.2 Header synopsis
1350 28.3 Locales
28.3.1 Class locale
28.3.1.1 General
1352 28.3.1.2 Types
28.3.1.2.1 Type locale::category
1353 28.3.1.2.2 Class locale::facet
1354 28.3.1.2.3 Class locale::id
28.3.1.3 Constructors and destructor
1355 28.3.1.4 Members
28.3.1.5 Operators
28.3.1.6 Static members
1356 28.3.2 locale globals
28.3.3 Convenience interfaces
28.3.3.1 Character classification
28.3.3.2 Character conversions
28.4 Standard locale categories
28.4.1 General
1357 28.4.2 The ctype category
28.4.2.1 General
28.4.2.2 Class template ctype
28.4.2.2.1 General
1358 28.4.2.2.2 ctype members
28.4.2.2.3 ctype virtual functions
1359 28.4.2.3 Class template ctype_byname
1360 28.4.2.4 ctype specialization
28.4.2.4.1 General
28.4.2.4.2 Destructor
1361 28.4.2.4.3 Members
28.4.2.4.4 Static members
28.4.2.4.5 Virtual functions
1362 28.4.2.5 Class template codecvt
28.4.2.5.1 General
1363 28.4.2.5.2 Members
28.4.2.5.3 Virtual functions
1365 28.4.2.6 Class template codecvt_byname
28.4.3 The numeric category
28.4.3.1 General
1366 28.4.3.2 Class template num_get
28.4.3.2.1 General
1367 28.4.3.2.2 Members
28.4.3.2.3 Virtual functions
1369 28.4.3.3 Class template num_put
28.4.3.3.1 General
1370 28.4.3.3.2 Members
28.4.3.3.3 Virtual functions
1373 28.4.4 The numeric punctuation facet
28.4.4.1 Class template numpunct
28.4.4.1.1 General
1374 28.4.4.1.2 Members
28.4.4.1.3 Virtual functions
28.4.4.2 Class template numpunct_byname
1375 28.4.5 The collate category
28.4.5.1 Class template collate
28.4.5.1.1 General
28.4.5.1.2 Members
28.4.5.1.3 Virtual functions
1376 28.4.5.2 Class template collate_byname
28.4.6 The time category
28.4.6.1 General
28.4.6.2 Class template time_get
28.4.6.2.1 General
1377 28.4.6.2.2 Members
1378 28.4.6.2.3 Virtual functions
1379 28.4.6.3 Class template time_get_byname
1380 28.4.6.4 Class template time_put
28.4.6.4.1 Members
28.4.6.4.2 Virtual functions
1381 28.4.6.5 Class template time_put_byname
28.4.7 The monetary category
28.4.7.1 General
28.4.7.2 Class template money_get
1382 28.4.7.2.1 Members
28.4.7.2.2 Virtual functions
1383 28.4.7.3 Class template money_put
28.4.7.3.1 Members
28.4.7.3.2 Virtual functions
1384 28.4.7.4 Class template moneypunct
28.4.7.4.1 General
1385 28.4.7.4.2 Members
28.4.7.4.3 Virtual functions
1386 28.4.7.5 Class template moneypunct_byname
28.4.8 The message retrieval category
28.4.8.1 General
28.4.8.2 Class template messages
28.4.8.2.1 General
1387 28.4.8.2.2 Members
28.4.8.2.3 Virtual functions
1388 28.4.8.3 Class template messages_byname
28.5 C library locales
28.5.1 Header synopsis
28.5.2 Data races
1389 29 Input/output library
29.1 General
29.2 Iostreams requirements
29.2.1 Imbue limitations
1390 29.2.2 Positioning type limitations
29.2.3 Thread safety
29.3 Forward declarations
29.3.1 Header synopsis
1392 29.3.2 Overview
29.4 Standard iostream objects
29.4.1 Header synopsis
29.4.2 Overview
1393 29.4.3 Narrow stream objects
29.4.4 Wide stream objects
1394 29.5 Iostreams base classes
29.5.1 Header synopsis
1395 29.5.2 Types
29.5.3 Class ios_base
29.5.3.1 General
1397 29.5.3.2 Types
29.5.3.2.1 Class ios_base::failure
29.5.3.2.2 Type ios_base::fmtflags
29.5.3.2.3 Type ios_base::iostate
29.5.3.2.4 Type ios_base::openmode
29.5.3.2.5 Type ios_base::seekdir
1399 29.5.3.2.6 Class ios_base::Init
29.5.3.3 State functions
1400 29.5.3.4 Functions
29.5.3.5 Static members
29.5.3.6 Storage functions
1401 29.5.3.7 Callbacks
29.5.3.8 Constructors and destructor
29.5.4 Class template fpos
1402 29.5.4.1 Members
29.5.4.2 Requirements
1403 29.5.5 Class template basic_ios
29.5.5.1 Overview
1404 29.5.5.2 Constructors
29.5.5.3 Member functions
1406 29.5.5.4 Flags functions
29.5.6 ios_base manipulators
29.5.6.1 fmtflags manipulators
1408 29.5.6.2 adjustfield manipulators
29.5.6.3 basefield manipulators
29.5.6.4 floatfield manipulators
1409 29.5.7 Error reporting
29.6 Stream buffers
29.6.1 Header synopsis
29.6.2 Stream buffer requirements
1410 29.6.3 Class template basic_streambuf
29.6.3.1 General
1411 29.6.3.2 Constructors
1412 29.6.3.3 Public member functions
29.6.3.3.1 Locales
29.6.3.3.2 Buffer management and positioning
29.6.3.3.3 Get area
1413 29.6.3.3.4 Putback
29.6.3.3.5 Put area
29.6.3.4 Protected member functions
29.6.3.4.1 Assignment
29.6.3.4.2 Get area access
1414 29.6.3.4.3 Put area access
29.6.3.5 Virtual functions
29.6.3.5.1 Locales
29.6.3.5.2 Buffer management and positioning
1415 29.6.3.5.3 Get area
1416 29.6.3.5.4 Putback
29.6.3.5.5 Put area
1417 29.7 Formatting and manipulators
29.7.1 Header synopsis
29.7.2 Header synopsis
29.7.3 Header synopsis
1418 29.7.4 Input streams
29.7.4.1 General
29.7.4.2 Class template basic_istream
29.7.4.2.1 General
1420 29.7.4.2.2 Constructors
29.7.4.2.3 Assignment and swap
29.7.4.2.4 Class basic_istream::sentry
1421 29.7.4.3 Formatted input functions
29.7.4.3.1 Common requirements
29.7.4.3.2 Arithmetic extractors
1422 29.7.4.3.3 basic_istream::operator>>
1423 29.7.4.4 Unformatted input functions
1427 29.7.4.5 Standard basic_istream manipulators
29.7.4.6 Rvalue stream extraction
1428 29.7.4.7 Class template basic_iostream
29.7.4.7.1 General
29.7.4.7.2 Constructors
29.7.4.7.3 Destructor
29.7.4.7.4 Assignment and swap
1429 29.7.5 Output streams
29.7.5.1 General
29.7.5.2 Class template basic_ostream
29.7.5.2.1 General
1431 29.7.5.2.2 Constructors
29.7.5.2.3 Assignment and swap
29.7.5.2.4 Class basic_ostream::sentry
1432 29.7.5.2.5 Seek members
29.7.5.3 Formatted output functions
29.7.5.3.1 Common requirements
1433 29.7.5.3.2 Arithmetic inserters
1434 29.7.5.3.3 basic_ostream::operator<<
29.7.5.3.4 Character inserter function templates
1435 29.7.5.4 Unformatted output functions
1436 29.7.5.5 Standard manipulators
29.7.5.6 Rvalue stream insertion
1437 29.7.6 Standard manipulators
1438 29.7.7 Extended manipulators
1440 29.7.8 Quoted manipulators
1441 29.8 String-based streams
29.8.1 Header synopsis
29.8.2 Class template basic_stringbuf
29.8.2.1 General
1443 29.8.2.2 Constructors
1444 29.8.2.3 Assignment and swap
29.8.2.4 Member functions
1446 29.8.2.5 Overridden virtual functions
1447 29.8.3 Class template basic_istringstream
29.8.3.1 General
1448 29.8.3.2 Constructors
1449 29.8.3.3 Assignment and swap
29.8.3.4 Member functions
1450 29.8.4 Class template basic_ostringstream
29.8.4.1 General
1451 29.8.4.2 Constructors
1452 29.8.4.3 Assignment and swap
29.8.4.4 Member functions
1453 29.8.5 Class template basic_stringstream
29.8.5.1 General
1454 29.8.5.2 Constructors
29.8.5.3 Assignment and swap
1455 29.8.5.4 Member functions
29.9 File-based streams
29.9.1 Header synopsis
1456 29.9.2 Class template basic_filebuf
29.9.2.1 General
1457 29.9.2.2 Constructors
1458 29.9.2.3 Assignment and swap
29.9.2.4 Member functions
1459 29.9.2.5 Overridden virtual functions
1461 29.9.3 Class template basic_ifstream
29.9.3.1 General
1462 29.9.3.2 Constructors
1463 29.9.3.3 Assignment and swap
29.9.3.4 Member functions
29.9.4 Class template basic_ofstream
29.9.4.1 General
1464 29.9.4.2 Constructors
29.9.4.3 Assignment and swap
1465 29.9.4.4 Member functions
29.9.5 Class template basic_fstream
29.9.5.1 General
1466 29.9.5.2 Constructors
29.9.5.3 Assignment and swap
1467 29.9.5.4 Member functions
29.10 Synchronized output streams
29.10.1 Header synopsis
29.10.2 Class template basic_syncbuf
29.10.2.1 Overview
1468 29.10.2.2 Construction and destruction
1469 29.10.2.3 Assignment and swap
29.10.2.4 Member functions
1470 29.10.2.5 Overridden virtual functions
29.10.2.6 Specialized algorithms
29.10.3 Class template basic_osyncstream
29.10.3.1 Overview
1471 29.10.3.2 Construction and destruction
29.10.3.3 Member functions
1472 29.11 File systems
29.11.1 General
29.11.2 Conformance
29.11.2.1 General
29.11.2.2 POSIX conformance
1473 29.11.2.3 Operating system dependent behavior conformance
29.11.2.4 File system race behavior
29.11.3 Requirements
29.11.3.1 General
29.11.3.2 Namespaces and headers
29.11.4 Header synopsis
1476 29.11.5 Error reporting
1477 29.11.6 Class path
29.11.6.1 General
1480 29.11.6.2 Generic pathname format
1481 29.11.6.3 Conversions
29.11.6.3.1 Argument format conversions
1482 29.11.6.3.2 Type and encoding conversions
29.11.6.4 Requirements
1483 29.11.6.5 Members
29.11.6.5.1 Constructors
1484 29.11.6.5.2 Assignments
29.11.6.5.3 Appends
1485 29.11.6.5.4 Concatenation
29.11.6.5.5 Modifiers
1486 29.11.6.5.6 Native format observers
1487 29.11.6.5.7 Generic format observers
29.11.6.5.8 Compare
1488 29.11.6.5.9 Decomposition
1489 29.11.6.5.10 Query
29.11.6.5.11 Generation
1490 29.11.6.6 Iterators
1491 29.11.6.7 Inserter and extractor
29.11.6.8 Non-member functions
1492 29.11.7 Class filesystem_error
29.11.7.1 General
29.11.7.2 Members
1493 29.11.8 Enumerations
29.11.8.1 Enum path::format
29.11.8.2 Enum class file_type
29.11.8.3 Enum class copy_options
1495 29.11.8.4 Enum class perms
29.11.8.5 Enum class perm_options
29.11.8.6 Enum class directory_options
29.11.9 Class file_status
29.11.9.1 General
1496 29.11.9.2 Constructors
29.11.9.3 Observers
29.11.9.4 Modifiers
29.11.10 Class directory_entry
29.11.10.1 General
1498 29.11.10.2 Constructors
29.11.10.3 Modifiers
29.11.10.4 Observers
1500 29.11.11 Class directory_iterator
29.11.11.1 General
1501 29.11.11.2 Members
29.11.11.3 Non-member functions
1502 29.11.12 Class recursive_directory_iterator
29.11.12.1 General
1503 29.11.12.2 Members
1504 29.11.12.3 Non-member functions
29.11.13 Filesystem operation functions
29.11.13.1 General
1505 29.11.13.2 Absolute
29.11.13.3 Canonical
29.11.13.4 Copy
1507 29.11.13.5 Copy file
1508 29.11.13.6 Copy symlink
29.11.13.7 Create directories
29.11.13.8 Create directory
29.11.13.9 Create directory symlink
1509 29.11.13.10 Create hard link
29.11.13.11 Create symlink
29.11.13.12 Current path
29.11.13.13 Equivalent
1510 29.11.13.14 Exists
29.11.13.15 File size
29.11.13.16 Hard link count
29.11.13.17 Is block file
29.11.13.18 Is character file
1511 29.11.13.19 Is directory
29.11.13.20 Is empty
29.11.13.21 Is fifo
29.11.13.22 Is other
1512 29.11.13.23 Is regular file
29.11.13.24 Is socket
29.11.13.25 Is symlink
29.11.13.26 Last write time
1513 29.11.13.27 Permissions
29.11.13.28 Proximate
29.11.13.29 Read symlink
29.11.13.30 Relative
1514 29.11.13.31 Remove
29.11.13.32 Remove all
29.11.13.33 Rename
29.11.13.34 Resize file
29.11.13.35 Space
1515 29.11.13.36 Status
1516 29.11.13.37 Status known
29.11.13.38 Symlink status
29.11.13.39 Temporary directory path
29.11.13.40 Weakly canonical
1517 29.12 C library files
29.12.1 Header synopsis
1518 29.12.2 Header synopsis
1520 30 Regular expressions library
30.1 General
30.2 Definitions
1521 30.3 Requirements
1522 30.4 Header synopsis
1526 30.5 Namespace std::regex_constants
30.5.1 General
30.5.2 Bitmask type syntax_option_type
30.5.3 Bitmask type match_flag_type
1528 30.5.4 Implementation-defined error_type
1529 30.6 Class regex_error
30.7 Class template regex_traits
1531 30.8 Class template basic_regex
30.8.1 General
1533 30.8.2 Constructors
1534 30.8.3 Assignment
1535 30.8.4 Constant operations
30.8.5 Locale
30.8.6 Swap
1536 30.8.7 Non-member functions
30.9 Class template sub_match
30.9.1 General
30.9.2 Members
30.9.3 Non-member operators
1537 30.10 Class template match_results
30.10.1 General
1539 30.10.2 Constructors
1540 30.10.3 State
30.10.4 Size
30.10.5 Element access
1541 30.10.6 Formatting
30.10.7 Allocator
30.10.8 Swap
1542 30.10.9 Non-member functions
30.11 Regular expression algorithms
30.11.1 Exceptions
30.11.2 regex_match
1543 30.11.3 regex_search
1545 30.11.4 regex_replace
1546 30.12 Regular expression iterators
30.12.1 Class template regex_iterator
30.12.1.1 General
1547 30.12.1.2 Constructors
30.12.1.3 Comparisons
30.12.1.4 Indirection
1548 30.12.1.5 Increment
30.12.2 Class template regex_token_iterator
30.12.2.1 General
1550 30.12.2.2 Constructors
1551 30.12.2.3 Comparisons
30.12.2.4 Indirection
30.12.2.5 Increment
30.13 Modified ECMAScript regular expression grammar
1554 31 Atomic operations library
31.1 General
31.2 Header synopsis
1558 31.3 Type aliases
31.4 Order and consistency
1560 31.5 Lock-free property
31.6 Waiting and notifying
1561 31.7 Class template atomic_ref
31.7.1 General
1562 31.7.2 Operations
1564 31.7.3 Specializations for integral types
1565 31.7.4 Specializations for floating-point types
1566 31.7.5 Partial specialization for pointers
1567 31.7.6 Member operators common to integers and pointers to objects
31.8 Class template atomic
31.8.1 General
1568 31.8.2 Operations on atomic types
1572 31.8.3 Specializations for integers
1574 31.8.4 Specializations for floating-point types
1575 31.8.5 Partial specialization for pointers
1577 31.8.6 Member operators common to integers and pointers to objects
31.8.7 Partial specializations for smart pointers
31.8.7.1 General
1578 31.8.7.2 Partial specialization for shared_ptr
1580 31.8.7.3 Partial specialization for weak_ptr
1582 31.9 Non-member functions
31.10 Flag type and operations
1584 31.11 Fences
1586 32 Thread support library
32.1 General
32.2 Requirements
32.2.1 Template parameter names
32.2.2 Exceptions
32.2.3 Native handles
32.2.4 Timing specifications
1587 32.2.5 Requirements for Cpp17Lockable types
32.2.5.1 In general
1588 32.2.5.2 Cpp17BasicLockable requirements
32.2.5.3 Cpp17Lockable requirements
32.2.5.4 Cpp17TimedLockable requirements
32.3 Stop tokens
32.3.1 Introduction
1589 32.3.2 Header synopsis
32.3.3 Class stop_token
32.3.3.1 General
1590 32.3.3.2 Constructors, copy, and assignment
32.3.3.3 Members
32.3.3.4 Non-member functions
32.3.4 Class stop_source
32.3.4.1 General
1591 32.3.4.2 Constructors, copy, and assignment
1592 32.3.4.3 Members
32.3.4.4 Non-member functions
32.3.5 Class template stop_callback
32.3.5.1 General
1593 32.3.5.2 Constructors and destructor
32.4 Threads
32.4.1 General
32.4.2 Header synopsis
1594 32.4.3 Class thread
32.4.3.1 General
32.4.3.2 Class thread::id
1595 32.4.3.3 Constructors
1596 32.4.3.4 Destructor
32.4.3.5 Assignment
32.4.3.6 Members
1597 32.4.3.7 Static members
32.4.3.8 Specialized algorithms
32.4.4 Class jthread
32.4.4.1 General
1598 32.4.4.2 Constructors, move, and assignment
1599 32.4.4.3 Members
1600 32.4.4.4 Stop token handling
32.4.4.5 Specialized algorithms
32.4.4.6 Static members
32.4.5 Namespace this_thread
32.5 Mutual exclusion
32.5.1 General
1601 32.5.2 Header synopsis
32.5.3 Header synopsis
32.5.4 Mutex requirements
32.5.4.1 In general
32.5.4.2 Mutex types
32.5.4.2.1 General
1602 32.5.4.2.2 Class mutex
1603 32.5.4.2.3 Class recursive_mutex
1604 32.5.4.3 Timed mutex types
32.5.4.3.1 General
32.5.4.3.2 Class timed_mutex
1605 32.5.4.3.3 Class recursive_timed_mutex
1606 32.5.4.4 Shared mutex types
32.5.4.4.1 General
1607 32.5.4.4.2 Class shared_mutex
32.5.4.5 Shared timed mutex types
32.5.4.5.1 General
1608 32.5.4.5.2 Class shared_timed_mutex
1609 32.5.5 Locks
32.5.5.1 General
32.5.5.2 Class template lock_guard
1610 32.5.5.3 Class template scoped_lock
32.5.5.4 Class template unique_lock
32.5.5.4.1 General
1611 32.5.5.4.2 Constructors, destructor, and assignment
1612 32.5.5.4.3 Locking
1613 32.5.5.4.4 Modifiers
1614 32.5.5.4.5 Observers
32.5.5.5 Class template shared_lock
32.5.5.5.1 General
1615 32.5.5.5.2 Constructors, destructor, and assignment
1616 32.5.5.5.3 Locking
1617 32.5.5.5.4 Modifiers
32.5.5.5.5 Observers
32.5.6 Generic locking algorithms
1618 32.5.7 Call once
32.5.7.1 Struct once_flag
32.5.7.2 Function call_once
1619 32.6 Condition variables
32.6.1 General
32.6.2 Header synopsis
32.6.3 Non-member functions
1620 32.6.4 Class condition_variable
1623 32.6.5 Class condition_variable_any
32.6.5.1 General
1624 32.6.5.2 Noninterruptible waits
1625 32.6.5.3 Interruptible waits
1626 32.7 Semaphore
32.7.1 General
32.7.2 Header synopsis
32.7.3 Class template counting_semaphore
1628 32.8 Coordination types
32.8.1 General
32.8.2 Latches
32.8.2.1 General
32.8.2.2 Header synopsis
32.8.2.3 Class latch
1629 32.8.3 Barriers
32.8.3.1 General
32.8.3.2 Header synopsis
32.8.3.3 Class template barrier
1631 32.9 Futures
32.9.1 Overview
32.9.2 Header synopsis
1632 32.9.3 Error handling
1633 32.9.4 Class future_error
32.9.5 Shared state
1634 32.9.6 Class template promise
1636 32.9.7 Class template future
1638 32.9.8 Class template shared_future
1641 32.9.9 Function template async
1642 32.9.10 Class template packaged_task
32.9.10.1 General
1643 32.9.10.2 Member functions
1645 32.9.10.3 Globals
1646 A Grammar summary
A.1 General
A.2 Keywords
A.3 Lexical conventions
1650 A.4 Basics
1651 A.5 Expressions
1655 A.6 Statements
A.7 Declarations
1661 A.8 Modules
1662 A.9 Classes
1663 A.10 Overloading
A.11 Templates
1665 A.12 Exception handling
A.13 Preprocessing directives
1667 B Implementation quantities
1669 C Compatibility
C.1 C++ and ISO C++ 2017
C.1.1 General
C.1.2 Clause 5: lexical conventions
1670 C.1.3 Clause 6: basics
1671 C.1.4 Clause 7: expressions
C.1.5 Clause 9: declarations
1672 C.1.6 Clause 11: classes
1673 C.1.7 Clause 12: overloading
C.1.8 Clause 13: templates
C.1.9 Clause 14: exception handling
1674 C.1.10 Clause 16: library introduction
C.1.11 Clause 22: containers library
C.1.12 Clause 23: iterators library
C.1.13 Clause 25: algorithms library
1675 C.1.14 Clause 29: input/output library
C.1.15 Annex D: compatibility features
1676 C.2 C++ and ISO C++ 2014
C.2.1 General
C.2.2 Clause 5: lexical conventions
1677 C.2.3 Clause 7: expressions
C.2.4 Clause 9: declarations
1678 C.2.5 Clause 11: classes
C.2.6 Clause 13: templates
C.2.7 Clause 14: exception handling
C.2.8 Clause 16: library introduction
1679 C.2.9 Clause 20: general utilities library
C.2.10 Clause 21: strings library
C.2.11 Clause 22: containers library
C.2.12 Annex D: compatibility features
1680 C.3 C++ and ISO C++ 2011
C.3.1 General
C.3.2 Clause 5: lexical conventions
C.3.3 Clause 6: basics
C.3.4 Clause 7: expressions
1681 C.3.5 Clause 9: declarations
C.3.6 Clause 16: library introduction
C.3.7 Clause 29: input/output library
C.4 C++ and ISO C++ 2003
C.4.1 General
C.4.2 Clause 5: lexical conventions
1682 C.4.3 Clause 7: expressions
C.4.4 Clause 9: declarations
1683 C.4.5 Clause 11: classes
C.4.6 Clause 13: templates
C.4.7 Clause 16: library introduction
1684 C.4.8 Clause 17: language support library
C.4.9 Clause 19: diagnostics library
C.4.10 Clause 20: general utilities library
1685 C.4.11 Clause 21: strings library
C.4.12 Clause 22: containers library
1686 C.4.13 Clause 25: algorithms library
C.4.14 Clause 26: numerics library
C.4.15 Clause 29: input/output library
1687 C.5 C++ and ISO C
C.5.1 General
C.5.2 Clause 5: lexical conventions
C.5.3 Clause 6: basics
1688 C.5.4 Clause 7: expressions
1689 C.5.5 Clause 8: statements
1690 C.5.6 Clause 9: declarations
1693 C.5.7 Clause 11: classes
1694 C.5.8 Clause 15: preprocessing directives
1695 C.6 C standard library
C.6.1 General
C.6.2 Modifications to headers
C.6.3 Modifications to definitions
C.6.3.1 Types char16_t and char32_t
C.6.3.2 Type wchar_t
C.6.3.3 Header
C.6.3.4 Header
C.6.3.5 Header
C.6.3.6 Header
C.6.3.7 Macro NULL
C.6.4 Modifications to declarations
1696 C.6.5 Modifications to behavior
C.6.5.1 General
C.6.5.2 Macro offsetof(type, member-designator)
C.6.5.3 Memory allocation functions
1697 D Compatibility features
D.1 General
D.2 Arithmetic conversion on enumerations
D.3 Implicit capture of *this by reference
D.4 Comma operator in subscript expressions
D.5 Array comparisons
1698 D.6 Deprecated volatile types
D.7 Redeclaration of static constexpr data members
1699 D.8 Non-local use of TU-local entities
D.9 Implicit declaration of copy functions
D.10 C headers
D.10.1 General
D.10.2 Header synopsis
D.10.3 Header synopsis
D.10.4 Header synopsis
1700 D.10.5 Header synopsis
D.10.6 Header synopsis
D.10.7 Other C headers
D.11 Requires paragraph
D.12 Relational operators
1701 D.13 char* streams
D.13.1 Header synopsis
D.13.2 Class strstreambuf
D.13.2.1 General
1702 D.13.2.2 strstreambuf constructors
1703 D.13.2.3 Member functions
1704 D.13.2.4 strstreambuf overridden virtual functions
1706 D.13.3 Class istrstream
D.13.3.1 General
D.13.3.2 istrstream constructors
D.13.3.3 Member functions
D.13.4 Class ostrstream
D.13.4.1 General
1707 D.13.4.2 ostrstream constructors
D.13.4.3 Member functions
D.13.5 Class strstream
D.13.5.1 General
1708 D.13.5.2 strstream constructors
D.13.5.3 strstream destructor
D.13.5.4 strstream operations
D.14 Deprecated type traits
1709 D.15 Tuple
D.16 Variant
1710 D.17 Deprecated iterator class template
D.18 Deprecated move_iterator access
D.19 Deprecated shared_ptr atomic access
1712 D.20 Deprecated basic_string capacity
D.21 Deprecated standard code conversion facets
D.21.1 General
1713 D.21.2 Header synopsis
D.21.3 Requirements
1714 D.22 Deprecated convenience conversion interfaces
D.22.1 General
D.22.2 Class template wstring_convert
1716 D.22.3 Class template wbuffer_convert
1717 D.23 Deprecated locale category facets
1718 D.24 Deprecated filesystem path factory functions
D.25 Deprecated atomic operations
D.25.1 General
D.25.2 Volatile access
1719 D.25.3 Non-member functions
D.25.4 Operations on atomic types
D.25.5 Flag type and operations
1720 Bibliography
1721 Cross references
1745 Cross references from ISO C++ 2017
1748 Index
Symbols
1749 Numbers
A
1751 B
1752 C
1756 D
1758 E
1761 F
1762 G
H
1763 I
1764 J
K
L
1766 M
1767 N
1768 O
1770 P
1772 Q
R
1774 S
1777 T
1780 U
V
1781 W
X
Y
Z
1782 Index of grammar productions
1787 Index of library headers
1789 Index of library names
Symbols
1790 Numbers
A
1794 B
1800 C
1804 D
1807 E
1810 F
1813 G
1815 H
1816 I
1821 J
K
L
1823 M
1827 N
1829 O
1837 P
1840 Q
R
1843 S
1850 T
1853 U
1855 V
1857 W
1859 X
Y
1860 Z
1861 Index of library concepts
1864 Index of implementation-defined behavior
BS ISO/IEC 14882:2020
$165.47