ISO-IEC 14882-2020 Information technology — Programming languages — 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"

Author(s): ISO
Edition: 6
Publisher: ISO
Year: 2020

Language: English

79358.pdf
pdf at 230.pdf
Contents
Foreword
1 Scope
2 Normative references
3 Terms and definitions
4 General principles
4.1 Implementation compliance
4.1.1 General
4.1.2 Abstract machine
4.2 Structure of this document
4.3 Syntax notation
5 Lexical conventions
5.1 Separate translation
5.2 Phases of translation
5.3 Character sets
5.4 Preprocessing tokens
5.5 Alternative tokens
5.6 Tokens
5.7 Comments
5.8 Header names
5.9 Preprocessing numbers
5.10 Identifiers
5.11 Keywords
5.12 Operators and punctuators
5.13 Literals
5.13.1 Kinds of literals
5.13.2 Integer literals
5.13.3 Character literals
5.13.4 Floating-point literals
5.13.5 String literals
5.13.6 Boolean literals
5.13.7 Pointer literals
5.13.8 User-defined literals
6 Basics
6.1 Preamble
6.2 Declarations and definitions
6.3 One-definition rule
6.4 Scope
6.4.1 Declarative regions and scopes
6.4.2 Point of declaration
6.4.3 Block scope
6.4.4 Function parameter scope
6.4.5 Function scope
6.4.6 Namespace scope
6.4.7 Class scope
6.4.8 Enumeration scope
6.4.9 Template parameter scope
6.4.10 Name hiding
6.5 Name lookup
6.5.1 General
6.5.2 Unqualified name lookup
6.5.3 Argument-dependent name lookup
6.5.4 Qualified name lookup
6.5.4.1 General
6.5.4.2 Class members
6.5.4.3 Namespace members
6.5.5 Elaborated type specifiers
6.5.6 Class member access
6.5.7 Using-directives and namespace aliases
6.6 Program and linkage
6.7 Memory and objects
6.7.1 Memory model
6.7.2 Object model
6.7.3 Lifetime
6.7.4 Indeterminate values
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
6.7.5.5 Dynamic storage duration
6.7.5.5.1 General
6.7.5.5.2 Allocation functions
6.7.5.5.3 Deallocation functions
6.7.5.5.4 Safely-derived pointers
6.7.5.6 Duration of subobjects
6.7.6 Alignment
6.7.7 Temporary objects
6.8 Types
6.8.1 General
6.8.2 Fundamental types
6.8.3 Compound types
6.8.4 CV-qualifiers
6.8.5 Integer conversion rank
6.9 Program execution
6.9.1 Sequential execution
6.9.2 Multi-threaded executions and data races
6.9.2.1 General
6.9.2.2 Data races
6.9.2.3 Forward progress
6.9.3 Start and termination
6.9.3.1 main function
6.9.3.2 Static initialization
6.9.3.3 Dynamic initialization of non-local variables
6.9.3.4 Termination
7 Expressions
7.1 Preamble
7.2 Properties of expressions
7.2.1 Value category
7.2.2 Type
7.2.3 Context dependence
7.3 Standard conversions
7.3.1 General
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
7.3.6 Qualification conversions
7.3.7 Integral promotions
7.3.8 Floating-point promotion
7.3.9 Integral conversions
7.3.10 Floating-point conversions
7.3.11 Floating-integral conversions
7.3.12 Pointer conversions
7.3.13 Pointer-to-member conversions
7.3.14 Function pointer conversions
7.3.15 Boolean conversions
7.4 Usual arithmetic conversions
7.5 Primary expressions
7.5.1 Literals
7.5.2 This
7.5.3 Parentheses
7.5.4 Names
7.5.4.1 General
7.5.4.2 Unqualified names
7.5.4.3 Qualified names
7.5.4.4 Destruction
7.5.5 Lambda expressions
7.5.5.1 General
7.5.5.2 Closure types
7.5.5.3 Captures
7.5.6 Fold expressions
7.5.7 Requires expressions
7.5.7.1 General
7.5.7.2 Simple requirements
7.5.7.3 Type requirements
7.5.7.4 Compound requirements
7.5.7.5 Nested requirements
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
7.6.1.4 Explicit type conversion (functional notation)
7.6.1.5 Class member access
7.6.1.6 Increment and decrement
7.6.1.7 Dynamic cast
7.6.1.8 Type identification
7.6.1.9 Static cast
7.6.1.10 Reinterpret cast
7.6.1.11 Const cast
7.6.2 Unary expressions
7.6.2.1 General
7.6.2.2 Unary operators
7.6.2.3 Increment and decrement
7.6.2.4 Await
7.6.2.5 Sizeof
7.6.2.6 Alignof
7.6.2.7 noexcept operator
7.6.2.8 New
7.6.2.9 Delete
7.6.3 Explicit type conversion (cast notation)
7.6.4 Pointer-to-member operators
7.6.5 Multiplicative operators
7.6.6 Additive operators
7.6.7 Shift operators
7.6.8 Three-way comparison operator
7.6.9 Relational operators
7.6.10 Equality operators
7.6.11 Bitwise AND operator
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
7.6.17 Yielding a value
7.6.18 Throwing an exception
7.6.19 Assignment and compound assignment operators
7.6.20 Comma operator
7.7 Constant expressions
8 Statements
8.1 Preamble
8.2 Labeled statement
8.3 Expression statement
8.4 Compound statement or block
8.5 Selection statements
8.5.1 General
8.5.2 The if statement
8.5.3 The switch statement
8.6 Iteration statements
8.6.1 General
8.6.2 The while statement
8.6.3 The do statement
8.6.4 The for statement
8.6.5 The range-based for statement
8.7 Jump statements
8.7.1 General
8.7.2 The break statement
8.7.3 The continue statement
8.7.4 The return statement
8.7.5 The co_return statement
8.7.6 The goto statement
8.8 Declaration statement
8.9 Ambiguity resolution
9 Declarations
9.1 Preamble
9.2 Specifiers
9.2.1 General
9.2.2 Storage class specifiers
9.2.3 Function specifiers
9.2.4 The typedef specifier
9.2.5 The friend specifier
9.2.6 The constexpr and consteval specifiers
9.2.7 The constinit specifier
9.2.8 The inline specifier
9.2.9 Type specifiers
9.2.9.1 General
9.2.9.2 The cv-qualifiers
9.2.9.3 Simple type specifiers
9.2.9.4 Elaborated type specifiers
9.2.9.5 Decltype specifiers
9.2.9.6 Placeholder type specifiers
9.2.9.6.1 General
9.2.9.6.2 Placeholder type deduction
9.2.9.7 Deduced class template specialization types
9.3 Declarators
9.3.1 General
9.3.2 Type names
9.3.3 Ambiguity resolution
9.3.4 Meaning of declarators
9.3.4.1 General
9.3.4.2 Pointers
9.3.4.3 References
9.3.4.4 Pointers to members
9.3.4.5 Arrays
9.3.4.6 Functions
9.3.4.7 Default arguments
9.4 Initializers
9.4.1 General
9.4.2 Aggregates
9.4.3 Character arrays
9.4.4 References
9.4.5 List-initialization
9.5 Function definitions
9.5.1 In general
9.5.2 Explicitly-defaulted functions
9.5.3 Deleted definitions
9.5.4 Coroutine definitions
9.6 Structured binding declarations
9.7 Enumerations
9.7.1 Enumeration declarations
9.7.2 The using enum declaration
9.8 Namespaces
9.8.1 General
9.8.2 Namespace definition
9.8.2.1 General
9.8.2.2 Unnamed namespaces
9.8.2.3 Namespace member definitions
9.8.3 Namespace alias
9.8.4 Using namespace directive
9.9 The using declaration
9.10 The asm declaration
9.11 Linkage specifications
9.12 Attributes
9.12.1 Attribute syntax and semantics
9.12.2 Alignment specifier
9.12.3 Carries dependency attribute
9.12.4 Deprecated attribute
9.12.5 Fallthrough attribute
9.12.6 Likelihood attributes
9.12.7 Maybe unused attribute
9.12.8 Nodiscard attribute
9.12.9 Noreturn attribute
9.12.10 No unique address attribute
10 Modules
10.1 Module units and purviews
10.2 Export declaration
10.3 Import declaration
10.4 Global module fragment
10.5 Private module fragment
10.6 Instantiation context
10.7 Reachability
11 Classes
11.1 Preamble
11.2 Properties of classes
11.3 Class names
11.4 Class members
11.4.1 General
11.4.2 Member functions
11.4.3 Non-static member functions
11.4.3.1 General
11.4.3.2 The this pointer
11.4.4 Special member functions
11.4.5 Constructors
11.4.5.1 General
11.4.5.2 Default constructors
11.4.5.3 Copy/move constructors
11.4.6 Copy/move assignment operator
11.4.7 Destructors
11.4.8 Conversions
11.4.8.1 General
11.4.8.2 Conversion by constructor
11.4.8.3 Conversion functions
11.4.9 Static members
11.4.9.1 General
11.4.9.2 Static member functions
11.4.9.3 Static data members
11.4.10 Bit-fields
11.4.11 Nested class declarations
11.4.12 Nested type names
11.5 Unions
11.5.1 General
11.5.2 Anonymous unions
11.6 Local class declarations
11.7 Derived classes
11.7.1 General
11.7.2 Multiple base classes
11.7.3 Virtual functions
11.7.4 Abstract classes
11.8 Member name lookup
11.9 Member access control
11.9.1 General
11.9.2 Access specifiers
11.9.3 Accessibility of base classes and base class members
11.9.4 Friends
11.9.5 Protected member access
11.9.6 Access to virtual functions
11.9.7 Multiple access
11.9.8 Nested classes
11.10 Initialization
11.10.1 General
11.10.2 Explicit initialization
11.10.3 Initializing bases and members
11.10.4 Initialization by inherited constructor
11.10.5 Construction and destruction
11.10.6 Copy/move elision
11.11 Comparisons
11.11.1 Defaulted comparison operator functions
11.11.2 Equality operator
11.11.3 Three-way comparison
11.11.4 Secondary comparison operators
11.12 Free store
12 Overloading
12.1 Preamble
12.2 Overloadable declarations
12.3 Declaration matching
12.4 Overload resolution
12.4.1 General
12.4.2 Candidate functions and argument lists
12.4.2.1 General
12.4.2.2 Function call syntax
12.4.2.2.1 General
12.4.2.2.2 Call to named function
12.4.2.2.3 Call to object of class type
12.4.2.3 Operators in expressions
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
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
12.4.3 Viable functions
12.4.4 Best viable function
12.4.4.1 General
12.4.4.2 Implicit conversion sequences
12.4.4.2.1 General
12.4.4.2.2 Standard conversion sequences
12.4.4.2.3 User-defined conversion sequences
12.4.4.2.4 Ellipsis conversion sequences
12.4.4.2.5 Reference binding
12.4.4.2.6 List-initialization sequence
12.4.4.3 Ranking implicit conversion sequences
12.5 Address of overloaded function
12.6 Overloaded operators
12.6.1 General
12.6.2 Unary operators
12.6.3 Binary operators
12.6.3.1 General
12.6.3.2 Simple assignment
12.6.4 Function call
12.6.5 Subscripting
12.6.6 Class member access
12.6.7 Increment and decrement
12.7 Built-in operators
12.8 User-defined literals
13 Templates
13.1 Preamble
13.2 Template parameters
13.3 Names of template specializations
13.4 Template arguments
13.4.1 General
13.4.2 Template type arguments
13.4.3 Template non-type arguments
13.4.4 Template template arguments
13.5 Template constraints
13.5.1 General
13.5.2 Constraints
13.5.2.1 General
13.5.2.2 Logical operations
13.5.2.3 Atomic constraints
13.5.3 Constrained declarations
13.5.4 Constraint normalization
13.5.5 Partial ordering by constraints
13.6 Type equivalence
13.7 Template declarations
13.7.1 General
13.7.2 Class templates
13.7.2.1 General
13.7.2.2 Member functions of class templates
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
13.7.2.6 Enumeration members of class templates
13.7.3 Member templates
13.7.4 Variadic templates
13.7.5 Friends
13.7.6 Class template partial specializations
13.7.6.1 General
13.7.6.2 Matching of class template partial specializations
13.7.6.3 Partial ordering of class template specializations
13.7.6.4 Members of class template specializations
13.7.7 Function templates
13.7.7.1 General
13.7.7.2 Function template overloading
13.7.7.3 Partial ordering of function templates
13.7.8 Alias templates
13.7.9 Concept definitions
13.8 Name resolution
13.8.1 General
13.8.2 Locally declared names
13.8.3 Dependent names
13.8.3.1 General
13.8.3.2 Dependent types
13.8.3.3 Type-dependent expressions
13.8.3.4 Value-dependent expressions
13.8.3.5 Dependent template arguments
13.8.4 Non-dependent names
13.8.5 Dependent name resolution
13.8.5.1 Point of instantiation
13.8.5.2 Candidate functions
13.8.6 Friend names declared within a class template
13.9 Template instantiation and specialization
13.9.1 General
13.9.2 Implicit instantiation
13.9.3 Explicit instantiation
13.9.4 Explicit specialization
13.10 Function template specializations
13.10.1 General
13.10.2 Explicit template argument specification
13.10.3 Template argument deduction
13.10.3.1 General
13.10.3.2 Deducing template arguments from a function call
13.10.3.3 Deducing template arguments taking the address of a function template
13.10.3.4 Deducing conversion function template arguments
13.10.3.5 Deducing template arguments during partial ordering
13.10.3.6 Deducing template arguments from a type
13.10.3.7 Deducing template arguments from a function declaration
13.10.4 Overload resolution
14 Exception handling
14.1 Preamble
14.2 Throwing an exception
14.3 Constructors and destructors
14.4 Handling an exception
14.5 Exception specifications
14.6 Special functions
14.6.1 General
14.6.2 The std::terminate function
14.6.3 The std::uncaught_exceptions function
15 Preprocessing directives
15.1 Preamble
15.2 Conditional inclusion
15.3 Source file inclusion
15.4 Module directive
15.5 Header unit importation
15.6 Macro replacement
15.6.1 General
15.6.2 Argument substitution
15.6.3 The # operator
15.6.4 The ## operator
15.6.5 Rescanning and further replacement
15.6.6 Scope of macro definitions
15.7 Line control
15.8 Error directive
15.9 Pragma directive
15.10 Null directive
15.11 Predefined macro names
15.12 Pragma operator
16 Library introduction
16.1 General
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
16.3.2.4 Detailed specifications
16.3.2.5 C library
16.3.3 Other conventions
16.3.3.1 General
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
16.3.3.3.4 Bitmask types
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
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
16.4.2.4 Freestanding implementations
16.4.3 Using the library
16.4.3.1 Overview
16.4.3.2 Headers
16.4.3.3 Linkage
16.4.4 Requirements on types and expressions
16.4.4.1 General
16.4.4.2 Template argument requirements
16.4.4.3 Swappable requirements
16.4.4.4 Cpp17NullablePointer requirements
16.4.4.5 Cpp17Hash requirements
16.4.4.6 Cpp17Allocator requirements
16.4.4.6.1 General
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
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
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
16.4.5.7 Handler functions
16.4.5.8 Other functions
16.4.5.9 Function arguments
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
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
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
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
17 Language support library
17.1 General
17.2 Common definitions
17.2.1 Header synopsis
17.2.2 Header synopsis
17.2.3 Null pointers
17.2.4 Sizes, alignments, and offsets
17.2.5 byte type operations
17.3 Implementation properties
17.3.1 General
17.3.2 Header synopsis
17.3.3 Header synopsis
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
17.3.5.2 numeric_limits members
17.3.5.3 numeric_limits specializations
17.3.6 Header synopsis
17.3.7 Header synopsis
17.4 Integer types
17.4.1 General
17.4.2 Header synopsis
17.5 Startup and termination
17.6 Dynamic memory management
17.6.1 General
17.6.2 Header synopsis
17.6.3 Storage allocation and deallocation
17.6.3.1 General
17.6.3.2 Single-object forms
17.6.3.3 Array forms
17.6.3.4 Non-allocating forms
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
17.6.4.5 get_new_handler
17.6.5 Pointer optimization barrier
17.6.6 Hardware interference size
17.7 Type identification
17.7.1 General
17.7.2 Header synopsis
17.7.3 Class type_info
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
17.8.2.2 Creation
17.8.2.3 Observers
17.9 Exception handling
17.9.1 General
17.9.2 Header synopsis
17.9.3 Class exception
17.9.4 Class bad_exception
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
17.9.8 nested_exception
17.10 Initializer lists
17.10.1 General
17.10.2 Header synopsis
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
17.11.2 Comparison category types
17.11.2.1 Preamble
17.11.2.2 Class partial_ordering
17.11.2.3 Class weak_ordering
17.11.2.4 Class strong_ordering
17.11.3 Class template common_comparison_category
17.11.4 Concept three_way_comparable
17.11.5 Result of three-way comparison
17.11.6 Comparison algorithms
17.12 Coroutines
17.12.1 General
17.12.2 Header synopsis
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
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
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
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
17.13.3 Header synopsis
17.13.4 Header synopsis
17.13.5 Signal handlers
18 Concepts library
18.1 General
18.2 Equality preservation
18.3 Header synopsis
18.4 Language-related concepts
18.4.1 General
18.4.2 Concept same_as
18.4.3 Concept derived_from
18.4.4 Concept convertible_to
18.4.5 Concept common_reference_with
18.4.6 Concept common_with
18.4.7 Arithmetic concepts
18.4.8 Concept assignable_from
18.4.9 Concept swappable
18.4.10 Concept destructible
18.4.11 Concept constructible_from
18.4.12 Concept default_initializable
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
18.5.3 Concept equality_comparable
18.5.4 Concept totally_ordered
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
18.7.6 Concept equivalence_relation
18.7.7 Concept strict_weak_order
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
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
19.2.8 Class runtime_error
19.2.9 Class range_error
19.2.10 Class overflow_error
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
19.5 System error support
19.5.1 General
19.5.2 Header synopsis
19.5.3 Class error_category
19.5.3.1 Overview
19.5.3.2 Virtual members
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
19.5.4 Class error_code
19.5.4.1 Overview
19.5.4.2 Constructors
19.5.4.3 Modifiers
19.5.4.4 Observers
19.5.4.5 Non-member functions
19.5.5 Class error_condition
19.5.5.1 Overview
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
19.5.7 System error hash support
19.5.8 Class system_error
19.5.8.1 Overview
19.5.8.2 Members
20 General utilities library
20.1 General
20.2 Utility components
20.2.1 Header synopsis
20.2.2 swap
20.2.3 exchange
20.2.4 Forward/move helpers
20.2.5 Function template as_const
20.2.6 Function template declval
20.2.7 Integer comparison functions
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
20.4 Pairs
20.4.1 In general
20.4.2 Class template pair
20.4.3 Specialized algorithms
20.4.4 Tuple-like access to pair
20.4.5 Piecewise construction
20.5 Tuples
20.5.1 In general
20.5.2 Header synopsis
20.5.3 Class template tuple
20.5.3.1 Construction
20.5.3.2 Assignment
20.5.3.3 swap
20.5.4 Tuple creation functions
20.5.5 Calling a function with a tuple of arguments
20.5.6 Tuple helper classes
20.5.7 Element access
20.5.8 Relational operators
20.5.9 Tuple traits
20.5.10 Tuple specialized algorithms
20.6 Optional objects
20.6.1 In general
20.6.2 Header synopsis
20.6.3 Class template optional
20.6.3.1 General
20.6.3.2 Constructors
20.6.3.3 Destructor
20.6.3.4 Assignment
20.6.3.5 Swap
20.6.3.6 Observers
20.6.3.7 Modifiers
20.6.4 No-value state indicator
20.6.5 Class bad_optional_access
20.6.6 Relational operators
20.6.7 Comparison with nullopt
20.6.8 Comparison with T
20.6.9 Specialized algorithms
20.6.10 Hash support
20.7 Variants
20.7.1 In general
20.7.2 Header synopsis
20.7.3 Class template variant
20.7.3.1 General
20.7.3.2 Constructors
20.7.3.3 Destructor
20.7.3.4 Assignment
20.7.3.5 Modifiers
20.7.3.6 Value status
20.7.3.7 Swap
20.7.4 variant helper classes
20.7.5 Value access
20.7.6 Relational operators
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
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
20.8.4 Class any
20.8.4.1 General
20.8.4.2 Construction and destruction
20.8.4.3 Assignment
20.8.4.4 Modifiers
20.8.4.5 Observers
20.8.5 Non-member functions
20.9 Bitsets
20.9.1 Header synopsis
20.9.2 Class template bitset
20.9.2.1 General
20.9.2.2 Constructors
20.9.2.3 Members
20.9.3 bitset hash support
20.9.4 bitset operators
20.10 Memory
20.10.1 In general
20.10.2 Header synopsis
20.10.3 Pointer traits
20.10.3.1 General
20.10.3.2 Member types
20.10.3.3 Member functions
20.10.3.4 Optional members
20.10.4 Pointer conversion
20.10.5 Pointer safety
20.10.6 Pointer alignment
20.10.7 Allocator argument tag
20.10.8 uses_allocator
20.10.8.1 uses_allocator trait
20.10.8.2 Uses-allocator construction
20.10.9 Allocator traits
20.10.9.1 General
20.10.9.2 Member types
20.10.9.3 Static member functions
20.10.10 The default allocator
20.10.10.1 General
20.10.10.2 Members
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
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
20.11.1.3.2 Constructors
20.11.1.3.3 Destructor
20.11.1.3.4 Assignment
20.11.1.3.5 Observers
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
20.11.1.4.2 Constructors
20.11.1.4.3 Assignment
20.11.1.4.4 Observers
20.11.1.4.5 Modifiers
20.11.1.5 Creation
20.11.1.6 Specialized algorithms
20.11.1.7 I/O
20.11.2 Class bad_weak_ptr
20.11.3 Class template shared_ptr
20.11.3.1 General
20.11.3.2 Constructors
20.11.3.3 Destructor
20.11.3.4 Assignment
20.11.3.5 Modifiers
20.11.3.6 Observers
20.11.3.7 Creation
20.11.3.8 Comparison
20.11.3.9 Specialized algorithms
20.11.3.10 Casts
20.11.3.11 get_deleter
20.11.3.12 I/O
20.11.4 Class template weak_ptr
20.11.4.1 General
20.11.4.2 Constructors
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
20.11.5 Class template owner_less
20.11.6 Class template enable_shared_from_this
20.11.7 Smart pointer hash support
20.12 Memory resources
20.12.1 Header synopsis
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
20.12.2.4 Equality
20.12.3 Class template polymorphic_allocator
20.12.3.1 General
20.12.3.2 Constructors
20.12.3.3 Member functions
20.12.3.4 Equality
20.12.4 Access to program-wide memory_resource objects
20.12.5 Pool resource classes
20.12.5.1 Classes synchronized_pool_resource and unsynchronized_pool_resource
20.12.5.2 pool_options data members
20.12.5.3 Constructors and destructors
20.12.5.4 Members
20.12.6 Class monotonic_buffer_resource
20.12.6.1 General
20.12.6.2 Constructors and destructor
20.12.6.3 Members
20.13 Class template scoped_allocator_adaptor
20.13.1 Header synopsis
20.13.2 Member types
20.13.3 Constructors
20.13.4 Members
20.13.5 Operators
20.14 Function objects
20.14.1 General
20.14.2 Header synopsis
20.14.3 Definitions
20.14.4 Requirements
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
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
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
20.14.7.7 Class template negate
20.14.8 Comparisons
20.14.8.1 General
20.14.8.2 Class template equal_to
20.14.8.3 Class template not_equal_to
20.14.8.4 Class template greater
20.14.8.5 Class template less
20.14.8.6 Class template greater_equal
20.14.8.7 Class template less_equal
20.14.8.8 Class compare_three_way
20.14.9 Concept-constrained comparisons
20.14.10 Logical operations
20.14.10.1 General
20.14.10.2 Class template logical_and
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
20.14.11.3 Class template bit_or
20.14.11.4 Class template bit_xor
20.14.11.5 Class template bit_not
20.14.12 Class identity
20.14.13 Function template not_fn
20.14.14 Function template bind_front
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
20.14.15.5 Placeholders
20.14.16 Function template mem_fn
20.14.17 Polymorphic function wrappers
20.14.17.1 General
20.14.17.2 Class bad_function_call
20.14.17.3 Class template function
20.14.17.3.1 General
20.14.17.3.2 Constructors and destructor
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
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
20.14.18.3 Class template boyer_moore_searcher
20.14.18.4 Class template boyer_moore_horspool_searcher
20.14.19 Class template hash
20.15 Metaprogramming and type traits
20.15.1 General
20.15.2 Requirements
20.15.3 Header synopsis
20.15.4 Helper classes
20.15.5 Unary type traits
20.15.5.1 General
20.15.5.2 Primary type categories
20.15.5.3 Composite type traits
20.15.5.4 Type properties
20.15.6 Type property queries
20.15.7 Relationships between types
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
20.15.8.5 Array modifications
20.15.8.6 Pointer modifications
20.15.8.7 Other transformations
20.15.9 Logical operator traits
20.15.10 Member relationships
20.15.11 Constant evaluation context
20.16 Compile-time rational arithmetic
20.16.1 In general
20.16.2 Header synopsis
20.16.3 Class template ratio
20.16.4 Arithmetic on ratios
20.16.5 Comparison of ratios
20.16.6 SI types for ratio
20.17 Class type_index
20.17.1 Header synopsis
20.17.2 type_index overview
20.17.3 type_index members
20.17.4 Hash support
20.18 Execution policies
20.18.1 In general
20.18.2 Header synopsis
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
20.19 Primitive numeric conversions
20.19.1 Header synopsis
20.19.2 Primitive numeric output conversion
20.19.3 Primitive numeric input conversion
20.20 Formatting
20.20.1 Header synopsis
20.20.2 Format string
20.20.2.1 In general
20.20.2.2 Standard format specifiers
20.20.3 Error reporting
20.20.4 Formatting functions
20.20.5 Formatter
20.20.5.1 Formatter requirements
20.20.5.2 Formatter specializations
20.20.5.3 Class template basic_format_parse_context
20.20.5.4 Class template basic_format_context
20.20.6 Arguments
20.20.6.1 Class template basic_format_arg
20.20.6.2 Class template format-arg-store
20.20.6.3 Class template basic_format_args
20.20.7 Class format_error
21 Strings library
21.1 General
21.2 Character traits
21.2.1 General
21.2.2 Character traits requirements
21.2.3 Traits typedefs
21.2.4 char_traits specializations
21.2.4.1 General
21.2.4.2 struct char_traits
21.2.4.3 struct char_traits
21.2.4.4 struct char_traits
21.2.4.5 struct char_traits
21.2.4.6 struct char_traits
21.3 String classes
21.3.1 General
21.3.2 Header synopsis
21.3.3 Class template basic_string
21.3.3.1 General
21.3.3.2 General requirements
21.3.3.3 Constructors and assignment operators
21.3.3.4 Iterator support
21.3.3.5 Capacity
21.3.3.6 Element access
21.3.3.7 Modifiers
21.3.3.7.1 basic_string::operator+=
21.3.3.7.2 basic_string::append
21.3.3.7.3 basic_string::assign
21.3.3.7.4 basic_string::insert
21.3.3.7.5 basic_string::erase
21.3.3.7.6 basic_string::replace
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
21.3.3.8.2 Searching
21.3.3.8.3 basic_string::substr
21.3.3.8.4 basic_string::compare
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+
21.3.4.2 Non-member comparison operator functions
21.3.4.3 swap
21.3.4.4 Inserters and extractors
21.3.4.5 Erasure
21.3.5 Numeric conversions
21.3.6 Hash support
21.3.7 Suffix for basic_string literals
21.4 String view classes
21.4.1 General
21.4.2 Header synopsis
21.4.3 Class template basic_string_view
21.4.3.1 General
21.4.3.2 Construction and assignment
21.4.3.3 Iterator support
21.4.3.4 Capacity
21.4.3.5 Element access
21.4.3.6 Modifiers
21.4.3.7 String operations
21.4.3.8 Searching
21.4.4 Deduction guide
21.4.5 Non-member comparison functions
21.4.6 Inserters and extractors
21.4.7 Hash support
21.4.8 Suffix for basic_string_view literals
21.5 Null-terminated sequence utilities
21.5.1 Header synopsis
21.5.2 Header synopsis
21.5.3 Header synopsis
21.5.4 Header synopsis
21.5.5 Header synopsis
21.5.6 Multibyte / wide string and character conversion functions
22 Containers library
22.1 General
22.2 Container requirements
22.2.1 General container requirements
22.2.2 Container data races
22.2.3 Sequence containers
22.2.4 Node handles
22.2.4.1 Overview
22.2.4.2 Constructors, copy, and assignment
22.2.4.3 Destructor
22.2.4.4 Observers
22.2.4.5 Modifiers
22.2.5 Insert return type
22.2.6 Associative containers
22.2.6.1 General
22.2.6.2 Exception safety guarantees
22.2.7 Unordered associative containers
22.2.7.1 General
22.2.7.2 Exception safety guarantees
22.3 Sequence containers
22.3.1 In general
22.3.2 Header synopsis
22.3.3 Header synopsis
22.3.4 Header synopsis
22.3.5 Header synopsis
22.3.6 Header synopsis
22.3.7 Class template array
22.3.7.1 Overview
22.3.7.2 Constructors, copy, and assignment
22.3.7.3 Member functions
22.3.7.4 Specialized algorithms
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
22.3.8.2 Constructors, copy, and assignment
22.3.8.3 Capacity
22.3.8.4 Modifiers
22.3.8.5 Erasure
22.3.9 Class template forward_list
22.3.9.1 Overview
22.3.9.2 Constructors, copy, and assignment
22.3.9.3 Iterators
22.3.9.4 Element access
22.3.9.5 Modifiers
22.3.9.6 Operations
22.3.9.7 Erasure
22.3.10 Class template list
22.3.10.1 Overview
22.3.10.2 Constructors, copy, and assignment
22.3.10.3 Capacity
22.3.10.4 Modifiers
22.3.10.5 Operations
22.3.10.6 Erasure
22.3.11 Class template vector
22.3.11.1 Overview
22.3.11.2 Constructors
22.3.11.3 Capacity
22.3.11.4 Data
22.3.11.5 Modifiers
22.3.11.6 Erasure
22.3.12 Class vector
22.4 Associative containers
22.4.1 In general
22.4.2 Header synopsis
22.4.3 Header synopsis
22.4.4 Class template map
22.4.4.1 Overview
22.4.4.2 Constructors, copy, and assignment
22.4.4.3 Element access
22.4.4.4 Modifiers
22.4.4.5 Erasure
22.4.5 Class template multimap
22.4.5.1 Overview
22.4.5.2 Constructors
22.4.5.3 Modifiers
22.4.5.4 Erasure
22.4.6 Class template set
22.4.6.1 Overview
22.4.6.2 Constructors, copy, and assignment
22.4.6.3 Erasure
22.4.7 Class template multiset
22.4.7.1 Overview
22.4.7.2 Constructors
22.4.7.3 Erasure
22.5 Unordered associative containers
22.5.1 In general
22.5.2 Header synopsis
22.5.3 Header synopsis
22.5.4 Class template unordered_map
22.5.4.1 Overview
22.5.4.2 Constructors
22.5.4.3 Element access
22.5.4.4 Modifiers
22.5.4.5 Erasure
22.5.5 Class template unordered_multimap
22.5.5.1 Overview
22.5.5.2 Constructors
22.5.5.3 Modifiers
22.5.5.4 Erasure
22.5.6 Class template unordered_set
22.5.6.1 Overview
22.5.6.2 Constructors
22.5.6.3 Erasure
22.5.7 Class template unordered_multiset
22.5.7.1 Overview
22.5.7.2 Constructors
22.5.7.3 Erasure
22.6 Container adaptors
22.6.1 In general
22.6.2 Header synopsis
22.6.3 Header synopsis
22.6.4 Class template queue
22.6.4.1 Definition
22.6.4.2 Constructors
22.6.4.3 Constructors with allocators
22.6.4.4 Operators
22.6.4.5 Specialized algorithms
22.6.5 Class template priority_queue
22.6.5.1 Overview
22.6.5.2 Constructors
22.6.5.3 Constructors with allocators
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
22.6.6.3 Constructors
22.6.6.4 Constructors with allocators
22.6.6.5 Operators
22.6.6.6 Specialized algorithms
22.7 Views
22.7.1 General
22.7.2 Header synopsis
22.7.3 Class template span
22.7.3.1 Overview
22.7.3.2 Constructors, copy, and assignment
22.7.3.3 Deduction guides
22.7.3.4 Subviews
22.7.3.5 Observers
22.7.3.6 Element access
22.7.3.7 Iterator support
22.7.3.8 Views of object representation
23 Iterators library
23.1 General
23.2 Header synopsis
23.3 Iterator requirements
23.3.1 In general
23.3.2 Associated types
23.3.2.1 Incrementable traits
23.3.2.2 Indirectly readable traits
23.3.2.3 Iterator traits
23.3.3 Customization points
23.3.3.1 ranges::iter_move
23.3.3.2 ranges::iter_swap
23.3.4 Iterator concepts
23.3.4.1 General
23.3.4.2 Concept indirectly_readable
23.3.4.3 Concept indirectly_writable
23.3.4.4 Concept weakly_incrementable
23.3.4.5 Concept incrementable
23.3.4.6 Concept input_or_output_iterator
23.3.4.7 Concept sentinel_for
23.3.4.8 Concept sized_sentinel_for
23.3.4.9 Concept input_iterator
23.3.4.10 Concept output_iterator
23.3.4.11 Concept forward_iterator
23.3.4.12 Concept bidirectional_iterator
23.3.4.13 Concept random_access_iterator
23.3.4.14 Concept contiguous_iterator
23.3.5 C++17 iterator requirements
23.3.5.1 General
23.3.5.2 Cpp17Iterator
23.3.5.3 Input iterators
23.3.5.4 Output iterators
23.3.5.5 Forward iterators
23.3.5.6 Bidirectional iterators
23.3.5.7 Random access iterators
23.3.6 Indirect callable requirements
23.3.6.1 General
23.3.6.2 Indirect callables
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
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
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
23.4.3 Iterator operations
23.4.4 Range iterator operations
23.4.4.1 General
23.4.4.2 ranges::advance
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
23.5.1.2 Class template reverse_iterator
23.5.1.3 Requirements
23.5.1.4 Construction and assignment
23.5.1.5 Conversion
23.5.1.6 Element access
23.5.1.7 Navigation
23.5.1.8 Comparisons
23.5.1.9 Non-member functions
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
23.5.2.2.2 back_inserter
23.5.2.3 Class template front_insert_iterator
23.5.2.3.1 Operations
23.5.2.3.2 front_inserter
23.5.2.4 Class template insert_iterator
23.5.2.4.1 Operations
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
23.5.3.3 Requirements
23.5.3.4 Construction and assignment
23.5.3.5 Conversion
23.5.3.6 Element access
23.5.3.7 Navigation
23.5.3.8 Comparisons
23.5.3.9 Non-member functions
23.5.3.10 Class template move_sentinel
23.5.3.11 Operations
23.5.4 Common iterators
23.5.4.1 Class template common_iterator
23.5.4.2 Associated types
23.5.4.3 Constructors and conversions
23.5.4.4 Accessors
23.5.4.5 Navigation
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
23.5.6.2 Constructors and conversions
23.5.6.3 Accessors
23.5.6.4 Element access
23.5.6.5 Navigation
23.5.6.6 Comparisons
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
23.6.2.2 Constructors and destructor
23.6.2.3 Operations
23.6.3 Class template ostream_iterator
23.6.3.1 General
23.6.3.2 Constructors and destructor
23.6.3.3 Operations
23.6.4 Class template istreambuf_iterator
23.6.4.1 General
23.6.4.2 Class istreambuf_iterator::proxy
23.6.4.3 Constructors
23.6.4.4 Operations
23.6.5 Class template ostreambuf_iterator
23.6.5.1 General
23.6.5.2 Constructors
23.6.5.3 Operations
23.7 Range access
24 Ranges library
24.1 General
24.2 Header synopsis
24.3 Range access
24.3.1 General
24.3.2 ranges::begin
24.3.3 ranges::end
24.3.4 ranges::cbegin
24.3.5 ranges::cend
24.3.6 ranges::rbegin
24.3.7 ranges::rend
24.3.8 ranges::crbegin
24.3.9 ranges::crend
24.3.10 ranges::size
24.3.11 ranges::ssize
24.3.12 ranges::empty
24.3.13 ranges::data
24.3.14 ranges::cdata
24.4 Range requirements
24.4.1 General
24.4.2 Ranges
24.4.3 Sized ranges
24.4.4 Views
24.4.5 Other range refinements
24.5 Range utilities
24.5.1 General
24.5.2 Helper concepts
24.5.3 View interface
24.5.3.1 General
24.5.3.2 Members
24.5.4 Sub-ranges
24.5.4.1 General
24.5.4.2 Constructors and conversions
24.5.4.3 Accessors
24.5.5 Dangling iterator handling
24.6 Range factories
24.6.1 General
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
24.6.4 Iota view
24.6.4.1 Overview
24.6.4.2 Class template iota_view
24.6.4.3 Class iota_view::iterator
24.6.4.4 Class iota_view::sentinel
24.6.5 Istream view
24.6.5.1 Overview
24.6.5.2 Class template basic_istream_view
24.6.5.3 Class template basic_istream_view::iterator
24.7 Range adaptors
24.7.1 General
24.7.2 Range adaptor objects
24.7.3 Semiregular wrapper
24.7.4 All view
24.7.4.1 General
24.7.4.2 Class template ref_view
24.7.5 Filter view
24.7.5.1 Overview
24.7.5.2 Class template filter_view
24.7.5.3 Class filter_view::iterator
24.7.5.4 Class filter_view::sentinel
24.7.6 Transform view
24.7.6.1 Overview
24.7.6.2 Class template transform_view
24.7.6.3 Class template transform_view::iterator
24.7.6.4 Class template transform_view::sentinel
24.7.7 Take view
24.7.7.1 Overview
24.7.7.2 Class template take_view
24.7.7.3 Class template take_view::sentinel
24.7.8 Take while view
24.7.8.1 Overview
24.7.8.2 Class template take_while_view
24.7.8.3 Class template take_while_view::sentinel
24.7.9 Drop view
24.7.9.1 Overview
24.7.9.2 Class template drop_view
24.7.10 Drop while view
24.7.10.1 Overview
24.7.10.2 Class template drop_while_view
24.7.11 Join view
24.7.11.1 Overview
24.7.11.2 Class template join_view
24.7.11.3 Class template join_view::iterator
24.7.11.4 Class template join_view::sentinel
24.7.12 Split view
24.7.12.1 Overview
24.7.12.2 Class template split_view
24.7.12.3 Class template split_view::outer-iterator
24.7.12.4 Class split_view::outer-iterator::value_type
24.7.12.5 Class template split_view::inner-iterator
24.7.13 Counted view
24.7.14 Common view
24.7.14.1 Overview
24.7.14.2 Class template common_view
24.7.15 Reverse view
24.7.15.1 Overview
24.7.15.2 Class template reverse_view
24.7.16 Elements view
24.7.16.1 Overview
24.7.16.2 Class template elements_view
24.7.16.3 Class template elements_view::iterator
24.7.16.4 Class template elements_view::sentinel
25 Algorithms library
25.1 General
25.2 Algorithms requirements
25.3 Parallel algorithms
25.3.1 Preamble
25.3.2 Requirements on user-provided function objects
25.3.3 Effect of execution policies on algorithm execution
25.3.4 Parallel algorithm exceptions
25.3.5 ExecutionPolicy algorithm overloads
25.4 Header synopsis
25.5 Algorithm result types
25.6 Non-modifying sequence operations
25.6.1 All of
25.6.2 Any of
25.6.3 None of
25.6.4 For each
25.6.5 Find
25.6.6 Find end
25.6.7 Find first
25.6.8 Adjacent find
25.6.9 Count
25.6.10 Mismatch
25.6.11 Equal
25.6.12 Is permutation
25.6.13 Search
25.7 Mutating sequence operations
25.7.1 Copy
25.7.2 Move
25.7.3 Swap
25.7.4 Transform
25.7.5 Replace
25.7.6 Fill
25.7.7 Generate
25.7.8 Remove
25.7.9 Unique
25.7.10 Reverse
25.7.11 Rotate
25.7.12 Sample
25.7.13 Shuffle
25.7.14 Shift
25.8 Sorting and related operations
25.8.1 General
25.8.2 Sorting
25.8.2.1 sort
25.8.2.2 stable_sort
25.8.2.3 partial_sort
25.8.2.4 partial_sort_copy
25.8.2.5 is_sorted
25.8.3 Nth element
25.8.4 Binary search
25.8.4.1 General
25.8.4.2 lower_bound
25.8.4.3 upper_bound
25.8.4.4 equal_range
25.8.4.5 binary_search
25.8.5 Partitions
25.8.6 Merge
25.8.7 Set operations on sorted structures
25.8.7.1 General
25.8.7.2 includes
25.8.7.3 set_union
25.8.7.4 set_intersection
25.8.7.5 set_difference
25.8.7.6 set_symmetric_difference
25.8.8 Heap operations
25.8.8.1 General
25.8.8.2 push_heap
25.8.8.3 pop_heap
25.8.8.4 make_heap
25.8.8.5 sort_heap
25.8.8.6 is_heap
25.8.9 Minimum and maximum
25.8.10 Bounded value
25.8.11 Lexicographical comparison
25.8.12 Three-way comparison algorithms
25.8.13 Permutation generators
25.9 Header synopsis
25.10 Generalized numeric operations
25.10.1 General
25.10.2 Definitions
25.10.3 Accumulate
25.10.4 Reduce
25.10.5 Inner product
25.10.6 Transform reduce
25.10.7 Partial sum
25.10.8 Exclusive scan
25.10.9 Inclusive scan
25.10.10 Transform exclusive scan
25.10.11 Transform inclusive scan
25.10.12 Adjacent difference
25.10.13 Iota
25.10.14 Greatest common divisor
25.10.15 Least common multiple
25.10.16 Midpoint
25.11 Specialized algorithms
25.11.1 General
25.11.2 Special memory concepts
25.11.3 uninitialized_default_construct
25.11.4 uninitialized_value_construct
25.11.5 uninitialized_copy
25.11.6 uninitialized_move
25.11.7 uninitialized_fill
25.11.8 construct_at
25.11.9 destroy
25.12 C library algorithms
26 Numerics library
26.1 General
26.2 Numeric type requirements
26.3 The floating-point environment
26.3.1 Header synopsis
26.3.2 Threads
26.4 Complex numbers
26.4.1 General
26.4.2 Header synopsis
26.4.3 Class template complex
26.4.4 Specializations
26.4.5 Member functions
26.4.6 Member operators
26.4.7 Non-member operations
26.4.8 Value operations
26.4.9 Transcendentals
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
26.5.3 Function template bit_cast
26.5.4 Integral powers of 2
26.5.5 Rotating
26.5.6 Counting
26.5.7 Endian
26.6 Random number generation
26.6.1 General
26.6.2 Header synopsis
26.6.3 Requirements
26.6.3.1 General requirements
26.6.3.2 Seed sequence requirements
26.6.3.3 Uniform random bit generator requirements
26.6.3.4 Random number engine requirements
26.6.3.5 Random number engine adaptor requirements
26.6.3.6 Random number distribution requirements
26.6.4 Random number engine class templates
26.6.4.1 General
26.6.4.2 Class template linear_congruential_engine
26.6.4.3 Class template mersenne_twister_engine
26.6.4.4 Class template subtract_with_carry_engine
26.6.5 Random number engine adaptor class templates
26.6.5.1 In general
26.6.5.2 Class template discard_block_engine
26.6.5.3 Class template independent_bits_engine
26.6.5.4 Class template shuffle_order_engine
26.6.6 Engines and engine adaptors with predefined parameters
26.6.7 Class random_device
26.6.8 Utilities
26.6.8.1 Class seed_seq
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
26.6.9.2.2 Class template uniform_real_distribution
26.6.9.3 Bernoulli distributions
26.6.9.3.1 Class bernoulli_distribution
26.6.9.3.2 Class template binomial_distribution
26.6.9.3.3 Class template geometric_distribution
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
26.6.9.4.2 Class template exponential_distribution
26.6.9.4.3 Class template gamma_distribution
26.6.9.4.4 Class template weibull_distribution
26.6.9.4.5 Class template extreme_value_distribution
26.6.9.5 Normal distributions
26.6.9.5.1 Class template normal_distribution
26.6.9.5.2 Class template lognormal_distribution
26.6.9.5.3 Class template chi_squared_distribution
26.6.9.5.4 Class template cauchy_distribution
26.6.9.5.5 Class template fisher_f_distribution
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
26.6.9.6.2 Class template piecewise_constant_distribution
26.6.9.6.3 Class template piecewise_linear_distribution
26.6.10 Low-quality random number generation
26.7 Numeric arrays
26.7.1 Header synopsis
26.7.2 Class template valarray
26.7.2.1 Overview
26.7.2.2 Constructors
26.7.2.3 Assignment
26.7.2.4 Element access
26.7.2.5 Subset operations
26.7.2.6 Unary operators
26.7.2.7 Compound assignment
26.7.2.8 Member functions
26.7.3 valarray non-member operations
26.7.3.1 Binary operators
26.7.3.2 Logical operators
26.7.3.3 Transcendentals
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
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
26.7.6 The gslice class
26.7.6.1 Overview
26.7.6.2 Constructors
26.7.6.3 Access functions
26.7.7 Class template gslice_array
26.7.7.1 Overview
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
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
26.7.9.2 Assignment
26.7.9.3 Compound assignment
26.7.9.4 Fill function
26.7.10 valarray range access
26.8 Mathematical functions for floating-point types
26.8.1 Header synopsis
26.8.2 Absolute values
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
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
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
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
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
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
26.9 Numbers
26.9.1 Header synopsis
26.9.2 Mathematical constants
27 Time library
27.1 General
27.2 Header synopsis
27.3 Cpp17Clock requirements
27.4 Time-related traits
27.4.1 treat_as_floating_point
27.4.2 duration_values
27.4.3 Specializations of common_type
27.4.4 Class template is_clock
27.5 Class template duration
27.5.1 General
27.5.2 Constructors
27.5.3 Observer
27.5.4 Arithmetic
27.5.5 Special values
27.5.6 Non-member arithmetic
27.5.7 Comparisons
27.5.8 Conversions
27.5.9 Suffixes for duration literals
27.5.10 Algorithms
27.5.11 I/O
27.6 Class template time_point
27.6.1 General
27.6.2 Constructors
27.6.3 Observer
27.6.4 Arithmetic
27.6.5 Special values
27.6.6 Non-member arithmetic
27.6.7 Comparisons
27.6.8 Conversions
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
27.7.3 Class utc_clock
27.7.3.1 Overview
27.7.3.2 Member functions
27.7.3.3 Non-member functions
27.7.4 Class tai_clock
27.7.4.1 Overview
27.7.4.2 Member functions
27.7.4.3 Non-member functions
27.7.5 Class gps_clock
27.7.5.1 Overview
27.7.5.2 Member functions
27.7.5.3 Non-member functions
27.7.6 Type file_clock
27.7.6.1 Overview
27.7.6.2 Member functions
27.7.6.3 Non-member functions
27.7.7 Class steady_clock
27.7.8 Class high_resolution_clock
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
27.7.10.3 Conversions between system_clock and utc_clock
27.7.10.4 Conversions between system_clock and other clocks
27.7.10.5 Conversions between utc_clock and other clocks
27.7.10.6 Function template clock_cast
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
27.8.3.3 Non-member functions
27.8.4 Class month
27.8.4.1 Overview
27.8.4.2 Member functions
27.8.4.3 Non-member functions
27.8.5 Class year
27.8.5.1 Overview
27.8.5.2 Member functions
27.8.5.3 Non-member functions
27.8.6 Class weekday
27.8.6.1 Overview
27.8.6.2 Member functions
27.8.6.3 Non-member functions
27.8.7 Class weekday_indexed
27.8.7.1 Overview
27.8.7.2 Member functions
27.8.7.3 Non-member functions
27.8.8 Class weekday_last
27.8.8.1 Overview
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
27.8.9.3 Non-member functions
27.8.10 Class month_day_last
27.8.11 Class month_weekday
27.8.11.1 Overview
27.8.11.2 Member functions
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
27.8.13 Class year_month
27.8.13.1 Overview
27.8.13.2 Member functions
27.8.13.3 Non-member functions
27.8.14 Class year_month_day
27.8.14.1 Overview
27.8.14.2 Member functions
27.8.14.3 Non-member functions
27.8.15 Class year_month_day_last
27.8.15.1 Overview
27.8.15.2 Member functions
27.8.15.3 Non-member functions
27.8.16 Class year_month_weekday
27.8.16.1 Overview
27.8.16.2 Member functions
27.8.16.3 Non-member functions
27.8.17 Class year_month_weekday_last
27.8.17.1 Overview
27.8.17.2 Member functions
27.8.17.3 Non-member functions
27.8.18 Conventional syntax operators
27.9 Class template hh_mm_ss
27.9.1 Overview
27.9.2 Members
27.9.3 Non-members
27.10 12/24 hours functions
27.11 Time zones
27.11.1 In general
27.11.2 Time zone database
27.11.2.1 Class tzdb
27.11.2.2 Class tzdb_list
27.11.2.3 Time zone database access
27.11.2.4 Remote time zone database support
27.11.3 Exception classes
27.11.3.1 Class nonexistent_local_time
27.11.3.2 Class ambiguous_local_time
27.11.4 Information classes
27.11.4.1 Class sys_info
27.11.4.2 Class local_info
27.11.5 Class time_zone
27.11.5.1 Overview
27.11.5.2 Member functions
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
27.11.7.2 Constructors
27.11.7.3 Member functions
27.11.7.4 Non-member functions
27.11.8 Class leap_second
27.11.8.1 Overview
27.11.8.2 Member functions
27.11.8.3 Non-member functions
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
27.13 Parsing
27.14 Header synopsis
28 Localization library
28.1 General
28.2 Header synopsis
28.3 Locales
28.3.1 Class locale
28.3.1.1 General
28.3.1.2 Types
28.3.1.2.1 Type locale::category
28.3.1.2.2 Class locale::facet
28.3.1.2.3 Class locale::id
28.3.1.3 Constructors and destructor
28.3.1.4 Members
28.3.1.5 Operators
28.3.1.6 Static members
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
28.4.2 The ctype category
28.4.2.1 General
28.4.2.2 Class template ctype
28.4.2.2.1 General
28.4.2.2.2 ctype members
28.4.2.2.3 ctype virtual functions
28.4.2.3 Class template ctype_byname
28.4.2.4 ctype specialization
28.4.2.4.1 General
28.4.2.4.2 Destructor
28.4.2.4.3 Members
28.4.2.4.4 Static members
28.4.2.4.5 Virtual functions
28.4.2.5 Class template codecvt
28.4.2.5.1 General
28.4.2.5.2 Members
28.4.2.5.3 Virtual functions
28.4.2.6 Class template codecvt_byname
28.4.3 The numeric category
28.4.3.1 General
28.4.3.2 Class template num_get
28.4.3.2.1 General
28.4.3.2.2 Members
28.4.3.2.3 Virtual functions
28.4.3.3 Class template num_put
28.4.3.3.1 General
28.4.3.3.2 Members
28.4.3.3.3 Virtual functions
28.4.4 The numeric punctuation facet
28.4.4.1 Class template numpunct
28.4.4.1.1 General
28.4.4.1.2 Members
28.4.4.1.3 Virtual functions
28.4.4.2 Class template numpunct_byname
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
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
28.4.6.2.2 Members
28.4.6.2.3 Virtual functions
28.4.6.3 Class template time_get_byname
28.4.6.4 Class template time_put
28.4.6.4.1 Members
28.4.6.4.2 Virtual functions
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
28.4.7.2.1 Members
28.4.7.2.2 Virtual functions
28.4.7.3 Class template money_put
28.4.7.3.1 Members
28.4.7.3.2 Virtual functions
28.4.7.4 Class template moneypunct
28.4.7.4.1 General
28.4.7.4.2 Members
28.4.7.4.3 Virtual functions
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
28.4.8.2.2 Members
28.4.8.2.3 Virtual functions
28.4.8.3 Class template messages_byname
28.5 C library locales
28.5.1 Header synopsis
28.5.2 Data races
29 Input/output library
29.1 General
29.2 Iostreams requirements
29.2.1 Imbue limitations
29.2.2 Positioning type limitations
29.2.3 Thread safety
29.3 Forward declarations
29.3.1 Header synopsis
29.3.2 Overview
29.4 Standard iostream objects
29.4.1 Header synopsis
29.4.2 Overview
29.4.3 Narrow stream objects
29.4.4 Wide stream objects
29.5 Iostreams base classes
29.5.1 Header synopsis
29.5.2 Types
29.5.3 Class ios_base
29.5.3.1 General
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
29.5.3.2.6 Class ios_base::Init
29.5.3.3 State functions
29.5.3.4 Functions
29.5.3.5 Static members
29.5.3.6 Storage functions
29.5.3.7 Callbacks
29.5.3.8 Constructors and destructor
29.5.4 Class template fpos
29.5.4.1 Members
29.5.4.2 Requirements
29.5.5 Class template basic_ios
29.5.5.1 Overview
29.5.5.2 Constructors
29.5.5.3 Member functions
29.5.5.4 Flags functions
29.5.6 ios_base manipulators
29.5.6.1 fmtflags manipulators
29.5.6.2 adjustfield manipulators
29.5.6.3 basefield manipulators
29.5.6.4 floatfield manipulators
29.5.7 Error reporting
29.6 Stream buffers
29.6.1 Header synopsis
29.6.2 Stream buffer requirements
29.6.3 Class template basic_streambuf
29.6.3.1 General
29.6.3.2 Constructors
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
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
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
29.6.3.5.3 Get area
29.6.3.5.4 Putback
29.6.3.5.5 Put area
29.7 Formatting and manipulators
29.7.1 Header synopsis
29.7.2 Header synopsis
29.7.3 Header synopsis
29.7.4 Input streams
29.7.4.1 General
29.7.4.2 Class template basic_istream
29.7.4.2.1 General
29.7.4.2.2 Constructors
29.7.4.2.3 Assignment and swap
29.7.4.2.4 Class basic_istream::sentry
29.7.4.3 Formatted input functions
29.7.4.3.1 Common requirements
29.7.4.3.2 Arithmetic extractors
29.7.4.3.3 basic_istream::operator>>
29.7.4.4 Unformatted input functions
29.7.4.5 Standard basic_istream manipulators
29.7.4.6 Rvalue stream extraction
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
29.7.5 Output streams
29.7.5.1 General
29.7.5.2 Class template basic_ostream
29.7.5.2.1 General
29.7.5.2.2 Constructors
29.7.5.2.3 Assignment and swap
29.7.5.2.4 Class basic_ostream::sentry
29.7.5.2.5 Seek members
29.7.5.3 Formatted output functions
29.7.5.3.1 Common requirements
29.7.5.3.2 Arithmetic inserters
29.7.5.3.3 basic_ostream::operator<<
29.7.5.3.4 Character inserter function templates
29.7.5.4 Unformatted output functions
29.7.5.5 Standard manipulators
29.7.5.6 Rvalue stream insertion
29.7.6 Standard manipulators
29.7.7 Extended manipulators
29.7.8 Quoted manipulators
29.8 String-based streams
29.8.1 Header synopsis
29.8.2 Class template basic_stringbuf
29.8.2.1 General
29.8.2.2 Constructors
29.8.2.3 Assignment and swap
29.8.2.4 Member functions
29.8.2.5 Overridden virtual functions
29.8.3 Class template basic_istringstream
29.8.3.1 General
29.8.3.2 Constructors
29.8.3.3 Assignment and swap
29.8.3.4 Member functions
29.8.4 Class template basic_ostringstream
29.8.4.1 General
29.8.4.2 Constructors
29.8.4.3 Assignment and swap
29.8.4.4 Member functions
29.8.5 Class template basic_stringstream
29.8.5.1 General
29.8.5.2 Constructors
29.8.5.3 Assignment and swap
29.8.5.4 Member functions
29.9 File-based streams
29.9.1 Header synopsis
29.9.2 Class template basic_filebuf
29.9.2.1 General
29.9.2.2 Constructors
29.9.2.3 Assignment and swap
29.9.2.4 Member functions
29.9.2.5 Overridden virtual functions
29.9.3 Class template basic_ifstream
29.9.3.1 General
29.9.3.2 Constructors
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
29.9.4.2 Constructors
29.9.4.3 Assignment and swap
29.9.4.4 Member functions
29.9.5 Class template basic_fstream
29.9.5.1 General
29.9.5.2 Constructors
29.9.5.3 Assignment and swap
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
29.10.2.2 Construction and destruction
29.10.2.3 Assignment and swap
29.10.2.4 Member functions
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
29.10.3.2 Construction and destruction
29.10.3.3 Member functions
29.11 File systems
29.11.1 General
29.11.2 Conformance
29.11.2.1 General
29.11.2.2 POSIX conformance
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
29.11.5 Error reporting
29.11.6 Class path
29.11.6.1 General
29.11.6.2 Generic pathname format
29.11.6.3 Conversions
29.11.6.3.1 Argument format conversions
29.11.6.3.2 Type and encoding conversions
29.11.6.4 Requirements
29.11.6.5 Members
29.11.6.5.1 Constructors
29.11.6.5.2 Assignments
29.11.6.5.3 Appends
29.11.6.5.4 Concatenation
29.11.6.5.5 Modifiers
29.11.6.5.6 Native format observers
29.11.6.5.7 Generic format observers
29.11.6.5.8 Compare
29.11.6.5.9 Decomposition
29.11.6.5.10 Query
29.11.6.5.11 Generation
29.11.6.6 Iterators
29.11.6.7 Inserter and extractor
29.11.6.8 Non-member functions
29.11.7 Class filesystem_error
29.11.7.1 General
29.11.7.2 Members
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
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
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
29.11.10.2 Constructors
29.11.10.3 Modifiers
29.11.10.4 Observers
29.11.11 Class directory_iterator
29.11.11.1 General
29.11.11.2 Members
29.11.11.3 Non-member functions
29.11.12 Class recursive_directory_iterator
29.11.12.1 General
29.11.12.2 Members
29.11.12.3 Non-member functions
29.11.13 Filesystem operation functions
29.11.13.1 General
29.11.13.2 Absolute
29.11.13.3 Canonical
29.11.13.4 Copy
29.11.13.5 Copy file
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
29.11.13.10 Create hard link
29.11.13.11 Create symlink
29.11.13.12 Current path
29.11.13.13 Equivalent
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
29.11.13.19 Is directory
29.11.13.20 Is empty
29.11.13.21 Is fifo
29.11.13.22 Is other
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
29.11.13.27 Permissions
29.11.13.28 Proximate
29.11.13.29 Read symlink
29.11.13.30 Relative
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
29.11.13.36 Status
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
29.12 C library files
29.12.1 Header synopsis
29.12.2 Header synopsis
30 Regular expressions library
30.1 General
30.2 Definitions
30.3 Requirements
30.4 Header synopsis
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
30.5.4 Implementation-defined error_type
30.6 Class regex_error
30.7 Class template regex_traits
30.8 Class template basic_regex
30.8.1 General
30.8.2 Constructors
30.8.3 Assignment
30.8.4 Constant operations
30.8.5 Locale
30.8.6 Swap
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
30.10 Class template match_results
30.10.1 General
30.10.2 Constructors
30.10.3 State
30.10.4 Size
30.10.5 Element access
30.10.6 Formatting
30.10.7 Allocator
30.10.8 Swap
30.10.9 Non-member functions
30.11 Regular expression algorithms
30.11.1 Exceptions
30.11.2 regex_match
30.11.3 regex_search
30.11.4 regex_replace
30.12 Regular expression iterators
30.12.1 Class template regex_iterator
30.12.1.1 General
30.12.1.2 Constructors
30.12.1.3 Comparisons
30.12.1.4 Indirection
30.12.1.5 Increment
30.12.2 Class template regex_token_iterator
30.12.2.1 General
30.12.2.2 Constructors
30.12.2.3 Comparisons
30.12.2.4 Indirection
30.12.2.5 Increment
30.13 Modified ECMAScript regular expression grammar
31 Atomic operations library
31.1 General
31.2 Header synopsis
31.3 Type aliases
31.4 Order and consistency
31.5 Lock-free property
31.6 Waiting and notifying
31.7 Class template atomic_ref
31.7.1 General
31.7.2 Operations
31.7.3 Specializations for integral types
31.7.4 Specializations for floating-point types
31.7.5 Partial specialization for pointers
31.7.6 Member operators common to integers and pointers to objects
31.8 Class template atomic
31.8.1 General
31.8.2 Operations on atomic types
31.8.3 Specializations for integers
31.8.4 Specializations for floating-point types
31.8.5 Partial specialization for pointers
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
31.8.7.2 Partial specialization for shared_ptr
31.8.7.3 Partial specialization for weak_ptr
31.9 Non-member functions
31.10 Flag type and operations
31.11 Fences
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
32.2.5 Requirements for Cpp17Lockable types
32.2.5.1 In general
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
32.3.2 Header synopsis
32.3.3 Class stop_token
32.3.3.1 General
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
32.3.4.2 Constructors, copy, and assignment
32.3.4.3 Members
32.3.4.4 Non-member functions
32.3.5 Class template stop_callback
32.3.5.1 General
32.3.5.2 Constructors and destructor
32.4 Threads
32.4.1 General
32.4.2 Header synopsis
32.4.3 Class thread
32.4.3.1 General
32.4.3.2 Class thread::id
32.4.3.3 Constructors
32.4.3.4 Destructor
32.4.3.5 Assignment
32.4.3.6 Members
32.4.3.7 Static members
32.4.3.8 Specialized algorithms
32.4.4 Class jthread
32.4.4.1 General
32.4.4.2 Constructors, move, and assignment
32.4.4.3 Members
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
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
32.5.4.2.2 Class mutex
32.5.4.2.3 Class recursive_mutex
32.5.4.3 Timed mutex types
32.5.4.3.1 General
32.5.4.3.2 Class timed_mutex
32.5.4.3.3 Class recursive_timed_mutex
32.5.4.4 Shared mutex types
32.5.4.4.1 General
32.5.4.4.2 Class shared_mutex
32.5.4.5 Shared timed mutex types
32.5.4.5.1 General
32.5.4.5.2 Class shared_timed_mutex
32.5.5 Locks
32.5.5.1 General
32.5.5.2 Class template lock_guard
32.5.5.3 Class template scoped_lock
32.5.5.4 Class template unique_lock
32.5.5.4.1 General
32.5.5.4.2 Constructors, destructor, and assignment
32.5.5.4.3 Locking
32.5.5.4.4 Modifiers
32.5.5.4.5 Observers
32.5.5.5 Class template shared_lock
32.5.5.5.1 General
32.5.5.5.2 Constructors, destructor, and assignment
32.5.5.5.3 Locking
32.5.5.5.4 Modifiers
32.5.5.5.5 Observers
32.5.6 Generic locking algorithms
32.5.7 Call once
32.5.7.1 Struct once_flag
32.5.7.2 Function call_once
32.6 Condition variables
32.6.1 General
32.6.2 Header synopsis
32.6.3 Non-member functions
32.6.4 Class condition_variable
32.6.5 Class condition_variable_any
32.6.5.1 General
32.6.5.2 Noninterruptible waits
32.6.5.3 Interruptible waits
32.7 Semaphore
32.7.1 General
32.7.2 Header synopsis
32.7.3 Class template counting_semaphore
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
32.8.3 Barriers
32.8.3.1 General
32.8.3.2 Header synopsis
32.8.3.3 Class template barrier
32.9 Futures
32.9.1 Overview
32.9.2 Header synopsis
32.9.3 Error handling
32.9.4 Class future_error
32.9.5 Shared state
32.9.6 Class template promise
32.9.7 Class template future
32.9.8 Class template shared_future
32.9.9 Function template async
32.9.10 Class template packaged_task
32.9.10.1 General
32.9.10.2 Member functions
32.9.10.3 Globals
A Grammar summary
A.1 General
A.2 Keywords
A.3 Lexical conventions
A.4 Basics
A.5 Expressions
A.6 Statements
A.7 Declarations
A.8 Modules
A.9 Classes
A.10 Overloading
A.11 Templates
A.12 Exception handling
A.13 Preprocessing directives
B Implementation quantities
C Compatibility
C.1 C++ and ISO C++ 2017
C.1.1 General
C.1.2 Clause 5: lexical conventions
C.1.3 Clause 6: basics
C.1.4 Clause 7: expressions
C.1.5 Clause 9: declarations
C.1.6 Clause 11: classes
C.1.7 Clause 12: overloading
C.1.8 Clause 13: templates
C.1.9 Clause 14: exception handling
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
C.1.14 Clause 29: input/output library
C.1.15 Annex D: compatibility features
C.2 C++ and ISO C++ 2014
C.2.1 General
C.2.2 Clause 5: lexical conventions
C.2.3 Clause 7: expressions
C.2.4 Clause 9: declarations
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
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
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
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
C.4.3 Clause 7: expressions
C.4.4 Clause 9: declarations
C.4.5 Clause 11: classes
C.4.6 Clause 13: templates
C.4.7 Clause 16: library introduction
C.4.8 Clause 17: language support library
C.4.9 Clause 19: diagnostics library
C.4.10 Clause 20: general utilities library
C.4.11 Clause 21: strings library
C.4.12 Clause 22: containers library
C.4.13 Clause 25: algorithms library
C.4.14 Clause 26: numerics library
C.4.15 Clause 29: input/output library
C.5 C++ and ISO C
C.5.1 General
C.5.2 Clause 5: lexical conventions
C.5.3 Clause 6: basics
C.5.4 Clause 7: expressions
C.5.5 Clause 8: statements
C.5.6 Clause 9: declarations
C.5.7 Clause 11: classes
C.5.8 Clause 15: preprocessing directives
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
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
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
D.6 Deprecated volatile types
D.7 Redeclaration of static constexpr data members
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
D.10.5 Header synopsis
D.10.6 Header synopsis
D.10.7 Other C headers
D.11 Requires paragraph
D.12 Relational operators
D.13 char* streams
D.13.1 Header synopsis
D.13.2 Class strstreambuf
D.13.2.1 General
D.13.2.2 strstreambuf constructors
D.13.2.3 Member functions
D.13.2.4 strstreambuf overridden virtual functions
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
D.13.4.2 ostrstream constructors
D.13.4.3 Member functions
D.13.5 Class strstream
D.13.5.1 General
D.13.5.2 strstream constructors
D.13.5.3 strstream destructor
D.13.5.4 strstream operations
D.14 Deprecated type traits
D.15 Tuple
D.16 Variant
D.17 Deprecated iterator class template
D.18 Deprecated move_iterator access
D.19 Deprecated shared_ptr atomic access
D.20 Deprecated basic_string capacity
D.21 Deprecated standard code conversion facets
D.21.1 General
D.21.2 Header synopsis
D.21.3 Requirements
D.22 Deprecated convenience conversion interfaces
D.22.1 General
D.22.2 Class template wstring_convert
D.22.3 Class template wbuffer_convert
D.23 Deprecated locale category facets
D.24 Deprecated filesystem path factory functions
D.25 Deprecated atomic operations
D.25.1 General
D.25.2 Volatile access
D.25.3 Non-member functions
D.25.4 Operations on atomic types
D.25.5 Flag type and operations
Bibliography
Cross references
Cross references from ISO C++ 2017
Index
Symbols
Numbers
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Index of grammar productions
Index of library headers
Index of library names
Symbols
Numbers
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Index of library concepts
Index of implementation-defined behavior
Blank Page