Draft C++ Standard: Contents (original) (raw)

Working Draft

Programming Languages — C++

(Generated on 2024-02-11 from the LaTeX sources by cxxdraft-htmlgen. This is not an ISO publication.)

Note: this is an early draft. It's known to be incomplet and incorrekt, and it has lots of bad formatting.

1 Scope [intro.scope][intro.scope]

2 Normative references [intro.refs][intro.refs]

3 Terms and definitions [intro.defs][intro.defs]

4 General principles [intro][intro]

4.1 Implementation compliance [intro.compliance]

4.1.1 General [intro.compliance.general]

4.1.2 Abstract machine [intro.abstract]

4.2 Structure of this document [intro.structure]

4.3 Syntax notation [syntax]

5 Lexical conventions [lex][lex]

5.1 Separate translation [lex.separate]

5.2 Phases of translation [lex.phases]

5.3 Character sets [lex.charset]

5.4 Preprocessing tokens [lex.pptoken]

5.5 Alternative tokens [lex.digraph]

5.6 Tokens [lex.token]

5.7 Comments [lex.comment]

5.8 Header names [lex.header]

5.9 Preprocessing numbers [lex.ppnumber]

5.10 Identifiers [lex.name]

5.11 Keywords [lex.key]

5.12 Operators and punctuators [lex.operators]

5.13 Literals [lex.literal]

5.13.1 Kinds of literals [lex.literal.kinds]

5.13.2 Integer literals [lex.icon]

5.13.3 Character literals [lex.ccon]

5.13.4 Floating-point literals [lex.fcon]

5.13.5 String literals [lex.string]

5.13.6 Boolean literals [lex.bool]

5.13.7 Pointer literals [lex.nullptr]

5.13.8 User-defined literals [lex.ext]

6 Basics [basic][basic]

6.1 Preamble [basic.pre]

6.2 Declarations and definitions [basic.def]

6.3 One-definition rule [basic.def.odr]

6.4 Scope [basic.scope]

6.4.1 General [basic.scope.scope]

6.4.2 Point of declaration [basic.scope.pdecl]

6.4.3 Block scope [basic.scope.block]

6.4.4 Function parameter scope [basic.scope.param]

6.4.5 Lambda scope [basic.scope.lambda]

6.4.6 Namespace scope [basic.scope.namespace]

6.4.7 Class scope [basic.scope.class]

6.4.8 Enumeration scope [basic.scope.enum]

6.4.9 Template parameter scope [basic.scope.temp]

6.5 Name lookup [basic.lookup]

6.5.1 General [basic.lookup.general]

6.5.2 Member name lookup [class.member.lookup]

6.5.3 Unqualified name lookup [basic.lookup.unqual]

6.5.4 Argument-dependent name lookup [basic.lookup.argdep]

6.5.5 Qualified name lookup [basic.lookup.qual]

6.5.5.1 General [basic.lookup.qual.general]

6.5.5.2 Class members [class.qual]

6.5.5.3 Namespace members [namespace.qual]

6.5.6 Elaborated type specifiers [basic.lookup.elab]

6.5.7 Using-directives and namespace aliases [basic.lookup.udir]

6.7 Memory and objects [basic.memobj]

6.7.1 Memory model [intro.memory]

6.7.2 Object model [intro.object]

6.7.3 Lifetime [basic.life]

6.7.4 Indeterminate values [basic.indet]

6.7.5 Storage duration [basic.stc]

6.7.5.1 General [basic.stc.general]

6.7.5.2 Static storage duration [basic.stc.static]

6.7.5.3 Thread storage duration [basic.stc.thread]

6.7.5.4 Automatic storage duration [basic.stc.auto]

6.7.5.5 Dynamic storage duration [basic.stc.dynamic]

6.7.5.5.1 General [basic.stc.dynamic.general]

6.7.5.5.2 Allocation functions [basic.stc.dynamic.allocation]

6.7.5.5.3 Deallocation functions [basic.stc.dynamic.deallocation]

6.7.5.6 Duration of subobjects [basic.stc.inherit]

6.7.6 Alignment [basic.align]

6.7.7 Temporary objects [class.temporary]

6.8 Types [basic.types]

6.8.1 General [basic.types.general]

6.8.2 Fundamental types [basic.fundamental]

6.8.3 Optional extended floating-point types [basic.extended.fp]

6.8.4 Compound types [basic.compound]

6.8.5 CV-qualifiers [basic.type.qualifier]

6.8.6 Conversion ranks [conv.rank]

6.9 Program execution [basic.exec]

6.9.1 Sequential execution [intro.execution]

6.9.2 Multi-threaded executions and data races [intro.multithread]

6.9.2.1 General [intro.multithread.general]

6.9.2.2 Data races [intro.races]

6.9.2.3 Forward progress [intro.progress]

6.9.3 Start and termination [basic.start]

6.9.3.1 main function [basic.start.main]

6.9.3.2 Static initialization [basic.start.static]

6.9.3.3 Dynamic initialization of non-block variables [basic.start.dynamic]

6.9.3.4 Termination [basic.start.term]

7 Expressions [expr][expr]

7.1 Preamble [expr.pre]

7.2 Properties of expressions [expr.prop]

7.2.1 Value category [basic.lval]

7.2.2 Type [expr.type]

7.2.3 Context dependence [expr.context]

7.3 Standard conversions [conv]

7.3.1 General [conv.general]

7.3.2 Lvalue-to-rvalue conversion [conv.lval]

7.3.3 Array-to-pointer conversion [conv.array]

7.3.4 Function-to-pointer conversion [conv.func]

7.3.5 Temporary materialization conversion [conv.rval]

7.3.6 Qualification conversions [conv.qual]

7.3.7 Integral promotions [conv.prom]

7.3.8 Floating-point promotion [conv.fpprom]

7.3.9 Integral conversions [conv.integral]

7.3.10 Floating-point conversions [conv.double]

7.3.11 Floating-integral conversions [conv.fpint]

7.3.12 Pointer conversions [conv.ptr]

7.3.13 Pointer-to-member conversions [conv.mem]

7.3.14 Function pointer conversions [conv.fctptr]

7.3.15 Boolean conversions [conv.bool]

7.4 Usual arithmetic conversions [expr.arith.conv]

7.5 Primary expressions [expr.prim]

7.5.1 Literals [expr.prim.literal]

7.5.2 This [expr.prim.this]

7.5.3 Parentheses [expr.prim.paren]

7.5.4 Names [expr.prim.id]

7.5.4.1 General [expr.prim.id.general]

7.5.4.2 Unqualified names [expr.prim.id.unqual]

7.5.4.3 Qualified names [expr.prim.id.qual]

7.5.4.4 Destruction [expr.prim.id.dtor]

7.5.5 Lambda expressions [expr.prim.lambda]

7.5.5.1 General [expr.prim.lambda.general]

7.5.5.2 Closure types [expr.prim.lambda.closure]

7.5.5.3 Captures [expr.prim.lambda.capture]

7.5.6 Fold expressions [expr.prim.fold]

7.5.7 Requires expressions [expr.prim.req]

7.5.7.1 General [expr.prim.req.general]

7.5.7.2 Simple requirements [expr.prim.req.simple]

7.5.7.3 Type requirements [expr.prim.req.type]

7.5.7.4 Compound requirements [expr.prim.req.compound]

7.5.7.5 Nested requirements [expr.prim.req.nested]

7.6 Compound expressions [expr.compound]

7.6.1 Postfix expressions [expr.post]

7.6.1.1 General [expr.post.general]

7.6.1.2 Subscripting [expr.sub]

7.6.1.3 Function call [expr.call]

7.6.1.4 Explicit type conversion (functional notation) [expr.type.conv]

7.6.1.5 Class member access [expr.ref]

7.6.1.6 Increment and decrement [expr.post.incr]

7.6.1.7 Dynamic cast [expr.dynamic.cast]

7.6.1.8 Type identification [expr.typeid]

7.6.1.9 Static cast [expr.static.cast]

7.6.1.10 Reinterpret cast [expr.reinterpret.cast]

7.6.1.11 Const cast [expr.const.cast]

7.6.2 Unary expressions [expr.unary]

7.6.2.1 General [expr.unary.general]

7.6.2.2 Unary operators [expr.unary.op]

7.6.2.3 Increment and decrement [expr.pre.incr]

7.6.2.4 Await [expr.await]

7.6.2.5 Sizeof [expr.sizeof]

7.6.2.6 Alignof [expr.alignof]

7.6.2.7 noexcept operator [expr.unary.noexcept]

7.6.2.8 New [expr.new]

7.6.2.9 Delete [expr.delete]

7.6.3 Explicit type conversion (cast notation) [expr.cast]

7.6.4 Pointer-to-member operators [expr.mptr.oper]

7.6.5 Multiplicative operators [expr.mul]

7.6.6 Additive operators [expr.add]

7.6.7 Shift operators [expr.shift]

7.6.8 Three-way comparison operator [expr.spaceship]

7.6.9 Relational operators [expr.rel]

7.6.10 Equality operators [expr.eq]

7.6.11 Bitwise AND operator [expr.bit.and]

7.6.12 Bitwise exclusive OR operator [expr.xor]

7.6.13 Bitwise inclusive OR operator [expr.or]

7.6.14 Logical AND operator [expr.log.and]

7.6.15 Logical OR operator [expr.log.or]

7.6.16 Conditional operator [expr.cond]

7.6.17 Yielding a value [expr.yield]

7.6.18 Throwing an exception [expr.throw]

7.6.19 Assignment and compound assignment operators [expr.ass]

7.6.20 Comma operator [expr.comma]

7.7 Constant expressions [expr.const]

8 Statements [stmt.stmt][stmt.stmt]

8.1 Preamble [stmt.pre]

8.2 Label [stmt.label]

8.3 Expression statement [stmt.expr]

8.4 Compound statement or block [stmt.block]

8.5 Selection statements [stmt.select]

8.5.1 General [stmt.select.general]

8.5.2 The if statement [stmt.if]

8.5.3 The switch statement [stmt.switch]

8.6 Iteration statements [stmt.iter]

8.6.1 General [stmt.iter.general]

8.6.2 The while statement [stmt.while]

8.6.3 The do statement [stmt.do]

8.6.4 The for statement [stmt.for]

8.6.5 The range-based for statement [stmt.ranged]

8.7 Jump statements [stmt.jump]

8.7.1 General [stmt.jump.general]

8.7.2 The break statement [stmt.break]

8.7.3 The continue statement [stmt.cont]

8.7.4 The return statement [stmt.return]

8.7.5 The co_return statement [stmt.return.coroutine]

8.7.6 The goto statement [stmt.goto]

8.8 Declaration statement [stmt.dcl]

8.9 Ambiguity resolution [stmt.ambig]

9 Declarations [dcl.dcl][dcl.dcl]

9.1 Preamble [dcl.pre]

9.2 Specifiers [dcl.spec]

9.2.1 General [dcl.spec.general]

9.2.2 Storage class specifiers [dcl.stc]

9.2.3 Function specifiers [dcl.fct.spec]

9.2.4 The typedef specifier [dcl.typedef]

9.2.5 The friend specifier [dcl.friend]

9.2.6 The constexpr and consteval specifiers [dcl.constexpr]

9.2.7 The constinit specifier [dcl.constinit]

9.2.8 The inline specifier [dcl.inline]

9.2.9 Type specifiers [dcl.type]

9.2.9.1 General [dcl.type.general]

9.2.9.2 The cv-qualifier s [dcl.type.cv]

9.2.9.3 Simple type specifiers [dcl.type.simple]

9.2.9.4 Elaborated type specifiers [dcl.type.elab]

9.2.9.5 Decltype specifiers [dcl.type.decltype]

9.2.9.6 Placeholder type specifiers [dcl.spec.auto]

9.2.9.6.1 General [dcl.spec.auto.general]

9.2.9.6.2 Placeholder type deduction [dcl.type.auto.deduct]

9.2.9.7 Deduced class template specialization types [dcl.type.class.deduct]

9.3 Declarators [dcl.decl]

9.3.1 General [dcl.decl.general]

9.3.2 Type names [dcl.name]

9.3.3 Ambiguity resolution [dcl.ambig.res]

9.3.4 Meaning of declarators [dcl.meaning]

9.3.4.1 General [dcl.meaning.general]

9.3.4.2 Pointers [dcl.ptr]

9.3.4.3 References [dcl.ref]

9.3.4.4 Pointers to members [dcl.mptr]

9.3.4.5 Arrays [dcl.array]

9.3.4.6 Functions [dcl.fct]

9.3.4.7 Default arguments [dcl.fct.default]

9.4 Initializers [dcl.init]

9.4.1 General [dcl.init.general]

9.4.2 Aggregates [dcl.init.aggr]

9.4.3 Character arrays [dcl.init.string]

9.4.4 References [dcl.init.ref]

9.4.5 List-initialization [dcl.init.list]

9.5 Function definitions [dcl.fct.def]

9.5.1 In general [dcl.fct.def.general]

9.5.2 Explicitly-defaulted functions [dcl.fct.def.default]

9.5.3 Deleted definitions [dcl.fct.def.delete]

9.5.4 Coroutine definitions [dcl.fct.def.coroutine]

9.6 Structured binding declarations [dcl.struct.bind]

9.7 Enumerations [enum]

9.7.1 Enumeration declarations [dcl.enum]

9.7.2 The using enum declaration [enum.udecl]

9.8 Namespaces [basic.namespace]

9.8.1 General [basic.namespace.general]

9.8.2 Namespace definition [namespace.def]

9.8.2.1 General [namespace.def.general]

9.8.2.2 Unnamed namespaces [namespace.unnamed]

9.8.3 Namespace alias [namespace.alias]

9.8.4 Using namespace directive [namespace.udir]

9.9 The using declaration [namespace.udecl]

9.10 The asm declaration [dcl.asm]

9.12 Attributes [dcl.attr]

9.12.1 Attribute syntax and semantics [dcl.attr.grammar]

9.12.2 Alignment specifier [dcl.align]

9.12.3 Assumption attribute [dcl.attr.assume]

9.12.4 Carries dependency attribute [dcl.attr.depend]

9.12.5 Deprecated attribute [dcl.attr.deprecated]

9.12.6 Fallthrough attribute [dcl.attr.fallthrough]

9.12.7 Likelihood attributes [dcl.attr.likelihood]

9.12.8 Maybe unused attribute [dcl.attr.unused]

9.12.9 Nodiscard attribute [dcl.attr.nodiscard]

9.12.10 Noreturn attribute [dcl.attr.noreturn]

9.12.11 No unique address attribute [dcl.attr.nouniqueaddr]

10 Modules [module][module]

10.1 Module units and purviews [module.unit]

10.2 Export declaration [module.interface]

10.3 Import declaration [module.import]

10.4 Global module fragment [module.global.frag]

10.5 Private module fragment [module.private.frag]

10.6 Instantiation context [module.context]

10.7 Reachability [module.reach]

11 Classes [class][class]

11.1 Preamble [class.pre]

11.2 Properties of classes [class.prop]

11.3 Class names [class.name]

11.4 Class members [class.mem]

11.4.1 General [class.mem.general]

11.4.2 Member functions [class.mfct]

11.4.3 Non-static member functions [class.mfct.non.static]

11.4.4 Special member functions [special]

11.4.5 Constructors [class.ctor]

11.4.5.1 General [class.ctor.general]

11.4.5.2 Default constructors [class.default.ctor]

11.4.5.3 Copy/move constructors [class.copy.ctor]

11.4.6 Copy/move assignment operator [class.copy.assign]

11.4.7 Destructors [class.dtor]

11.4.8 Conversions [class.conv]

11.4.8.1 General [class.conv.general]

11.4.8.2 Conversion by constructor [class.conv.ctor]

11.4.8.3 Conversion functions [class.conv.fct]

11.4.9 Static members [class.static]

11.4.9.1 General [class.static.general]

11.4.9.2 Static member functions [class.static.mfct]

11.4.9.3 Static data members [class.static.data]

11.4.10 Bit-fields [class.bit]

11.4.11 Allocation and deallocation functions [class.free]

11.4.12 Nested class declarations [class.nest]

11.5 Unions [class.union]

11.5.1 General [class.union.general]

11.5.2 Anonymous unions [class.union.anon]

11.6 Local class declarations [class.local]

11.7 Derived classes [class.derived]

11.7.1 General [class.derived.general]

11.7.2 Multiple base classes [class.mi]

11.7.3 Virtual functions [class.virtual]

11.7.4 Abstract classes [class.abstract]

11.8 Member access control [class.access]

11.8.1 General [class.access.general]

11.8.2 Access specifiers [class.access.spec]

11.8.3 Accessibility of base classes and base class members [class.access.base]

11.8.4 Friends [class.friend]

11.8.5 Protected member access [class.protected]

11.8.6 Access to virtual functions [class.access.virt]

11.8.7 Multiple access [class.paths]

11.8.8 Nested classes [class.access.nest]

11.9 Initialization [class.init]

11.9.1 General [class.init.general]

11.9.2 Explicit initialization [class.expl.init]

11.9.3 Initializing bases and members [class.base.init]

11.9.4 Initialization by inherited constructor [class.inhctor.init]

11.9.5 Construction and destruction [class.cdtor]

11.9.6 Copy/move elision [class.copy.elision]

11.10 Comparisons [class.compare]

11.10.1 Defaulted comparison operator functions [class.compare.default]

11.10.2 Equality operator [class.eq]

11.10.3 Three-way comparison [class.spaceship]

11.10.4 Secondary comparison operators [class.compare.secondary]

12 Overloading [over][over]

12.1 Preamble [over.pre]

12.2 Overload resolution [over.match]

12.2.1 General [over.match.general]

12.2.2 Candidate functions and argument lists [over.match.funcs]

12.2.2.1 General [over.match.funcs.general]

12.2.2.2 Function call syntax [over.match.call]

12.2.2.2.1 General [over.match.call.general]

12.2.2.2.2 Call to named function [over.call.func]

12.2.2.2.3 Call to object of class type [over.call.object]

12.2.2.3 Operators in expressions [over.match.oper]

12.2.2.4 Initialization by constructor [over.match.ctor]

12.2.2.5 Copy-initialization of class by user-defined conversion [over.match.copy]

12.2.2.6 Initialization by conversion function [over.match.conv]

12.2.2.7 Initialization by conversion function for direct reference binding [over.match.ref]

12.2.2.8 Initialization by list-initialization [over.match.list]

12.2.2.9 Class template argument deduction [over.match.class.deduct]

12.2.3 Viable functions [over.match.viable]

12.2.4 Best viable function [over.match.best]

12.2.4.1 General [over.match.best.general]

12.2.4.2 Implicit conversion sequences [over.best.ics]

12.2.4.2.1 General [over.best.ics.general]

12.2.4.2.2 Standard conversion sequences [over.ics.scs]

12.2.4.2.3 User-defined conversion sequences [over.ics.user]

12.2.4.2.4 Ellipsis conversion sequences [over.ics.ellipsis]

12.2.4.2.5 Reference binding [over.ics.ref]

12.2.4.2.6 List-initialization sequence [over.ics.list]

12.2.4.3 Ranking implicit conversion sequences [over.ics.rank]

12.3 Address of an overload set [over.over]

12.4 Overloaded operators [over.oper]

12.4.1 General [over.oper.general]

12.4.2 Unary operators [over.unary]

12.4.3 Binary operators [over.binary]

12.4.3.1 General [over.binary.general]

12.4.3.2 Simple assignment [over.ass]

12.4.4 Function call [over.call]

12.4.5 Subscripting [over.sub]

12.4.6 Class member access [over.ref]

12.4.7 Increment and decrement [over.inc]

12.5 Built-in operators [over.built]

12.6 User-defined literals [over.literal]

13 Templates [temp][temp]

13.1 Preamble [temp.pre]

13.2 Template parameters [temp.param]

13.3 Names of template specializations [temp.names]

13.4 Template arguments [temp.arg]

13.4.1 General [temp.arg.general]

13.4.2 Template type arguments [temp.arg.type]

13.4.3 Template non-type arguments [temp.arg.nontype]

13.4.4 Template template arguments [temp.arg.template]

13.5 Template constraints [temp.constr]

13.5.1 General [temp.constr.general]

13.5.2 Constraints [temp.constr.constr]

13.5.2.1 General [temp.constr.constr.general]

13.5.2.2 Logical operations [temp.constr.op]

13.5.2.3 Atomic constraints [temp.constr.atomic]

13.5.3 Constrained declarations [temp.constr.decl]

13.5.4 Constraint normalization [temp.constr.normal]

13.5.5 Partial ordering by constraints [temp.constr.order]

13.6 Type equivalence [temp.type]

13.7 Template declarations [temp.decls]

13.7.1 General [temp.decls.general]

13.7.2 Class templates [temp.class]

13.7.2.1 General [temp.class.general]

13.7.2.2 Member functions of class templates [temp.mem.func]

13.7.2.3 Deduction guides [temp.deduct.guide]

13.7.2.4 Member classes of class templates [temp.mem.class]

13.7.2.5 Static data members of class templates [temp.static]

13.7.2.6 Enumeration members of class templates [temp.mem.enum]

13.7.3 Member templates [temp.mem]

13.7.4 Variadic templates [temp.variadic]

13.7.5 Friends [temp.friend]

13.7.6 Partial specialization [temp.spec.partial]

13.7.6.1 General [temp.spec.partial.general]

13.7.6.2 Matching of partial specializations [temp.spec.partial.match]

13.7.6.3 Partial ordering of partial specializations [temp.spec.partial.order]

13.7.6.4 Members of class template partial specializations [temp.spec.partial.member]

13.7.7 Function templates [temp.fct]

13.7.7.1 General [temp.fct.general]

13.7.7.3 Partial ordering of function templates [temp.func.order]

13.7.8 Alias templates [temp.alias]

13.7.9 Concept definitions [temp.concept]

13.8 Name resolution [temp.res]

13.8.1 General [temp.res.general]

13.8.2 Locally declared names [temp.local]

13.8.3 Dependent names [temp.dep]

13.8.3.1 General [temp.dep.general]

13.8.3.2 Dependent types [temp.dep.type]

13.8.3.3 Type-dependent expressions [temp.dep.expr]

13.8.3.4 Value-dependent expressions [temp.dep.constexpr]

13.8.3.5 Dependent template arguments [temp.dep.temp]

13.8.4 Dependent name resolution [temp.dep.res]

13.8.4.1 Point of instantiation [temp.point]

13.8.4.2 Candidate functions [temp.dep.candidate]

13.9 Template instantiation and specialization [temp.spec]

13.9.1 General [temp.spec.general]

13.9.2 Implicit instantiation [temp.inst]

13.9.3 Explicit instantiation [temp.explicit]

13.9.4 Explicit specialization [temp.expl.spec]

13.10 Function template specializations [temp.fct.spec]

13.10.1 General [temp.fct.spec.general]

13.10.2 Explicit template argument specification [temp.arg.explicit]

13.10.3 Template argument deduction [temp.deduct]

13.10.3.1 General [temp.deduct.general]

13.10.3.2 Deducing template arguments from a function call [temp.deduct.call]

13.10.3.3 Deducing template arguments taking the address of a function template [temp.deduct.funcaddr]

13.10.3.4 Deducing conversion function template arguments [temp.deduct.conv]

13.10.3.5 Deducing template arguments during partial ordering [temp.deduct.partial]

13.10.3.6 Deducing template arguments from a type [temp.deduct.type]

13.10.3.7 Deducing template arguments from a function declaration [temp.deduct.decl]

13.10.4 Overload resolution [temp.over]

14 Exception handling [except][except]

14.1 Preamble [except.pre]

14.2 Throwing an exception [except.throw]

14.3 Constructors and destructors [except.ctor]

14.4 Handling an exception [except.handle]

14.5 Exception specifications [except.spec]

14.6 Special functions [except.special]

14.6.1 General [except.special.general]

14.6.2 The std​::​terminate function [except.terminate]

14.6.3 The std​::​uncaught_exceptions function [except.uncaught]

15 Preprocessing directives [cpp][cpp]

15.1 Preamble [cpp.pre]

15.2 Conditional inclusion [cpp.cond]

15.3 Source file inclusion [cpp.include]

15.4 Module directive [cpp.module]

15.5 Header unit importation [cpp.import]

15.6 Macro replacement [cpp.replace]

15.6.1 General [cpp.replace.general]

15.6.2 Argument substitution [cpp.subst]

15.6.3 The # operator [cpp.stringize]

15.6.4 The ## operator [cpp.concat]

15.6.5 Rescanning and further replacement [cpp.rescan]

15.6.6 Scope of macro definitions [cpp.scope]

15.7 Line control [cpp.line]

15.8 Diagnostic directives [cpp.error]

15.9 Pragma directive [cpp.pragma]

15.10 Null directive [cpp.null]

15.11 Predefined macro names [cpp.predefined]

15.12 Pragma operator [cpp.pragma.op]

16 Library introduction [library][library]

16.1 General [library.general]

16.2 The C standard library [library.c]

16.3 Method of description [description]

16.3.1 General [description.general]

16.3.2 Structure of each clause [structure]

16.3.2.1 Elements [structure.elements]

16.3.2.2 Summary [structure.summary]

16.3.2.3 Requirements [structure.requirements]

16.3.2.4 Detailed specifications [structure.specifications]

16.3.2.5 C library [structure.see.also]

16.3.3 Other conventions [conventions]

16.3.3.1 General [conventions.general]

16.3.3.2 Exposition-only entities, etc. [expos.only.entity]

16.3.3.3 Type descriptions [type.descriptions]

16.3.3.3.1 General [type.descriptions.general]

16.3.3.3.2 Enumerated types [enumerated.types]

16.3.3.3.3 Bitmask types [bitmask.types]

16.3.3.3.4 Character sequences [character.seq]

16.3.3.3.4.1 General [character.seq.general]

16.3.3.3.4.2 Byte strings [byte.strings]

16.3.3.3.4.3 Multibyte strings [multibyte.strings]

16.3.3.3.5 Customization Point Object types [customization.point.object]

16.3.3.4 Functions within classes [functions.within.classes]

16.3.3.5 Private members [objects.within.classes]

16.3.3.6 Freestanding items [freestanding.item]

16.4 Library-wide requirements [requirements]

16.4.1 General [requirements.general]

16.4.2 Library contents and organization [organization]

16.4.2.1 General [organization.general]

16.4.2.2 Library contents [contents]

16.4.2.3 Headers [headers]

16.4.2.4 Modules [std.modules]

16.4.2.5 Freestanding implementations [compliance]

16.4.3 Using the library [using]

16.4.3.1 Overview [using.overview]

16.4.3.2 Headers [using.headers]

16.4.3.3 Linkage [using.linkage]

16.4.4 Requirements on types and expressions [utility.requirements]

16.4.4.1 General [utility.requirements.general]

16.4.4.2 Template argument requirements [utility.arg.requirements]

16.4.4.3 Swappable requirements [swappable.requirements]

16.4.4.4 Cpp17NullablePointer requirements [nullablepointer.requirements]

16.4.4.5 Cpp17Hash requirements [hash.requirements]

16.4.4.6 Cpp17Allocator requirements [allocator.requirements]

16.4.4.6.1 General [allocator.requirements.general]

16.4.4.6.2 Allocator completeness requirements [allocator.requirements.completeness]

16.4.5 Constraints on programs [constraints]

16.4.5.1 Overview [constraints.overview]

16.4.5.2 Namespace use [namespace.constraints]

16.4.5.2.1 Namespace std [namespace.std]

16.4.5.2.2 Namespace posix [namespace.posix]

16.4.5.2.3 Namespaces for future standardization [namespace.future]

16.4.5.3 Reserved names [reserved.names]

16.4.5.3.1 General [reserved.names.general]

16.4.5.3.2 Zombie names [zombie.names]

16.4.5.3.3 Macro names [macro.names]

16.4.5.3.4 External linkage [extern.names]

16.4.5.3.5 Types [extern.types]

16.4.5.3.6 User-defined literal suffixes [usrlit.suffix]

16.4.5.4 Headers [alt.headers]

16.4.5.5 Derived classes [derived.classes]

16.4.5.6 Replacement functions [replacement.functions]

16.4.5.7 Handler functions [handler.functions]

16.4.5.8 Other functions [res.on.functions]

16.4.5.9 Function arguments [res.on.arguments]

16.4.5.10 Library object access [res.on.objects]

16.4.5.11 Semantic requirements [res.on.requirements]

16.4.6 Conforming implementations [conforming]

16.4.6.1 Overview [conforming.overview]

16.4.6.2 Headers [res.on.headers]

16.4.6.3 Restrictions on macro definitions [res.on.macro.definitions]

16.4.6.4 Non-member functions [global.functions]

16.4.6.5 Member functions [member.functions]

16.4.6.6 Friend functions [hidden.friends]

16.4.6.7 Constexpr functions and constructors [constexpr.functions]

16.4.6.8 Requirements for stable algorithms [algorithm.stable]

16.4.6.9 Reentrancy [reentrancy]

16.4.6.10 Data race avoidance [res.on.data.races]

16.4.6.11 Protection within classes [protection.within.classes]

16.4.6.12 Derived classes [derivation]

16.4.6.13 Restrictions on exception handling [res.on.exception.handling]

16.4.6.14 Value of error codes [value.error.codes]

16.4.6.15 Moved-from state of library types [lib.types.movedfrom]

17 Language support library [support][support]

17.1 General [support.general]

17.2 Common definitions [support.types]

17.2.1 Header synopsis [cstddef.syn]

17.2.2 Header synopsis [cstdlib.syn]

17.2.3 Null pointers [support.types.nullptr]

17.2.4 Sizes, alignments, and offsets [support.types.layout]

17.2.5 byte type operations [support.types.byteops]

17.3 Implementation properties [support.limits]

17.3.1 General [support.limits.general]

17.3.2 Header synopsis [version.syn]

17.3.3 Header synopsis [limits.syn]

17.3.4 Enum float_round_style [round.style]

17.3.5 Class template numeric_limits [numeric.limits]

17.3.5.1 General [numeric.limits.general]

17.3.5.2 numeric_limits members [numeric.limits.members]

17.3.5.3 numeric_limits specializations [numeric.special]

17.3.6 Header synopsis [climits.syn]

17.3.7 Header synopsis [cfloat.syn]

17.4 Arithmetic types [support.arith.types]

17.4.1 Header synopsis [cstdint.syn]

17.4.2 Header synopsis [stdfloat.syn]

17.5 Startup and termination [support.start.term]

17.6 Dynamic memory management [support.dynamic]

17.6.1 General [support.dynamic.general]

17.6.2 Header synopsis [new.syn]

17.6.3 Storage allocation and deallocation [new.delete]

17.6.3.1 General [new.delete.general]

17.6.3.2 Single-object forms [new.delete.single]

17.6.3.3 Array forms [new.delete.array]

17.6.3.4 Non-allocating forms [new.delete.placement]

17.6.3.5 Data races [new.delete.dataraces]

17.6.4 Storage allocation errors [alloc.errors]

17.6.4.1 Class bad_alloc [bad.alloc]

17.6.4.2 Class bad_array_new_length [new.badlength]

17.6.4.3 Type new_handler [new.handler]

17.6.4.4 set_new_handler [set.new.handler]

17.6.4.5 get_new_handler [get.new.handler]

17.6.5 Pointer optimization barrier [ptr.launder]

17.6.6 Hardware interference size [hardware.interference]

17.7 Type identification [support.rtti]

17.7.1 General [support.rtti.general]

17.7.2 Header synopsis [typeinfo.syn]

17.7.3 Class type_info [type.info]

17.7.4 Class bad_cast [bad.cast]

17.7.5 Class bad_typeid [bad.typeid]

17.8 Source location [support.srcloc]

17.8.1 Header <source_location> synopsis [source.location.syn]

17.8.2 Class source_location [support.srcloc.class]

17.8.2.1 General [support.srcloc.class.general]

17.8.2.2 Creation [support.srcloc.cons]

17.8.2.3 Observers [support.srcloc.obs]

17.9 Exception handling [support.exception]

17.9.1 General [support.exception.general]

17.9.2 Header synopsis [exception.syn]

17.9.3 Class exception [exception]

17.9.4 Class bad_exception [bad.exception]

17.9.5 Abnormal termination [exception.terminate]

17.9.5.1 Type terminate_handler [terminate.handler]

17.9.5.2 set_terminate [set.terminate]

17.9.5.3 get_terminate [get.terminate]

17.9.5.4 terminate [terminate]

17.9.6 uncaught_exceptions [uncaught.exceptions]

17.9.7 Exception propagation [propagation]

17.9.8 nested_exception [except.nested]

17.10 Initializer lists [support.initlist]

17.10.1 General [support.initlist.general]

17.10.2 Header <initializer_list> synopsis [initializer.list.syn]

17.10.3 Initializer list constructors [support.initlist.cons]

17.10.4 Initializer list access [support.initlist.access]

17.10.5 Initializer list range access [support.initlist.range]

17.11 Comparisons [cmp]

17.11.1 Header synopsis [compare.syn]

17.11.2 Comparison category types [cmp.categories]

17.11.2.1 Preamble [cmp.categories.pre]

17.11.2.2 Class partial_ordering [cmp.partialord]

17.11.2.3 Class weak_ordering [cmp.weakord]

17.11.2.4 Class strong_ordering [cmp.strongord]

17.11.3 Class template common_comparison_category [cmp.common]

17.11.4 Concept three_way_comparable [cmp.concept]

17.11.5 Result of three-way comparison [cmp.result]

17.11.6 Comparison algorithms [cmp.alg]

17.12 Coroutines [support.coroutine]

17.12.1 General [support.coroutine.general]

17.12.2 Header synopsis [coroutine.syn]

17.12.3 Coroutine traits [coroutine.traits]

17.12.3.1 General [coroutine.traits.general]

17.12.3.2 Class template coroutine_traits [coroutine.traits.primary]

17.12.4 Class template coroutine_handle [coroutine.handle]

17.12.4.1 General [coroutine.handle.general]

17.12.4.2 Construct/reset [coroutine.handle.con]

17.12.4.3 Conversion [coroutine.handle.conv]

17.12.4.4 Export/import [coroutine.handle.export.import]

17.12.4.5 Observers [coroutine.handle.observers]

17.12.4.6 Resumption [coroutine.handle.resumption]

17.12.4.7 Promise access [coroutine.handle.promise]

17.12.4.8 Comparison operators [coroutine.handle.compare]

17.12.4.9 Hash support [coroutine.handle.hash]

17.12.5 No-op coroutines [coroutine.noop]

17.12.5.1 Class noop_coroutine_promise [coroutine.promise.noop]

17.12.5.2 Class coroutine_handle<noop_coroutine_promise> [coroutine.handle.noop]

17.12.5.2.1 Conversion [coroutine.handle.noop.conv]

17.12.5.2.2 Observers [coroutine.handle.noop.observers]

17.12.5.2.3 Resumption [coroutine.handle.noop.resumption]

17.12.5.2.4 Promise access [coroutine.handle.noop.promise]

17.12.5.2.5 Address [coroutine.handle.noop.address]

17.12.5.3 Function noop_coroutine [coroutine.noop.coroutine]

17.12.6 Trivial awaitables [coroutine.trivial.awaitables]

17.13 Other runtime support [support.runtime]

17.13.1 General [support.runtime.general]

17.13.2 Header synopsis [cstdarg.syn]

17.13.3 Header synopsis [csetjmp.syn]

17.13.4 Header synopsis [csignal.syn]

17.13.5 Signal handlers [support.signal]

17.14 C headers [support.c.headers]

17.14.1 General [support.c.headers.general]

17.14.2 Header <complex.h> synopsis [complex.h.syn]

17.14.3 Header <iso646.h> synopsis [iso646.h.syn]

17.14.4 Header <stdalign.h> synopsis [stdalign.h.syn]

17.14.5 Header <stdbool.h> synopsis [stdbool.h.syn]

17.14.6 Header <tgmath.h> synopsis [tgmath.h.syn]

17.14.7 Other C headers [support.c.headers.other]

18 Concepts library [concepts][concepts]

18.1 General [concepts.general]

18.2 Equality preservation [concepts.equality]

18.3 Header synopsis [concepts.syn]

18.4.1 General [concepts.lang.general]

18.4.2 Concept same_as [concept.same]

18.4.3 Concept derived_from [concept.derived]

18.4.4 Concept convertible_to [concept.convertible]

18.4.5 Concept common_reference_with [concept.commonref]

18.4.6 Concept common_with [concept.common]

18.4.7 Arithmetic concepts [concepts.arithmetic]

18.4.8 Concept assignable_from [concept.assignable]

18.4.9 Concept swappable [concept.swappable]

18.4.10 Concept destructible [concept.destructible]

18.4.11 Concept constructible_from [concept.constructible]

18.4.12 Concept default_initializable [concept.default.init]

18.4.13 Concept move_constructible [concept.moveconstructible]

18.4.14 Concept copy_constructible [concept.copyconstructible]

18.5 Comparison concepts [concepts.compare]

18.5.1 General [concepts.compare.general]

18.5.2 Boolean testability [concept.booleantestable]

18.5.3 Comparison common types [concept.comparisoncommontype]

18.5.4 Concept equality_comparable [concept.equalitycomparable]

18.5.5 Concept totally_ordered [concept.totallyordered]

18.6 Object concepts [concepts.object]

18.7 Callable concepts [concepts.callable]

18.7.1 General [concepts.callable.general]

18.7.2 Concept invocable [concept.invocable]

18.7.3 Concept regular_invocable [concept.regularinvocable]

18.7.4 Concept predicate [concept.predicate]

18.7.5 Concept relation [concept.relation]

18.7.6 Concept equivalence_relation [concept.equiv]

18.7.7 Concept strict_weak_order [concept.strictweakorder]

19 Diagnostics library [diagnostics][diagnostics]

19.1 General [diagnostics.general]

19.2 Exception classes [std.exceptions]

19.2.1 General [std.exceptions.general]

19.2.2 Header synopsis [stdexcept.syn]

19.2.3 Class logic_error [logic.error]

19.2.4 Class domain_error [domain.error]

19.2.5 Class invalid_argument [invalid.argument]

19.2.6 Class length_error [length.error]

19.2.7 Class out_of_range [out.of.range]

19.2.8 Class runtime_error [runtime.error]

19.2.9 Class range_error [range.error]

19.2.10 Class overflow_error [overflow.error]

19.2.11 Class underflow_error [underflow.error]

19.3 Assertions [assertions]

19.3.1 General [assertions.general]

19.3.2 Header synopsis [cassert.syn]

19.3.3 The assert macro [assertions.assert]

19.4 Error numbers [errno]

19.4.1 General [errno.general]

19.4.2 Header synopsis [cerrno.syn]

19.5 System error support [syserr]

19.5.1 General [syserr.general]

19.5.2 Header <system_error> synopsis [system.error.syn]

19.5.3 Class error_category [syserr.errcat]

19.5.3.1 Overview [syserr.errcat.overview]

19.5.3.2 Virtual members [syserr.errcat.virtuals]

19.5.3.3 Non-virtual members [syserr.errcat.nonvirtuals]

19.5.3.4 Program-defined classes derived from error_category [syserr.errcat.derived]

19.5.3.5 Error category objects [syserr.errcat.objects]

19.5.4 Class error_code [syserr.errcode]

19.5.4.1 Overview [syserr.errcode.overview]

19.5.4.2 Constructors [syserr.errcode.constructors]

19.5.4.3 Modifiers [syserr.errcode.modifiers]

19.5.4.4 Observers [syserr.errcode.observers]

19.5.4.5 Non-member functions [syserr.errcode.nonmembers]

19.5.5 Class error_condition [syserr.errcondition]

19.5.5.1 Overview [syserr.errcondition.overview]

19.5.5.2 Constructors [syserr.errcondition.constructors]

19.5.5.3 Modifiers [syserr.errcondition.modifiers]

19.5.5.4 Observers [syserr.errcondition.observers]

19.5.5.5 Non-member functions [syserr.errcondition.nonmembers]

19.5.6 Comparison operator functions [syserr.compare]

19.5.7 System error hash support [syserr.hash]

19.5.8 Class system_error [syserr.syserr]

19.5.8.1 Overview [syserr.syserr.overview]

19.5.8.2 Members [syserr.syserr.members]

19.6 Stacktrace [stacktrace]

19.6.1 General [stacktrace.general]

19.6.2 Header synopsis [stacktrace.syn]

19.6.3 Class stacktrace_entry [stacktrace.entry]

19.6.3.1 Overview [stacktrace.entry.overview]

19.6.3.2 Constructors [stacktrace.entry.cons]

19.6.3.3 Observers [stacktrace.entry.obs]

19.6.3.4 Query [stacktrace.entry.query]

19.6.3.5 Comparison [stacktrace.entry.cmp]

19.6.4 Class template basic_stacktrace [stacktrace.basic]

19.6.4.1 Overview [stacktrace.basic.overview]

19.6.4.2 Creation and assignment [stacktrace.basic.cons]

19.6.4.3 Observers [stacktrace.basic.obs]

19.6.4.4 Comparisons [stacktrace.basic.cmp]

19.6.4.5 Modifiers [stacktrace.basic.mod]

19.6.4.6 Non-member functions [stacktrace.basic.nonmem]

19.6.4.7 Formatting support [stacktrace.format]

19.6.4.8 Hash support [stacktrace.basic.hash]

20 Memory management library [mem][mem]

20.1 General [mem.general]

20.2 Memory [memory]

20.2.1 In general [memory.general]

20.2.2 Header synopsis [memory.syn]

20.2.3 Pointer traits [pointer.traits]

20.2.3.1 General [pointer.traits.general]

20.2.3.2 Member types [pointer.traits.types]

20.2.3.3 Member functions [pointer.traits.functions]

20.2.3.4 Optional members [pointer.traits.optmem]

20.2.4 Pointer conversion [pointer.conversion]

20.2.5 Pointer alignment [ptr.align]

20.2.6 Explicit lifetime management [obj.lifetime]

20.2.7 Allocator argument tag [allocator.tag]

20.2.8 uses_allocator [allocator.uses]

20.2.8.1 uses_allocator trait [allocator.uses.trait]

20.2.8.2 Uses-allocator construction [allocator.uses.construction]

20.2.9 Allocator traits [allocator.traits]

20.2.9.1 General [allocator.traits.general]

20.2.9.2 Member types [allocator.traits.types]

20.2.9.3 Static member functions [allocator.traits.members]

20.2.9.4 Other [allocator.traits.other]

20.2.10 The default allocator [default.allocator]

20.2.10.1 General [default.allocator.general]

20.2.10.2 Members [allocator.members]

20.2.10.3 Operators [allocator.globals]

20.2.11 addressof [specialized.addressof]

20.2.12 C library memory allocation [c.malloc]

20.3 Smart pointers [smartptr]

20.3.1 Unique-ownership pointers [unique.ptr]

20.3.1.1 General [unique.ptr.general]

20.3.1.2 Default deleters [unique.ptr.dltr]

20.3.1.2.1 In general [unique.ptr.dltr.general]

20.3.1.2.2 default_delete [unique.ptr.dltr.dflt]

20.3.1.2.3 default_delete<T[]> [unique.ptr.dltr.dflt1]

20.3.1.3 unique_ptr for single objects [unique.ptr.single]

20.3.1.3.1 General [unique.ptr.single.general]

20.3.1.3.2 Constructors [unique.ptr.single.ctor]

20.3.1.3.3 Destructor [unique.ptr.single.dtor]

20.3.1.3.4 Assignment [unique.ptr.single.asgn]

20.3.1.3.5 Observers [unique.ptr.single.observers]

20.3.1.3.6 Modifiers [unique.ptr.single.modifiers]

20.3.1.4 unique_ptr for array objects with a runtime length [unique.ptr.runtime]

20.3.1.4.1 General [unique.ptr.runtime.general]

20.3.1.4.2 Constructors [unique.ptr.runtime.ctor]

20.3.1.4.3 Assignment [unique.ptr.runtime.asgn]

20.3.1.4.4 Observers [unique.ptr.runtime.observers]

20.3.1.4.5 Modifiers [unique.ptr.runtime.modifiers]

20.3.1.5 Creation [unique.ptr.create]

20.3.1.6 Specialized algorithms [unique.ptr.special]

20.3.1.7 I/O [unique.ptr.io]

20.3.2 Shared-ownership pointers [util.sharedptr]

20.3.2.1 Class bad_weak_ptr [util.smartptr.weak.bad]

20.3.2.2 Class template shared_ptr [util.smartptr.shared]

20.3.2.2.1 General [util.smartptr.shared.general]

20.3.2.2.2 Constructors [util.smartptr.shared.const]

20.3.2.2.3 Destructor [util.smartptr.shared.dest]

20.3.2.2.4 Assignment [util.smartptr.shared.assign]

20.3.2.2.5 Modifiers [util.smartptr.shared.mod]

20.3.2.2.6 Observers [util.smartptr.shared.obs]

20.3.2.2.7 Creation [util.smartptr.shared.create]

20.3.2.2.8 Comparison [util.smartptr.shared.cmp]

20.3.2.2.9 Specialized algorithms [util.smartptr.shared.spec]

20.3.2.2.10 Casts [util.smartptr.shared.cast]

20.3.2.2.11 get_deleter [util.smartptr.getdeleter]

20.3.2.2.12 I/O [util.smartptr.shared.io]

20.3.2.3 Class template weak_ptr [util.smartptr.weak]

20.3.2.3.1 General [util.smartptr.weak.general]

20.3.2.3.2 Constructors [util.smartptr.weak.const]

20.3.2.3.3 Destructor [util.smartptr.weak.dest]

20.3.2.3.4 Assignment [util.smartptr.weak.assign]

20.3.2.3.5 Modifiers [util.smartptr.weak.mod]

20.3.2.3.6 Observers [util.smartptr.weak.obs]

20.3.2.3.7 Specialized algorithms [util.smartptr.weak.spec]

20.3.2.4 Class template owner_less [util.smartptr.ownerless]

20.3.2.5 Class template enable_shared_from_this [util.smartptr.enab]

20.3.3 Smart pointer hash support [util.smartptr.hash]

20.3.4 Smart pointer adaptors [smartptr.adapt]

20.3.4.1 Class template out_ptr_t [out.ptr.t]

20.3.4.2 Function template out_ptr [out.ptr]

20.3.4.3 Class template inout_ptr_t [inout.ptr.t]

20.3.4.4 Function template inout_ptr [inout.ptr]

20.4 Memory resources [mem.res]

20.4.1 Header <memory_resource> synopsis [mem.res.syn]

20.4.2 Class memory_resource [mem.res.class]

20.4.2.1 General [mem.res.class.general]

20.4.2.2 Public member functions [mem.res.public]

20.4.2.3 Private virtual member functions [mem.res.private]

20.4.2.4 Equality [mem.res.eq]

20.4.3 Class template polymorphic_allocator [mem.poly.allocator.class]

20.4.3.1 General [mem.poly.allocator.class.general]

20.4.3.2 Constructors [mem.poly.allocator.ctor]

20.4.3.3 Member functions [mem.poly.allocator.mem]

20.4.3.4 Equality [mem.poly.allocator.eq]

20.4.4 Access to program-wide memory_resource objects [mem.res.global]

20.4.5 Pool resource classes [mem.res.pool]

20.4.5.1 Classes synchronized_pool_resource and unsynchronized_pool_resource [mem.res.pool.overview]

20.4.5.2 pool_options data members [mem.res.pool.options]

20.4.5.3 Constructors and destructors [mem.res.pool.ctor]

20.4.5.4 Members [mem.res.pool.mem]

20.4.6 Class monotonic_buffer_resource [mem.res.monotonic.buffer]

20.4.6.1 General [mem.res.monotonic.buffer.general]

20.4.6.2 Constructors and destructor [mem.res.monotonic.buffer.ctor]

20.4.6.3 Members [mem.res.monotonic.buffer.mem]

20.5 Class template scoped_allocator_adaptor [allocator.adaptor]

20.5.1 Header <scoped_allocator> synopsis [allocator.adaptor.syn]

20.5.2 Member types [allocator.adaptor.types]

20.5.3 Constructors [allocator.adaptor.cnstr]

20.5.4 Members [allocator.adaptor.members]

20.5.5 Operators [scoped.adaptor.operators]

21 Metaprogramming library [meta][meta]

21.1 General [meta.general]

21.2 Compile-time integer sequences [intseq]

21.2.1 In general [intseq.general]

21.2.2 Class template integer_sequence [intseq.intseq]

21.2.3 Alias template make_integer_sequence [intseq.make]

21.3 Metaprogramming and type traits [type.traits]

21.3.1 General [type.traits.general]

21.3.2 Requirements [meta.rqmts]

21.3.3 Header <type_traits> synopsis [meta.type.synop]

21.3.4 Helper classes [meta.help]

21.3.5 Unary type traits [meta.unary]

21.3.5.1 General [meta.unary.general]

21.3.5.2 Primary type categories [meta.unary.cat]

21.3.5.3 Composite type traits [meta.unary.comp]

21.3.5.4 Type properties [meta.unary.prop]

21.3.6 Type property queries [meta.unary.prop.query]

21.3.7 Relationships between types [meta.rel]

21.3.8 Transformations between types [meta.trans]

21.3.8.1 General [meta.trans.general]

21.3.8.2 Const-volatile modifications [meta.trans.cv]

21.3.8.3 Reference modifications [meta.trans.ref]

21.3.8.4 Sign modifications [meta.trans.sign]

21.3.8.5 Array modifications [meta.trans.arr]

21.3.8.6 Pointer modifications [meta.trans.ptr]

21.3.8.7 Other transformations [meta.trans.other]

21.3.9 Logical operator traits [meta.logical]

21.3.10 Member relationships [meta.member]

21.3.11 Constant evaluation context [meta.const.eval]

21.4 Compile-time rational arithmetic [ratio]

21.4.1 In general [ratio.general]

21.4.2 Header synopsis [ratio.syn]

21.4.3 Class template ratio [ratio.ratio]

21.4.4 Arithmetic on ratios [ratio.arithmetic]

21.4.5 Comparison of ratios [ratio.comparison]

21.4.6 SI types for ratio [ratio.si]

22 General utilities library [utilities][utilities]

22.1 General [utilities.general]

22.2 Utility components [utility]

22.2.1 Header synopsis [utility.syn]

22.2.2 swap [utility.swap]

22.2.3 exchange [utility.exchange]

22.2.4 Forward/move helpers [forward]

22.2.5 Function template as_const [utility.as.const]

22.2.6 Function template declval [declval]

22.2.7 Integer comparison functions [utility.intcmp]

22.2.8 Function template to_underlying [utility.underlying]

22.2.9 Function unreachable [utility.unreachable]

22.3 Pairs [pairs]

22.3.1 In general [pairs.general]

22.3.2 Class template pair [pairs.pair]

22.3.3 Specialized algorithms [pairs.spec]

22.3.4 Tuple-like access to pair [pair.astuple]

22.3.5 Piecewise construction [pair.piecewise]

22.4 Tuples [tuple]

22.4.1 In general [tuple.general]

22.4.2 Header synopsis [tuple.syn]

22.4.3 Concept tuple-like [tuple.like]

22.4.4 Class template tuple [tuple.tuple]

22.4.4.1 Construction [tuple.cnstr]

22.4.4.2 Assignment [tuple.assign]

22.4.4.3 swap [tuple.swap]

22.4.5 Tuple creation functions [tuple.creation]

22.4.6 Calling a function with a tuple of arguments [tuple.apply]

22.4.7 Tuple helper classes [tuple.helper]

22.4.8 Element access [tuple.elem]

22.4.9 Relational operators [tuple.rel]

22.4.11 Tuple traits [tuple.traits]

22.4.12 Tuple specialized algorithms [tuple.special]

22.5 Optional objects [optional]

22.5.1 In general [optional.general]

22.5.2 Header synopsis [optional.syn]

22.5.3 Class template optional [optional.optional]

22.5.3.1 General [optional.optional.general]

22.5.3.2 Constructors [optional.ctor]

22.5.3.3 Destructor [optional.dtor]

22.5.3.4 Assignment [optional.assign]

22.5.3.5 Swap [optional.swap]

22.5.3.6 Observers [optional.observe]

22.5.3.7 Monadic operations [optional.monadic]

22.5.3.8 Modifiers [optional.mod]

22.5.4 No-value state indicator [optional.nullopt]

22.5.5 Class bad_optional_access [optional.bad.access]

22.5.6 Relational operators [optional.relops]

22.5.7 Comparison with nullopt [optional.nullops]

22.5.8 Comparison with T [optional.comp.with.t]

22.5.9 Specialized algorithms [optional.specalg]

22.5.10 Hash support [optional.hash]

22.6 Variants [variant]

22.6.1 In general [variant.general]

22.6.2 Header synopsis [variant.syn]

22.6.3 Class template variant [variant.variant]

22.6.3.1 General [variant.variant.general]

22.6.3.2 Constructors [variant.ctor]

22.6.3.3 Destructor [variant.dtor]

22.6.3.4 Assignment [variant.assign]

22.6.3.5 Modifiers [variant.mod]

22.6.3.6 Value status [variant.status]

22.6.3.7 Swap [variant.swap]

22.6.4 variant helper classes [variant.helper]

22.6.5 Value access [variant.get]

22.6.6 Relational operators [variant.relops]

22.6.7 Visitation [variant.visit]

22.6.8 Class monostate [variant.monostate]

22.6.9 monostate relational operators [variant.monostate.relops]

22.6.10 Specialized algorithms [variant.specalg]

22.6.11 Class bad_variant_access [variant.bad.access]

22.6.12 Hash support [variant.hash]

22.7 Storage for any type [any]

22.7.1 General [any.general]

22.7.2 Header synopsis [any.synop]

22.7.3 Class bad_any_cast [any.bad.any.cast]

22.7.4 Class any [any.class]

22.7.4.1 General [any.class.general]

22.7.4.2 Construction and destruction [any.cons]

22.7.4.3 Assignment [any.assign]

22.7.4.4 Modifiers [any.modifiers]

22.7.4.5 Observers [any.observers]

22.7.5 Non-member functions [any.nonmembers]

22.8 Expected objects [expected]

22.8.1 In general [expected.general]

22.8.2 Header synopsis [expected.syn]

22.8.3 Class template unexpected [expected.unexpected]

22.8.3.1 General [expected.un.general]

22.8.3.2 Constructors [expected.un.cons]

22.8.3.3 Observers [expected.un.obs]

22.8.3.4 Swap [expected.un.swap]

22.8.3.5 Equality operator [expected.un.eq]

22.8.4 Class template bad_expected_access [expected.bad]

22.8.5 Class template specialization bad_expected_access [expected.bad.void]

22.8.6 Class template expected [expected.expected]

22.8.6.1 General [expected.object.general]

22.8.6.2 Constructors [expected.object.cons]

22.8.6.3 Destructor [expected.object.dtor]

22.8.6.4 Assignment [expected.object.assign]

22.8.6.5 Swap [expected.object.swap]

22.8.6.6 Observers [expected.object.obs]

22.8.6.7 Monadic operations [expected.object.monadic]

22.8.6.8 Equality operators [expected.object.eq]

22.8.7 Partial specialization of expected for void types [expected.void]

22.8.7.1 General [expected.void.general]

22.8.7.2 Constructors [expected.void.cons]

22.8.7.3 Destructor [expected.void.dtor]

22.8.7.4 Assignment [expected.void.assign]

22.8.7.5 Swap [expected.void.swap]

22.8.7.6 Observers [expected.void.obs]

22.8.7.7 Monadic operations [expected.void.monadic]

22.8.7.8 Equality operators [expected.void.eq]

22.9 Bitsets [bitset]

22.9.1 Header synopsis [bitset.syn]

22.9.2 Class template bitset [template.bitset]

22.9.2.1 General [template.bitset.general]

22.9.2.2 Constructors [bitset.cons]

22.9.2.3 Members [bitset.members]

22.9.3 bitset hash support [bitset.hash]

22.9.4 bitset operators [bitset.operators]

22.10 Function objects [function.objects]

22.10.1 General [function.objects.general]

22.10.2 Header synopsis [functional.syn]

22.10.3 Definitions [func.def]

22.10.4 Requirements [func.require]

22.10.5 invoke functions [func.invoke]

22.10.6 Class template reference_wrapper [refwrap]

22.10.6.1 General [refwrap.general]

22.10.6.2 Constructors [refwrap.const]

22.10.6.3 Assignment [refwrap.assign]

22.10.6.4 Access [refwrap.access]

22.10.6.5 Invocation [refwrap.invoke]

22.10.6.6 Helper functions [refwrap.helpers]

22.10.7 Arithmetic operations [arithmetic.operations]

22.10.7.1 General [arithmetic.operations.general]

22.10.7.2 Class template plus [arithmetic.operations.plus]

22.10.7.3 Class template minus [arithmetic.operations.minus]

22.10.7.4 Class template multiplies [arithmetic.operations.multiplies]

22.10.7.5 Class template divides [arithmetic.operations.divides]

22.10.7.6 Class template modulus [arithmetic.operations.modulus]

22.10.7.7 Class template negate [arithmetic.operations.negate]

22.10.8 Comparisons [comparisons]

22.10.8.1 General [comparisons.general]

22.10.8.2 Class template equal_to [comparisons.equal.to]

22.10.8.3 Class template not_equal_to [comparisons.not.equal.to]

22.10.8.4 Class template greater [comparisons.greater]

22.10.8.5 Class template less [comparisons.less]

22.10.8.6 Class template greater_equal [comparisons.greater.equal]

22.10.8.7 Class template less_equal [comparisons.less.equal]

22.10.8.8 Class compare_three_way [comparisons.three.way]

22.10.9 Concept-constrained comparisons [range.cmp]

22.10.10 Logical operations [logical.operations]

22.10.10.1 General [logical.operations.general]

22.10.10.2 Class template logical_and [logical.operations.and]

22.10.10.3 Class template logical_or [logical.operations.or]

22.10.10.4 Class template logical_not [logical.operations.not]

22.10.11 Bitwise operations [bitwise.operations]

22.10.11.1 General [bitwise.operations.general]

22.10.11.2 Class template bit_and [bitwise.operations.and]

22.10.11.3 Class template bit_or [bitwise.operations.or]

22.10.11.4 Class template bit_xor [bitwise.operations.xor]

22.10.11.5 Class template bit_not [bitwise.operations.not]

22.10.12 Class identity [func.identity]

22.10.13 Function template not_fn [func.not.fn]

22.10.14 Function templates bind_front and bind_back [func.bind.partial]

22.10.15 Function object binders [func.bind]

22.10.15.1 General [func.bind.general]

22.10.15.2 Class template is_bind_expression [func.bind.isbind]

22.10.15.3 Class template is_placeholder [func.bind.isplace]

22.10.15.4 Function template bind [func.bind.bind]

22.10.15.5 Placeholders [func.bind.place]

22.10.16 Function template mem_fn [func.memfn]

22.10.17 Polymorphic function wrappers [func.wrap]

22.10.17.1 General [func.wrap.general]

22.10.17.2 Class bad_function_call [func.wrap.badcall]

22.10.17.3 Class template function [func.wrap.func]

22.10.17.3.1 General [func.wrap.func.general]

22.10.17.3.2 Constructors and destructor [func.wrap.func.con]

22.10.17.3.3 Modifiers [func.wrap.func.mod]

22.10.17.3.4 Capacity [func.wrap.func.cap]

22.10.17.3.5 Invocation [func.wrap.func.inv]

22.10.17.3.6 Target access [func.wrap.func.targ]

22.10.17.3.7 Null pointer comparison operator functions [func.wrap.func.nullptr]

22.10.17.3.8 Specialized algorithms [func.wrap.func.alg]

22.10.17.4 Move only wrapper [func.wrap.move]

22.10.17.4.1 General [func.wrap.move.general]

22.10.17.4.2 Class template move_only_function [func.wrap.move.class]

22.10.17.4.3 Constructors, assignment, and destructor [func.wrap.move.ctor]

22.10.17.4.4 Invocation [func.wrap.move.inv]

22.10.17.4.5 Utility [func.wrap.move.util]

22.10.18 Searchers [func.search]

22.10.18.1 General [func.search.general]

22.10.18.2 Class template default_searcher [func.search.default]

22.10.18.3 Class template boyer_moore_searcher [func.search.bm]

22.10.18.4 Class template boyer_moore_horspool_searcher [func.search.bmh]

22.10.19 Class template hash [unord.hash]

22.11 Class type_index [type.index]

22.11.1 Header synopsis [type.index.synopsis]

22.11.2 type_index overview [type.index.overview]

22.11.3 type_index members [type.index.members]

22.11.4 Hash support [type.index.hash]

22.12 Execution policies [execpol]

22.12.1 In general [execpol.general]

22.12.2 Header synopsis [execution.syn]

22.12.3 Execution policy type trait [execpol.type]

22.12.4 Sequenced execution policy [execpol.seq]

22.12.5 Parallel execution policy [execpol.par]

22.12.6 Parallel and unsequenced execution policy [execpol.parunseq]

22.12.7 Unsequenced execution policy [execpol.unseq]

22.12.8 Execution policy objects [execpol.objects]

22.13 Primitive numeric conversions [charconv]

22.13.1 Header synopsis [charconv.syn]

22.13.2 Primitive numeric output conversion [charconv.to.chars]

22.13.3 Primitive numeric input conversion [charconv.from.chars]

22.14 Formatting [format]

22.14.1 Header synopsis [format.syn]

22.14.2 Format string [format.string]

22.14.2.1 In general [format.string.general]

22.14.2.2 Standard format specifiers [format.string.std]

22.14.3 Error reporting [format.err.report]

22.14.4 Class template basic_format_string [format.fmt.string]

22.14.5 Formatting functions [format.functions]

22.14.6 Formatter [format.formatter]

22.14.6.1 Formatter requirements [formatter.requirements]

22.14.6.2 Concept formattable [format.formattable]

22.14.6.3 Formatter specializations [format.formatter.spec]

22.14.6.4 Formatting escaped characters and strings [format.string.escaped]

22.14.6.5 Class template basic_format_parse_context [format.parse.ctx]

22.14.6.6 Class template basic_format_context [format.context]

22.14.7 Formatting of ranges [format.range]

22.14.7.1 Variable template format_kind [format.range.fmtkind]

22.14.7.2 Class template range_formatter [format.range.formatter]

22.14.7.3 Class template range-default-formatter [format.range.fmtdef]

22.14.7.4 Specialization of range-default-formatter for maps [format.range.fmtmap]

22.14.7.5 Specialization of range-default-formatter for sets [format.range.fmtset]

22.14.7.6 Specialization of range-default-formatter for strings [format.range.fmtstr]

22.14.8 Arguments [format.arguments]

22.14.8.1 Class template basic_format_arg [format.arg]

22.14.8.2 Class template format-arg-store [format.arg.store]

22.14.8.3 Class template basic_format_args [format.args]

22.14.9 Tuple formatter [format.tuple]

22.14.10 Class format_error [format.error]

22.15 Bit manipulation [bit]

22.15.1 General [bit.general]

22.15.2 Header synopsis [bit.syn]

22.15.3 Function template bit_cast [bit.cast]

22.15.4 byteswap [bit.byteswap]

22.15.5 Integral powers of 2 [bit.pow.two]

22.15.6 Rotating [bit.rotate]

22.15.7 Counting [bit.count]

22.15.8 Endian [bit.endian]

23 Strings library [strings][strings]

23.1 General [strings.general]

23.2 Character traits [char.traits]

23.2.1 General [char.traits.general]

23.2.2 Character traits requirements [char.traits.require]

23.2.3 Traits typedefs [char.traits.typedefs]

23.2.4 char_traits specializations [char.traits.specializations]

23.2.4.1 General [char.traits.specializations.general]

23.2.4.2 struct char_traits [char.traits.specializations.char]

23.2.4.3 struct char_traits<char8_t> [char.traits.specializations.char8.t]

23.2.4.4 struct char_traits<char16_t> [char.traits.specializations.char16.t]

23.2.4.5 struct char_traits<char32_t> [char.traits.specializations.char32.t]

23.2.4.6 struct char_traits<wchar_t> [char.traits.specializations.wchar.t]

23.3 String view classes [string.view]

23.3.1 General [string.view.general]

23.3.2 Header <string_view> synopsis [string.view.synop]

23.3.3 Class template basic_string_view [string.view.template]

23.3.3.1 General [string.view.template.general]

23.3.3.2 Construction and assignment [string.view.cons]

23.3.3.3 Deduction guides [string.view.deduct]

23.3.3.4 Iterator support [string.view.iterators]

23.3.3.5 Capacity [string.view.capacity]

23.3.3.6 Element access [string.view.access]

23.3.3.7 Modifiers [string.view.modifiers]

23.3.3.8 String operations [string.view.ops]

23.3.3.9 Searching [string.view.find]

23.3.4 Non-member comparison functions [string.view.comparison]

23.3.5 Inserters and extractors [string.view.io]

23.3.6 Hash support [string.view.hash]

23.3.7 Suffix for basic_string_view literals [string.view.literals]

23.4 String classes [string.classes]

23.4.1 General [string.classes.general]

23.4.2 Header synopsis [string.syn]

23.4.3 Class template basic_string [basic.string]

23.4.3.1 General [basic.string.general]

23.4.3.2 General requirements [string.require]

23.4.3.3 Constructors and assignment operators [string.cons]

23.4.3.4 Iterator support [string.iterators]

23.4.3.5 Capacity [string.capacity]

23.4.3.6 Element access [string.access]

23.4.3.7 Modifiers [string.modifiers]

23.4.3.7.1 basic_string​::​operator+= [string.op.append]

23.4.3.7.2 basic_string​::​append [string.append]

23.4.3.7.3 basic_string​::​assign [string.assign]

23.4.3.7.4 basic_string​::​insert [string.insert]

23.4.3.7.5 basic_string​::​erase [string.erase]

23.4.3.7.6 basic_string​::​replace [string.replace]

23.4.3.7.7 basic_string​::​copy [string.copy]

23.4.3.7.8 basic_string​::​swap [string.swap]

23.4.3.8 String operations [string.ops]

23.4.3.8.1 Accessors [string.accessors]

23.4.3.8.2 Searching [string.find]

23.4.3.8.3 basic_string​::​substr [string.substr]

23.4.3.8.4 basic_string​::​compare [string.compare]

23.4.3.8.5 basic_string​::​starts_with [string.starts.with]

23.4.3.8.6 basic_string​::​ends_with [string.ends.with]

23.4.3.8.7 basic_string​::​contains [string.contains]

23.4.4 Non-member functions [string.nonmembers]

23.4.4.1 operator+ [string.op.plus]

23.4.4.2 Non-member comparison operator functions [string.cmp]

23.4.4.3 swap [string.special]

23.4.4.4 Inserters and extractors [string.io]

23.4.4.5 Erasure [string.erasure]

23.4.5 Numeric conversions [string.conversions]

23.4.6 Hash support [basic.string.hash]

23.4.7 Suffix for basic_string literals [basic.string.literals]

23.5 Null-terminated sequence utilities [c.strings]

23.5.1 Header synopsis [cctype.syn]

23.5.2 Header synopsis [cwctype.syn]

23.5.3 Header synopsis [cstring.syn]

23.5.4 Header synopsis [cwchar.syn]

23.5.5 Header synopsis [cuchar.syn]

23.5.6 Multibyte / wide string and character conversion functions [c.mb.wcs]

24 Containers library [containers][containers]

24.1 General [containers.general]

24.2 Requirements [container.requirements]

24.2.1 Preamble [container.requirements.pre]

24.2.2 General containers [container.requirements.general]

24.2.2.1 Introduction [container.intro.reqmts]

24.2.2.2 Container requirements [container.reqmts]

24.2.2.3 Reversible container requirements [container.rev.reqmts]

24.2.2.4 Optional container requirements [container.opt.reqmts]

24.2.2.5 Allocator-aware containers [container.alloc.reqmts]

24.2.3 Container data races [container.requirements.dataraces]

24.2.4 Sequence containers [sequence.reqmts]

24.2.5 Node handles [container.node]

24.2.5.1 Overview [container.node.overview]

24.2.5.2 Constructors, copy, and assignment [container.node.cons]

24.2.5.3 Destructor [container.node.dtor]

24.2.5.4 Observers [container.node.observers]

24.2.5.5 Modifiers [container.node.modifiers]

24.2.6 Insert return type [container.insert.return]

24.2.7 Associative containers [associative.reqmts]

24.2.7.1 General [associative.reqmts.general]

24.2.7.2 Exception safety guarantees [associative.reqmts.except]

24.2.8 Unordered associative containers [unord.req]

24.2.8.1 General [unord.req.general]

24.2.8.2 Exception safety guarantees [unord.req.except]

24.3 Sequence containers [sequences]

24.3.1 In general [sequences.general]

24.3.2 Header synopsis [array.syn]

24.3.3 Header synopsis [deque.syn]

24.3.4 Header <forward_list> synopsis [forward.list.syn]

24.3.5 Header synopsis [list.syn]

24.3.6 Header synopsis [vector.syn]

24.3.7 Class template array [array]

24.3.7.1 Overview [array.overview]

24.3.7.2 Constructors, copy, and assignment [array.cons]

24.3.7.3 Member functions [array.members]

24.3.7.4 Specialized algorithms [array.special]

24.3.7.5 Zero-sized arrays [array.zero]

24.3.7.6 Array creation functions [array.creation]

24.3.7.7 Tuple interface [array.tuple]

24.3.8 Class template deque [deque]

24.3.8.1 Overview [deque.overview]

24.3.8.2 Constructors, copy, and assignment [deque.cons]

24.3.8.3 Capacity [deque.capacity]

24.3.8.4 Modifiers [deque.modifiers]

24.3.8.5 Erasure [deque.erasure]

24.3.9 Class template forward_list [forward.list]

24.3.9.1 Overview [forward.list.overview]

24.3.9.2 Constructors, copy, and assignment [forward.list.cons]

24.3.9.3 Iterators [forward.list.iter]

24.3.9.4 Element access [forward.list.access]

24.3.9.5 Modifiers [forward.list.modifiers]

24.3.9.6 Operations [forward.list.ops]

24.3.9.7 Erasure [forward.list.erasure]

24.3.10 Class template list [list]

24.3.10.1 Overview [list.overview]

24.3.10.2 Constructors, copy, and assignment [list.cons]

24.3.10.3 Capacity [list.capacity]

24.3.10.4 Modifiers [list.modifiers]

24.3.10.5 Operations [list.ops]

24.3.10.6 Erasure [list.erasure]

24.3.11 Class template vector [vector]

24.3.11.1 Overview [vector.overview]

24.3.11.2 Constructors [vector.cons]

24.3.11.3 Capacity [vector.capacity]

24.3.11.4 Data [vector.data]

24.3.11.5 Modifiers [vector.modifiers]

24.3.11.6 Erasure [vector.erasure]

24.3.12 Specialization of vector for bool [vector.bool]

24.3.12.1 Partial class template specialization vector<bool, Allocator> [vector.bool.pspc]

24.3.12.2 Formatter specialization for vector [vector.bool.fmt]

24.4 Associative containers [associative]

24.4.1 In general [associative.general]

24.4.2 Header synopsis [associative.map.syn]

24.4.3 Header synopsis [associative.set.syn]

24.4.4 Class template map [map]

24.4.4.1 Overview [map.overview]

24.4.4.2 Constructors, copy, and assignment [map.cons]

24.4.4.3 Element access [map.access]

24.4.4.4 Modifiers [map.modifiers]

24.4.4.5 Erasure [map.erasure]

24.4.5 Class template multimap [multimap]

24.4.5.1 Overview [multimap.overview]

24.4.5.2 Constructors [multimap.cons]

24.4.5.3 Modifiers [multimap.modifiers]

24.4.5.4 Erasure [multimap.erasure]

24.4.6 Class template set [set]

24.4.6.1 Overview [set.overview]

24.4.6.2 Constructors, copy, and assignment [set.cons]

24.4.6.3 Erasure [set.erasure]

24.4.7 Class template multiset [multiset]

24.4.7.1 Overview [multiset.overview]

24.4.7.2 Constructors [multiset.cons]

24.4.7.3 Erasure [multiset.erasure]

24.5 Unordered associative containers [unord]

24.5.1 In general [unord.general]

24.5.2 Header <unordered_map> synopsis [unord.map.syn]

24.5.3 Header <unordered_set> synopsis [unord.set.syn]

24.5.4 Class template unordered_map [unord.map]

24.5.4.1 Overview [unord.map.overview]

24.5.4.2 Constructors [unord.map.cnstr]

24.5.4.3 Element access [unord.map.elem]

24.5.4.4 Modifiers [unord.map.modifiers]

24.5.4.5 Erasure [unord.map.erasure]

24.5.5 Class template unordered_multimap [unord.multimap]

24.5.5.1 Overview [unord.multimap.overview]

24.5.5.2 Constructors [unord.multimap.cnstr]

24.5.5.3 Modifiers [unord.multimap.modifiers]

24.5.5.4 Erasure [unord.multimap.erasure]

24.5.6 Class template unordered_set [unord.set]

24.5.6.1 Overview [unord.set.overview]

24.5.6.2 Constructors [unord.set.cnstr]

24.5.6.3 Erasure [unord.set.erasure]

24.5.7 Class template unordered_multiset [unord.multiset]

24.5.7.1 Overview [unord.multiset.overview]

24.5.7.2 Constructors [unord.multiset.cnstr]

24.5.7.3 Erasure [unord.multiset.erasure]

24.6 Container adaptors [container.adaptors]

24.6.1 In general [container.adaptors.general]

24.6.2 Header synopsis [queue.syn]

24.6.3 Header synopsis [stack.syn]

24.6.4 Header <flat_map> synopsis [flat.map.syn]

24.6.5 Header <flat_set> synopsis [flat.set.syn]

24.6.6 Class template queue [queue]

24.6.6.1 Definition [queue.defn]

24.6.6.2 Constructors [queue.cons]

24.6.6.3 Constructors with allocators [queue.cons.alloc]

24.6.6.4 Modifiers [queue.mod]

24.6.6.5 Operators [queue.ops]

24.6.6.6 Specialized algorithms [queue.special]

24.6.7 Class template priority_queue [priority.queue]

24.6.7.1 Overview [priqueue.overview]

24.6.7.2 Constructors [priqueue.cons]

24.6.7.3 Constructors with allocators [priqueue.cons.alloc]

24.6.7.4 Members [priqueue.members]

24.6.7.5 Specialized algorithms [priqueue.special]

24.6.8 Class template stack [stack]

24.6.8.1 General [stack.general]

24.6.8.2 Definition [stack.defn]

24.6.8.3 Constructors [stack.cons]

24.6.8.4 Constructors with allocators [stack.cons.alloc]

24.6.8.5 Modifiers [stack.mod]

24.6.8.6 Operators [stack.ops]

24.6.8.7 Specialized algorithms [stack.special]

24.6.9 Class template flat_map [flat.map]

24.6.9.1 Overview [flat.map.overview]

24.6.9.2 Definition [flat.map.defn]

24.6.9.3 Constructors [flat.map.cons]

24.6.9.4 Capacity [flat.map.capacity]

24.6.9.5 Access [flat.map.access]

24.6.9.6 Modifiers [flat.map.modifiers]

24.6.9.7 Erasure [flat.map.erasure]

24.6.10 Class template flat_multimap [flat.multimap]

24.6.10.1 Overview [flat.multimap.overview]

24.6.10.2 Definition [flat.multimap.defn]

24.6.10.3 Constructors [flat.multimap.cons]

24.6.10.4 Erasure [flat.multimap.erasure]

24.6.11 Class template flat_set [flat.set]

24.6.11.1 Overview [flat.set.overview]

24.6.11.2 Definition [flat.set.defn]

24.6.11.3 Constructors [flat.set.cons]

24.6.11.4 Modifiers [flat.set.modifiers]

24.6.11.5 Erasure [flat.set.erasure]

24.6.12 Class template flat_multiset [flat.multiset]

24.6.12.1 Overview [flat.multiset.overview]

24.6.12.2 Definition [flat.multiset.defn]

24.6.12.3 Constructors [flat.multiset.cons]

24.6.12.4 Modifiers [flat.multiset.modifiers]

24.6.12.5 Erasure [flat.multiset.erasure]

24.6.13 Container adaptors formatting [container.adaptors.format]

24.7 Views [views]

24.7.1 General [views.general]

24.7.2 Contiguous access [views.contiguous]

24.7.2.1 Header synopsis [span.syn]

24.7.2.2 Class template span [views.span]

24.7.2.2.1 Overview [span.overview]

24.7.2.2.2 Constructors, copy, and assignment [span.cons]

24.7.2.2.3 Deduction guides [span.deduct]

24.7.2.2.4 Subviews [span.sub]

24.7.2.2.5 Observers [span.obs]

24.7.2.2.6 Element access [span.elem]

24.7.2.2.7 Iterator support [span.iterators]

24.7.2.3 Views of object representation [span.objectrep]

24.7.3 Multidimensional access [views.multidim]

24.7.3.1 Overview [mdspan.overview]

24.7.3.2 Header synopsis [mdspan.syn]

24.7.3.3 Class template extents [mdspan.extents]

24.7.3.3.1 Overview [mdspan.extents.overview]

24.7.3.3.2 Exposition-only helpers [mdspan.extents.expo]

24.7.3.3.3 Constructors [mdspan.extents.cons]

24.7.3.3.4 Observers of the multidimensional index space [mdspan.extents.obs]

24.7.3.3.5 Comparison operators [mdspan.extents.cmp]

24.7.3.3.6 Alias template dextents [mdspan.extents.dextents]

24.7.3.4 Layout mapping [mdspan.layout]

24.7.3.4.1 General [mdspan.layout.general]

24.7.3.4.2 Requirements [mdspan.layout.reqmts]

24.7.3.4.3 Layout mapping policy requirements [mdspan.layout.policy.reqmts]

24.7.3.4.4 Layout mapping policies [mdspan.layout.policy.overview]

24.7.3.4.5 Class template layout_left​::​mapping [mdspan.layout.left]

24.7.3.4.5.1 Overview [mdspan.layout.left.overview]

24.7.3.4.5.2 Constructors [mdspan.layout.left.cons]

24.7.3.4.5.3 Observers [mdspan.layout.left.obs]

24.7.3.4.6 Class template layout_right​::​mapping [mdspan.layout.right]

24.7.3.4.6.1 Overview [mdspan.layout.right.overview]

24.7.3.4.6.2 Constructors [mdspan.layout.right.cons]

24.7.3.4.6.3 Observers [mdspan.layout.right.obs]

24.7.3.4.7 Class template layout_stride​::​mapping [mdspan.layout.stride]

24.7.3.4.7.1 Overview [mdspan.layout.stride.overview]

24.7.3.4.7.2 Exposition-only helpers [mdspan.layout.stride.expo]

24.7.3.4.7.3 Constructors [mdspan.layout.stride.cons]

24.7.3.4.7.4 Observers [mdspan.layout.stride.obs]

24.7.3.5 Accessor policy [mdspan.accessor]

24.7.3.5.1 General [mdspan.accessor.general]

24.7.3.5.2 Requirements [mdspan.accessor.reqmts]

24.7.3.5.3 Class template default_accessor [mdspan.accessor.default]

24.7.3.5.3.1 Overview [mdspan.accessor.default.overview]

24.7.3.5.3.2 Members [mdspan.accessor.default.members]

24.7.3.6 Class template mdspan [mdspan.mdspan]

24.7.3.6.1 Overview [mdspan.mdspan.overview]

24.7.3.6.2 Constructors [mdspan.mdspan.cons]

24.7.3.6.3 Members [mdspan.mdspan.members]

25 Iterators library [iterators][iterators]

25.1 General [iterators.general]

25.2 Header synopsis [iterator.synopsis]

25.3 Iterator requirements [iterator.requirements]

25.3.1 In general [iterator.requirements.general]

25.3.2 Associated types [iterator.assoc.types]

25.3.2.1 Incrementable traits [incrementable.traits]

25.3.2.2 Indirectly readable traits [readable.traits]

25.3.2.3 Iterator traits [iterator.traits]

25.3.3 Customization point objects [iterator.cust]

25.3.3.1 ranges​::​iter_move [iterator.cust.move]

25.3.3.2 ranges​::​iter_swap [iterator.cust.swap]

25.3.4 Iterator concepts [iterator.concepts]

25.3.4.1 General [iterator.concepts.general]

25.3.4.2 Concept indirectly_readable [iterator.concept.readable]

25.3.4.3 Concept indirectly_writable [iterator.concept.writable]

25.3.4.4 Concept weakly_incrementable [iterator.concept.winc]

25.3.4.5 Concept incrementable [iterator.concept.inc]

25.3.4.6 Concept input_or_output_iterator [iterator.concept.iterator]

25.3.4.7 Concept sentinel_for [iterator.concept.sentinel]

25.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]

25.3.4.9 Concept input_iterator [iterator.concept.input]

25.3.4.10 Concept output_iterator [iterator.concept.output]

25.3.4.11 Concept forward_iterator [iterator.concept.forward]

25.3.4.12 Concept bidirectional_iterator [iterator.concept.bidir]

25.3.4.13 Concept random_access_iterator [iterator.concept.random.access]

25.3.4.14 Concept contiguous_iterator [iterator.concept.contiguous]

25.3.5 C++17 iterator requirements [iterator.cpp17]

25.3.5.1 General [iterator.cpp17.general]

25.3.5.2 Cpp17Iterator [iterator.iterators]

25.3.5.3 Input iterators [input.iterators]

25.3.5.4 Output iterators [output.iterators]

25.3.5.5 Forward iterators [forward.iterators]

25.3.5.6 Bidirectional iterators [bidirectional.iterators]

25.3.5.7 Random access iterators [random.access.iterators]

25.3.6 Indirect callable requirements [indirectcallable]

25.3.6.1 General [indirectcallable.general]

25.3.6.2 Indirect callable traits [indirectcallable.traits]

25.3.6.3 Indirect callables [indirectcallable.indirectinvocable]

25.3.6.4 Class template projected [projected]

25.3.7 Common algorithm requirements [alg.req]

25.3.7.1 General [alg.req.general]

25.3.7.2 Concept indirectly_movable [alg.req.ind.move]

25.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]

25.3.7.4 Concept indirectly_swappable [alg.req.ind.swap]

25.3.7.5 Concept indirectly_comparable [alg.req.ind.cmp]

25.3.7.6 Concept permutable [alg.req.permutable]

25.3.7.7 Concept mergeable [alg.req.mergeable]

25.3.7.8 Concept sortable [alg.req.sortable]

25.4 Iterator primitives [iterator.primitives]

25.4.1 General [iterator.primitives.general]

25.4.2 Standard iterator tags [std.iterator.tags]

25.4.3 Iterator operations [iterator.operations]

25.4.4 Range iterator operations [range.iter.ops]

25.4.4.1 General [range.iter.ops.general]

25.4.4.2 ranges​::​advance [range.iter.op.advance]

25.4.4.3 ranges​::​distance [range.iter.op.distance]

25.4.4.4 ranges​::​next [range.iter.op.next]

25.4.4.5 ranges​::​prev [range.iter.op.prev]

25.5 Iterator adaptors [predef.iterators]

25.5.1 Reverse iterators [reverse.iterators]

25.5.1.1 General [reverse.iterators.general]

25.5.1.2 Class template reverse_iterator [reverse.iterator]

25.5.1.3 Requirements [reverse.iter.requirements]

25.5.1.4 Construction and assignment [reverse.iter.cons]

25.5.1.5 Conversion [reverse.iter.conv]

25.5.1.6 Element access [reverse.iter.elem]

25.5.1.7 Navigation [reverse.iter.nav]

25.5.1.8 Comparisons [reverse.iter.cmp]

25.5.1.9 Non-member functions [reverse.iter.nonmember]

25.5.2 Insert iterators [insert.iterators]

25.5.2.1 General [insert.iterators.general]

25.5.2.2 Class template back_insert_iterator [back.insert.iterator]

25.5.2.2.1 Operations [back.insert.iter.ops]

25.5.2.2.2 back_inserter [back.inserter]

25.5.2.3 Class template front_insert_iterator [front.insert.iterator]

25.5.2.3.1 Operations [front.insert.iter.ops]

25.5.2.3.2 front_inserter [front.inserter]

25.5.2.4 Class template insert_iterator [insert.iterator]

25.5.2.4.1 Operations [insert.iter.ops]

25.5.2.4.2 inserter [inserter]

25.5.3 Constant iterators and sentinels [const.iterators]

25.5.3.1 General [const.iterators.general]

25.5.3.2 Alias templates [const.iterators.alias]

25.5.3.3 Class template basic_const_iterator [const.iterators.iterator]

25.5.3.4 Member types [const.iterators.types]

25.5.3.5 Operations [const.iterators.ops]

25.5.4 Move iterators and sentinels [move.iterators]

25.5.4.1 General [move.iterators.general]

25.5.4.2 Class template move_iterator [move.iterator]

25.5.4.3 Requirements [move.iter.requirements]

25.5.4.4 Construction and assignment [move.iter.cons]

25.5.4.5 Conversion [move.iter.op.conv]

25.5.4.6 Element access [move.iter.elem]

25.5.4.7 Navigation [move.iter.nav]

25.5.4.8 Comparisons [move.iter.op.comp]

25.5.4.9 Non-member functions [move.iter.nonmember]

25.5.4.10 Class template move_sentinel [move.sentinel]

25.5.4.11 Operations [move.sent.ops]

25.5.5 Common iterators [iterators.common]

25.5.5.1 Class template common_iterator [common.iterator]

25.5.5.2 Associated types [common.iter.types]

25.5.5.3 Constructors and conversions [common.iter.const]

25.5.5.4 Accessors [common.iter.access]

25.5.5.5 Navigation [common.iter.nav]

25.5.5.6 Comparisons [common.iter.cmp]

25.5.5.7 Customizations [common.iter.cust]

25.5.6 Default sentinel [default.sentinel]

25.5.7 Counted iterators [iterators.counted]

25.5.7.1 Class template counted_iterator [counted.iterator]

25.5.7.2 Constructors and conversions [counted.iter.const]

25.5.7.3 Accessors [counted.iter.access]

25.5.7.4 Element access [counted.iter.elem]

25.5.7.5 Navigation [counted.iter.nav]

25.5.7.6 Comparisons [counted.iter.cmp]

25.5.7.7 Customizations [counted.iter.cust]

25.5.8 Unreachable sentinel [unreachable.sentinel]

25.6 Stream iterators [stream.iterators]

25.6.1 General [stream.iterators.general]

25.6.2 Class template istream_iterator [istream.iterator]

25.6.2.1 General [istream.iterator.general]

25.6.2.2 Constructors and destructor [istream.iterator.cons]

25.6.2.3 Operations [istream.iterator.ops]

25.6.3 Class template ostream_iterator [ostream.iterator]

25.6.3.1 General [ostream.iterator.general]

25.6.3.2 Constructors and destructor [ostream.iterator.cons.des]

25.6.3.3 Operations [ostream.iterator.ops]

25.6.4 Class template istreambuf_iterator [istreambuf.iterator]

25.6.4.1 General [istreambuf.iterator.general]

25.6.4.2 Class istreambuf_iterator​::​proxy [istreambuf.iterator.proxy]

25.6.4.3 Constructors [istreambuf.iterator.cons]

25.6.4.4 Operations [istreambuf.iterator.ops]

25.6.5 Class template ostreambuf_iterator [ostreambuf.iterator]

25.6.5.1 General [ostreambuf.iterator.general]

25.6.5.2 Constructors [ostreambuf.iter.cons]

25.6.5.3 Operations [ostreambuf.iter.ops]

25.7 Range access [iterator.range]

26 Ranges library [ranges][ranges]

26.1 General [ranges.general]

26.2 Header synopsis [ranges.syn]

26.3 Range access [range.access]

26.3.1 General [range.access.general]

26.3.2 ranges​::​begin [range.access.begin]

26.3.3 ranges​::​end [range.access.end]

26.3.4 ranges​::​cbegin [range.access.cbegin]

26.3.5 ranges​::​cend [range.access.cend]

26.3.6 ranges​::​rbegin [range.access.rbegin]

26.3.7 ranges​::​rend [range.access.rend]

26.3.8 ranges​::​crbegin [range.access.crbegin]

26.3.9 ranges​::​crend [range.access.crend]

26.3.10 ranges​::​size [range.prim.size]

26.3.11 ranges​::​ssize [range.prim.ssize]

26.3.12 ranges​::​empty [range.prim.empty]

26.3.13 ranges​::​data [range.prim.data]

26.3.14 ranges​::​cdata [range.prim.cdata]

26.4 Range requirements [range.req]

26.4.1 General [range.req.general]

26.4.2 Ranges [range.range]

26.4.3 Sized ranges [range.sized]

26.4.4 Views [range.view]

26.4.5 Other range refinements [range.refinements]

26.5 Range utilities [range.utility]

26.5.1 General [range.utility.general]

26.5.2 Helper concepts [range.utility.helpers]

26.5.3 View interface [view.interface]

26.5.3.1 General [view.interface.general]

26.5.3.2 Members [view.interface.members]

26.5.4 Sub-ranges [range.subrange]

26.5.4.1 General [range.subrange.general]

26.5.4.2 Constructors and conversions [range.subrange.ctor]

26.5.4.3 Accessors [range.subrange.access]

26.5.5 Dangling iterator handling [range.dangling]

26.5.6 Class template elements_of [range.elementsof]

26.5.7 Range conversions [range.utility.conv]

26.5.7.1 General [range.utility.conv.general]

26.5.7.2 ranges​::​to [range.utility.conv.to]

26.5.7.3 ranges​::​to adaptors [range.utility.conv.adaptors]

26.6 Range factories [range.factories]

26.6.1 General [range.factories.general]

26.6.2 Empty view [range.empty]

26.6.2.1 Overview [range.empty.overview]

26.6.2.2 Class template empty_view [range.empty.view]

26.6.3 Single view [range.single]

26.6.3.1 Overview [range.single.overview]

26.6.3.2 Class template single_view [range.single.view]

26.6.4 Iota view [range.iota]

26.6.4.1 Overview [range.iota.overview]

26.6.4.2 Class template iota_view [range.iota.view]

26.6.4.3 Class iota_view​::​iterator [range.iota.iterator]

26.6.4.4 Class iota_view​::​sentinel [range.iota.sentinel]

26.6.5 Repeat view [range.repeat]

26.6.5.1 Overview [range.repeat.overview]

26.6.5.2 Class template repeat_view [range.repeat.view]

26.6.5.3 Class repeat_view​::​iterator [range.repeat.iterator]

26.6.6 Istream view [range.istream]

26.6.6.1 Overview [range.istream.overview]

26.6.6.2 Class template basic_istream_view [range.istream.view]

26.6.6.3 Class basic_istream_view​::​iterator [range.istream.iterator]

26.7 Range adaptors [range.adaptors]

26.7.1 General [range.adaptors.general]

26.7.2 Range adaptor objects [range.adaptor.object]

26.7.3 Movable wrapper [range.move.wrap]

26.7.4 Non-propagating cache [range.nonprop.cache]

26.7.5 Range adaptor helpers [range.adaptor.helpers]

26.7.6 All view [range.all]

26.7.6.1 General [range.all.general]

26.7.6.2 Class template ref_view [range.ref.view]

26.7.6.3 Class template owning_view [range.owning.view]

26.7.7 As rvalue view [range.as.rvalue]

26.7.7.1 Overview [range.as.rvalue.overview]

26.7.7.2 Class template as_rvalue_view [range.as.rvalue.view]

26.7.8 Filter view [range.filter]

26.7.8.1 Overview [range.filter.overview]

26.7.8.2 Class template filter_view [range.filter.view]

26.7.8.3 Class filter_view​::​iterator [range.filter.iterator]

26.7.8.4 Class filter_view​::​sentinel [range.filter.sentinel]

26.7.9 Transform view [range.transform]

26.7.9.1 Overview [range.transform.overview]

26.7.9.2 Class template transform_view [range.transform.view]

26.7.9.3 Class template transform_view​::​iterator [range.transform.iterator]

26.7.9.4 Class template transform_view​::​sentinel [range.transform.sentinel]

26.7.10 Take view [range.take]

26.7.10.1 Overview [range.take.overview]

26.7.10.2 Class template take_view [range.take.view]

26.7.10.3 Class template take_view​::​sentinel [range.take.sentinel]

26.7.11 Take while view [range.take.while]

26.7.11.1 Overview [range.take.while.overview]

26.7.11.2 Class template take_while_view [range.take.while.view]

26.7.11.3 Class template take_while_view​::​sentinel [range.take.while.sentinel]

26.7.12 Drop view [range.drop]

26.7.12.1 Overview [range.drop.overview]

26.7.12.2 Class template drop_view [range.drop.view]

26.7.13 Drop while view [range.drop.while]

26.7.13.1 Overview [range.drop.while.overview]

26.7.13.2 Class template drop_while_view [range.drop.while.view]

26.7.14 Join view [range.join]

26.7.14.1 Overview [range.join.overview]

26.7.14.2 Class template join_view [range.join.view]

26.7.14.3 Class template join_view​::​iterator [range.join.iterator]

26.7.14.4 Class template join_view​::​sentinel [range.join.sentinel]

26.7.15 Join with view [range.join.with]

26.7.15.1 Overview [range.join.with.overview]

26.7.15.2 Class template join_with_view [range.join.with.view]

26.7.15.3 Class template join_with_view​::​iterator [range.join.with.iterator]

26.7.15.4 Class template join_with_view​::​sentinel [range.join.with.sentinel]

26.7.16 Lazy split view [range.lazy.split]

26.7.16.1 Overview [range.lazy.split.overview]

26.7.16.2 Class template lazy_split_view [range.lazy.split.view]

26.7.16.3 Class template lazy_split_view​::​outer-iterator [range.lazy.split.outer]

26.7.16.4 Class lazy_split_view​::​_outer-iterator_​::​value_type [range.lazy.split.outer.value]

26.7.16.5 Class template lazy_split_view​::​inner-iterator [range.lazy.split.inner]

26.7.17 Split view [range.split]

26.7.17.1 Overview [range.split.overview]

26.7.17.2 Class template split_view [range.split.view]

26.7.17.3 Class split_view​::​iterator [range.split.iterator]

26.7.17.4 Class split_view​::​sentinel [range.split.sentinel]

26.7.18 Counted view [range.counted]

26.7.19 Common view [range.common]

26.7.19.1 Overview [range.common.overview]

26.7.19.2 Class template common_view [range.common.view]

26.7.20 Reverse view [range.reverse]

26.7.20.1 Overview [range.reverse.overview]

26.7.20.2 Class template reverse_view [range.reverse.view]

26.7.21 As const view [range.as.const]

26.7.21.1 Overview [range.as.const.overview]

26.7.21.2 Class template as_const_view [range.as.const.view]

26.7.22 Elements view [range.elements]

26.7.22.1 Overview [range.elements.overview]

26.7.22.2 Class template elements_view [range.elements.view]

26.7.22.3 Class template elements_view​::​iterator [range.elements.iterator]

26.7.22.4 Class template elements_view​::​sentinel [range.elements.sentinel]

26.7.23 Enumerate view [range.enumerate]

26.7.23.1 Overview [range.enumerate.overview]

26.7.23.2 Class template enumerate_view [range.enumerate.view]

26.7.23.3 Class template enumerate_view​::​iterator [range.enumerate.iterator]

26.7.23.4 Class template enumerate_view​::​sentinel [range.enumerate.sentinel]

26.7.24 Zip view [range.zip]

26.7.24.1 Overview [range.zip.overview]

26.7.24.2 Class template zip_view [range.zip.view]

26.7.24.3 Class template zip_view​::​iterator [range.zip.iterator]

26.7.24.4 Class template zip_view​::​sentinel [range.zip.sentinel]

26.7.25 Zip transform view [range.zip.transform]

26.7.25.1 Overview [range.zip.transform.overview]

26.7.25.2 Class template zip_transform_view [range.zip.transform.view]

26.7.25.3 Class template zip_transform_view​::​iterator [range.zip.transform.iterator]

26.7.25.4 Class template zip_transform_view​::​sentinel [range.zip.transform.sentinel]

26.7.26 Adjacent view [range.adjacent]

26.7.26.1 Overview [range.adjacent.overview]

26.7.26.2 Class template adjacent_view [range.adjacent.view]

26.7.26.3 Class template adjacent_view​::​iterator [range.adjacent.iterator]

26.7.26.4 Class template adjacent_view​::​sentinel [range.adjacent.sentinel]

26.7.27 Adjacent transform view [range.adjacent.transform]

26.7.27.1 Overview [range.adjacent.transform.overview]

26.7.27.2 Class template adjacent_transform_view [range.adjacent.transform.view]

26.7.27.3 Class template adjacent_transform_view​::​iterator [range.adjacent.transform.iterator]

26.7.27.4 Class template adjacent_transform_view​::​sentinel [range.adjacent.transform.sentinel]

26.7.28 Chunk view [range.chunk]

26.7.28.1 Overview [range.chunk.overview]

26.7.28.2 Class template chunk_view for input ranges [range.chunk.view.input]

26.7.28.3 Class chunk_view​::​outer-iterator [range.chunk.outer.iter]

26.7.28.4 Class chunk_view​::​_outer-iterator_​::​value_type [range.chunk.outer.value]

26.7.28.5 Class chunk_view​::​inner-iterator [range.chunk.inner.iter]

26.7.28.6 Class template chunk_view for forward ranges [range.chunk.view.fwd]

26.7.28.7 Class template chunk_view​::​iterator for forward ranges [range.chunk.fwd.iter]

26.7.29 Slide view [range.slide]

26.7.29.1 Overview [range.slide.overview]

26.7.29.2 Class template slide_view [range.slide.view]

26.7.29.3 Class template slide_view​::​iterator [range.slide.iterator]

26.7.29.4 Class slide_view​::​sentinel [range.slide.sentinel]

26.7.30 Chunk by view [range.chunk.by]

26.7.30.1 Overview [range.chunk.by.overview]

26.7.30.2 Class template chunk_by_view [range.chunk.by.view]

26.7.30.3 Class chunk_by_view​::​iterator [range.chunk.by.iter]

26.7.31 Stride view [range.stride]

26.7.31.1 Overview [range.stride.overview]

26.7.31.2 Class template stride_view [range.stride.view]

26.7.31.3 Class template stride_view​::​iterator [range.stride.iterator]

26.7.32 Cartesian product view [range.cartesian]

26.7.32.1 Overview [range.cartesian.overview]

26.7.32.2 Class template cartesian_product_view [range.cartesian.view]

26.7.32.3 Class template cartesian_product_view​::​iterator [range.cartesian.iterator]

26.8 Range generators [coro.generator]

26.8.1 Overview [coroutine.generator.overview]

26.8.2 Header synopsis [generator.syn]

26.8.3 Class template generator [coro.generator.class]

26.8.4 Members [coro.generator.members]

26.8.5 Class generator​::​promise_type [coro.generator.promise]

26.8.6 Class generator​::​iterator [coro.generator.iterator]

27 Algorithms library [algorithms][algorithms]

27.1 General [algorithms.general]

27.2 Algorithms requirements [algorithms.requirements]

27.3 Parallel algorithms [algorithms.parallel]

27.3.1 Preamble [algorithms.parallel.defns]

27.3.2 Requirements on user-provided function objects [algorithms.parallel.user]

27.3.3 Effect of execution policies on algorithm execution [algorithms.parallel.exec]

27.3.4 Parallel algorithm exceptions [algorithms.parallel.exceptions]

27.3.5 ExecutionPolicy algorithm overloads [algorithms.parallel.overloads]

27.4 Header synopsis [algorithm.syn]

27.5 Algorithm result types [algorithms.results]

27.6 Non-modifying sequence operations [alg.nonmodifying]

27.6.1 All of [alg.all.of]

27.6.2 Any of [alg.any.of]

27.6.3 None of [alg.none.of]

27.6.4 Contains [alg.contains]

27.6.5 For each [alg.foreach]

27.6.6 Find [alg.find]

27.6.7 Find last [alg.find.last]

27.6.8 Find end [alg.find.end]

27.6.9 Find first [alg.find.first.of]

27.6.10 Adjacent find [alg.adjacent.find]

27.6.11 Count [alg.count]

27.6.12 Mismatch [mismatch]

27.6.13 Equal [alg.equal]

27.6.14 Is permutation [alg.is.permutation]

27.6.15 Search [alg.search]

27.6.16 Starts with [alg.starts.with]

27.6.17 Ends with [alg.ends.with]

27.6.18 Fold [alg.fold]

27.7 Mutating sequence operations [alg.modifying.operations]

27.7.1 Copy [alg.copy]

27.7.2 Move [alg.move]

27.7.3 Swap [alg.swap]

27.7.4 Transform [alg.transform]

27.7.5 Replace [alg.replace]

27.7.6 Fill [alg.fill]

27.7.7 Generate [alg.generate]

27.7.8 Remove [alg.remove]

27.7.9 Unique [alg.unique]

27.7.10 Reverse [alg.reverse]

27.7.11 Rotate [alg.rotate]

27.7.12 Sample [alg.random.sample]

27.7.13 Shuffle [alg.random.shuffle]

27.7.14 Shift [alg.shift]

27.8.1 General [alg.sorting.general]

27.8.2 Sorting [alg.sort]

27.8.2.1 sort [sort]

27.8.2.2 stable_sort [stable.sort]

27.8.2.3 partial_sort [partial.sort]

27.8.2.4 partial_sort_copy [partial.sort.copy]

27.8.2.5 is_sorted [is.sorted]

27.8.3 Nth element [alg.nth.element]

27.8.4 Binary search [alg.binary.search]

27.8.4.1 General [alg.binary.search.general]

27.8.4.2 lower_bound [lower.bound]

27.8.4.3 upper_bound [upper.bound]

27.8.4.4 equal_range [equal.range]

27.8.4.5 binary_search [binary.search]

27.8.5 Partitions [alg.partitions]

27.8.6 Merge [alg.merge]

27.8.7 Set operations on sorted structures [alg.set.operations]

27.8.7.1 General [alg.set.operations.general]

27.8.7.2 includes [includes]

27.8.7.3 set_union [set.union]

27.8.7.4 set_intersection [set.intersection]

27.8.7.5 set_difference [set.difference]

27.8.7.6 set_symmetric_difference [set.symmetric.difference]

27.8.8 Heap operations [alg.heap.operations]

27.8.8.1 General [alg.heap.operations.general]

27.8.8.2 push_heap [push.heap]

27.8.8.3 pop_heap [pop.heap]

27.8.8.4 make_heap [make.heap]

27.8.8.5 sort_heap [sort.heap]

27.8.8.6 is_heap [is.heap]

27.8.9 Minimum and maximum [alg.min.max]

27.8.10 Bounded value [alg.clamp]

27.8.11 Lexicographical comparison [alg.lex.comparison]

27.8.12 Three-way comparison algorithms [alg.three.way]

27.8.13 Permutation generators [alg.permutation.generators]

27.9 Header synopsis [numeric.ops.overview]

27.10 Generalized numeric operations [numeric.ops]

27.10.1 General [numeric.ops.general]

27.10.2 Definitions [numerics.defns]

27.10.3 Accumulate [accumulate]

27.10.4 Reduce [reduce]

27.10.5 Inner product [inner.product]

27.10.6 Transform reduce [transform.reduce]

27.10.7 Partial sum [partial.sum]

27.10.8 Exclusive scan [exclusive.scan]

27.10.9 Inclusive scan [inclusive.scan]

27.10.10 Transform exclusive scan [transform.exclusive.scan]

27.10.11 Transform inclusive scan [transform.inclusive.scan]

27.10.12 Adjacent difference [adjacent.difference]

27.10.13 Iota [numeric.iota]

27.10.14 Greatest common divisor [numeric.ops.gcd]

27.10.15 Least common multiple [numeric.ops.lcm]

27.10.16 Midpoint [numeric.ops.midpoint]

27.11 Specialized algorithms [specialized.algorithms]

27.11.1 General [specialized.algorithms.general]

27.11.2 Special memory concepts [special.mem.concepts]

27.11.3 uninitialized_default_construct [uninitialized.construct.default]

27.11.4 uninitialized_value_construct [uninitialized.construct.value]

27.11.5 uninitialized_copy [uninitialized.copy]

27.11.6 uninitialized_move [uninitialized.move]

27.11.7 uninitialized_fill [uninitialized.fill]

27.11.8 construct_at [specialized.construct]

27.11.9 destroy [specialized.destroy]

27.12 C library algorithms [alg.c.library]

28 Numerics library [numerics][numerics]

28.1 General [numerics.general]

28.2 Numeric type requirements [numeric.requirements]

28.3 The floating-point environment [cfenv]

28.3.1 Header synopsis [cfenv.syn]

28.3.2 Threads [cfenv.thread]

28.4 Complex numbers [complex.numbers]

28.4.1 General [complex.numbers.general]

28.4.2 Header synopsis [complex.syn]

28.4.3 Class template complex [complex]

28.4.4 Member functions [complex.members]

28.4.5 Member operators [complex.member.ops]

28.4.6 Non-member operations [complex.ops]

28.4.7 Value operations [complex.value.ops]

28.4.8 Transcendentals [complex.transcendentals]

28.4.9 Additional overloads [cmplx.over]

28.4.10 Suffixes for complex number literals [complex.literals]

28.5 Random number generation [rand]

28.5.1 General [rand.general]

28.5.2 Header synopsis [rand.synopsis]

28.5.3 Requirements [rand.req]

28.5.3.1 General requirements [rand.req.genl]

28.5.3.2 Seed sequence requirements [rand.req.seedseq]

28.5.3.3 Uniform random bit generator requirements [rand.req.urng]

28.5.3.4 Random number engine requirements [rand.req.eng]

28.5.3.5 Random number engine adaptor requirements [rand.req.adapt]

28.5.3.6 Random number distribution requirements [rand.req.dist]

28.5.4 Random number engine class templates [rand.eng]

28.5.4.1 General [rand.eng.general]

28.5.4.2 Class template linear_congruential_engine [rand.eng.lcong]

28.5.4.3 Class template mersenne_twister_engine [rand.eng.mers]

28.5.4.4 Class template subtract_with_carry_engine [rand.eng.sub]

28.5.5 Random number engine adaptor class templates [rand.adapt]

28.5.5.1 In general [rand.adapt.general]

28.5.5.2 Class template discard_block_engine [rand.adapt.disc]

28.5.5.3 Class template independent_bits_engine [rand.adapt.ibits]

28.5.5.4 Class template shuffle_order_engine [rand.adapt.shuf]

28.5.6 Engines and engine adaptors with predefined parameters [rand.predef]

28.5.7 Class random_device [rand.device]

28.5.8 Utilities [rand.util]

28.5.8.1 Class seed_seq [rand.util.seedseq]

28.5.8.2 Function template generate_canonical [rand.util.canonical]

28.5.9 Random number distribution class templates [rand.dist]

28.5.9.1 In general [rand.dist.general]

28.5.9.2 Uniform distributions [rand.dist.uni]

28.5.9.2.1 Class template uniform_int_distribution [rand.dist.uni.int]

28.5.9.2.2 Class template uniform_real_distribution [rand.dist.uni.real]

28.5.9.3 Bernoulli distributions [rand.dist.bern]

28.5.9.3.1 Class bernoulli_distribution [rand.dist.bern.bernoulli]

28.5.9.3.2 Class template binomial_distribution [rand.dist.bern.bin]

28.5.9.3.3 Class template geometric_distribution [rand.dist.bern.geo]

28.5.9.3.4 Class template negative_binomial_distribution [rand.dist.bern.negbin]

28.5.9.4 Poisson distributions [rand.dist.pois]

28.5.9.4.1 Class template poisson_distribution [rand.dist.pois.poisson]

28.5.9.4.2 Class template exponential_distribution [rand.dist.pois.exp]

28.5.9.4.3 Class template gamma_distribution [rand.dist.pois.gamma]

28.5.9.4.4 Class template weibull_distribution [rand.dist.pois.weibull]

28.5.9.4.5 Class template extreme_value_distribution [rand.dist.pois.extreme]

28.5.9.5 Normal distributions [rand.dist.norm]

28.5.9.5.1 Class template normal_distribution [rand.dist.norm.normal]

28.5.9.5.2 Class template lognormal_distribution [rand.dist.norm.lognormal]

28.5.9.5.3 Class template chi_squared_distribution [rand.dist.norm.chisq]

28.5.9.5.4 Class template cauchy_distribution [rand.dist.norm.cauchy]

28.5.9.5.5 Class template fisher_f_distribution [rand.dist.norm.f]

28.5.9.5.6 Class template student_t_distribution [rand.dist.norm.t]

28.5.9.6 Sampling distributions [rand.dist.samp]

28.5.9.6.1 Class template discrete_distribution [rand.dist.samp.discrete]

28.5.9.6.2 Class template piecewise_constant_distribution [rand.dist.samp.pconst]

28.5.9.6.3 Class template piecewise_linear_distribution [rand.dist.samp.plinear]

28.5.10 Low-quality random number generation [c.math.rand]

28.6 Numeric arrays [numarray]

28.6.1 Header synopsis [valarray.syn]

28.6.2 Class template valarray [template.valarray]

28.6.2.1 Overview [template.valarray.overview]

28.6.2.2 Constructors [valarray.cons]

28.6.2.3 Assignment [valarray.assign]

28.6.2.4 Element access [valarray.access]

28.6.2.5 Subset operations [valarray.sub]

28.6.2.6 Unary operators [valarray.unary]

28.6.2.7 Compound assignment [valarray.cassign]

28.6.2.8 Member functions [valarray.members]

28.6.3 valarray non-member operations [valarray.nonmembers]

28.6.3.1 Binary operators [valarray.binary]

28.6.3.2 Logical operators [valarray.comparison]

28.6.3.3 Transcendentals [valarray.transcend]

28.6.3.4 Specialized algorithms [valarray.special]

28.6.4 Class slice [class.slice]

28.6.4.1 Overview [class.slice.overview]

28.6.4.2 Constructors [cons.slice]

28.6.4.3 Access functions [slice.access]

28.6.4.4 Operators [slice.ops]

28.6.5 Class template slice_array [template.slice.array]

28.6.5.1 Overview [template.slice.array.overview]

28.6.5.2 Assignment [slice.arr.assign]

28.6.5.3 Compound assignment [slice.arr.comp.assign]

28.6.5.4 Fill function [slice.arr.fill]

28.6.6 The gslice class [class.gslice]

28.6.6.1 Overview [class.gslice.overview]

28.6.6.2 Constructors [gslice.cons]

28.6.6.3 Access functions [gslice.access]

28.6.7 Class template gslice_array [template.gslice.array]

28.6.7.1 Overview [template.gslice.array.overview]

28.6.7.2 Assignment [gslice.array.assign]

28.6.7.3 Compound assignment [gslice.array.comp.assign]

28.6.7.4 Fill function [gslice.array.fill]

28.6.8 Class template mask_array [template.mask.array]

28.6.8.1 Overview [template.mask.array.overview]

28.6.8.2 Assignment [mask.array.assign]

28.6.8.3 Compound assignment [mask.array.comp.assign]

28.6.8.4 Fill function [mask.array.fill]

28.6.9 Class template indirect_array [template.indirect.array]

28.6.9.1 Overview [template.indirect.array.overview]

28.6.9.2 Assignment [indirect.array.assign]

28.6.9.3 Compound assignment [indirect.array.comp.assign]

28.6.9.4 Fill function [indirect.array.fill]

28.6.10 valarray range access [valarray.range]

28.7 Mathematical functions for floating-point types [c.math]

28.7.1 Header synopsis [cmath.syn]

28.7.2 Absolute values [c.math.abs]

28.7.3 Three-dimensional hypotenuse [c.math.hypot3]

28.7.4 Linear interpolation [c.math.lerp]

28.7.5 Classification / comparison functions [c.math.fpclass]

28.7.6 Mathematical special functions [sf.cmath]

28.7.6.1 General [sf.cmath.general]

28.7.6.2 Associated Laguerre polynomials [sf.cmath.assoc.laguerre]

28.7.6.3 Associated Legendre functions [sf.cmath.assoc.legendre]

28.7.6.4 Beta function [sf.cmath.beta]

28.7.6.5 Complete elliptic integral of the first kind [sf.cmath.comp.ellint.1]

28.7.6.6 Complete elliptic integral of the second kind [sf.cmath.comp.ellint.2]

28.7.6.7 Complete elliptic integral of the third kind [sf.cmath.comp.ellint.3]

28.7.6.8 Regular modified cylindrical Bessel functions [sf.cmath.cyl.bessel.i]

28.7.6.9 Cylindrical Bessel functions of the first kind [sf.cmath.cyl.bessel.j]

28.7.6.10 Irregular modified cylindrical Bessel functions [sf.cmath.cyl.bessel.k]

28.7.6.11 Cylindrical Neumann functions [sf.cmath.cyl.neumann]

28.7.6.12 Incomplete elliptic integral of the first kind [sf.cmath.ellint.1]

28.7.6.13 Incomplete elliptic integral of the second kind [sf.cmath.ellint.2]

28.7.6.14 Incomplete elliptic integral of the third kind [sf.cmath.ellint.3]

28.7.6.15 Exponential integral [sf.cmath.expint]

28.7.6.16 Hermite polynomials [sf.cmath.hermite]

28.7.6.17 Laguerre polynomials [sf.cmath.laguerre]

28.7.6.18 Legendre polynomials [sf.cmath.legendre]

28.7.6.19 Riemann zeta function [sf.cmath.riemann.zeta]

28.7.6.20 Spherical Bessel functions of the first kind [sf.cmath.sph.bessel]

28.7.6.21 Spherical associated Legendre functions [sf.cmath.sph.legendre]

28.7.6.22 Spherical Neumann functions [sf.cmath.sph.neumann]

28.8 Numbers [numbers]

28.8.1 Header synopsis [numbers.syn]

28.8.2 Mathematical constants [math.constants]

29 Time library [time][time]

29.1 General [time.general]

29.2 Header synopsis [time.syn]

29.3 Cpp17Clock requirements [time.clock.req]

29.4.1 treat_as_floating_point [time.traits.is.fp]

29.4.2 duration_values [time.traits.duration.values]

29.4.3 Specializations of common_type [time.traits.specializations]

29.4.4 Class template is_clock [time.traits.is.clock]

29.5 Class template duration [time.duration]

29.5.1 General [time.duration.general]

29.5.2 Constructors [time.duration.cons]

29.5.3 Observer [time.duration.observer]

29.5.4 Arithmetic [time.duration.arithmetic]

29.5.5 Special values [time.duration.special]

29.5.6 Non-member arithmetic [time.duration.nonmember]

29.5.7 Comparisons [time.duration.comparisons]

29.5.8 Conversions [time.duration.cast]

29.5.9 Suffixes for duration literals [time.duration.literals]

29.5.10 Algorithms [time.duration.alg]

29.5.11 I/O [time.duration.io]

29.6 Class template time_point [time.point]

29.6.1 General [time.point.general]

29.6.2 Constructors [time.point.cons]

29.6.3 Observer [time.point.observer]

29.6.4 Arithmetic [time.point.arithmetic]

29.6.5 Special values [time.point.special]

29.6.6 Non-member arithmetic [time.point.nonmember]

29.6.7 Comparisons [time.point.comparisons]

29.6.8 Conversions [time.point.cast]

29.7 Clocks [time.clock]

29.7.1 General [time.clock.general]

29.7.2 Class system_clock [time.clock.system]

29.7.2.1 Overview [time.clock.system.overview]

29.7.2.2 Members [time.clock.system.members]

29.7.2.3 Non-member functions [time.clock.system.nonmembers]

29.7.3 Class utc_clock [time.clock.utc]

29.7.3.1 Overview [time.clock.utc.overview]

29.7.3.2 Member functions [time.clock.utc.members]

29.7.3.3 Non-member functions [time.clock.utc.nonmembers]

29.7.4 Class tai_clock [time.clock.tai]

29.7.4.1 Overview [time.clock.tai.overview]

29.7.4.2 Member functions [time.clock.tai.members]

29.7.4.3 Non-member functions [time.clock.tai.nonmembers]

29.7.5 Class gps_clock [time.clock.gps]

29.7.5.1 Overview [time.clock.gps.overview]

29.7.5.2 Member functions [time.clock.gps.members]

29.7.5.3 Non-member functions [time.clock.gps.nonmembers]

29.7.6 Type file_clock [time.clock.file]

29.7.6.1 Overview [time.clock.file.overview]

29.7.6.2 Member functions [time.clock.file.members]

29.7.6.3 Non-member functions [time.clock.file.nonmembers]

29.7.7 Class steady_clock [time.clock.steady]

29.7.8 Class high_resolution_clock [time.clock.hires]

29.7.9 Local time [time.clock.local]

29.7.10 time_point conversions [time.clock.cast]

29.7.10.1 Class template clock_time_conversion [time.clock.conv]

29.7.10.2 Identity conversions [time.clock.cast.id]

29.7.10.3 Conversions between system_clock and utc_clock [time.clock.cast.sys.utc]

29.7.10.4 Conversions between system_clock and other clocks [time.clock.cast.sys]

29.7.10.5 Conversions between utc_clock and other clocks [time.clock.cast.utc]

29.7.10.6 Function template clock_cast [time.clock.cast.fn]

29.8 The civil calendar [time.cal]

29.8.1 In general [time.cal.general]

29.8.2 Class last_spec [time.cal.last]

29.8.3 Class day [time.cal.day]

29.8.3.1 Overview [time.cal.day.overview]

29.8.3.2 Member functions [time.cal.day.members]

29.8.3.3 Non-member functions [time.cal.day.nonmembers]

29.8.4 Class month [time.cal.month]

29.8.4.1 Overview [time.cal.month.overview]

29.8.4.2 Member functions [time.cal.month.members]

29.8.4.3 Non-member functions [time.cal.month.nonmembers]

29.8.5 Class year [time.cal.year]

29.8.5.1 Overview [time.cal.year.overview]

29.8.5.2 Member functions [time.cal.year.members]

29.8.5.3 Non-member functions [time.cal.year.nonmembers]

29.8.6 Class weekday [time.cal.wd]

29.8.6.1 Overview [time.cal.wd.overview]

29.8.6.2 Member functions [time.cal.wd.members]

29.8.6.3 Non-member functions [time.cal.wd.nonmembers]

29.8.7 Class weekday_indexed [time.cal.wdidx]

29.8.7.1 Overview [time.cal.wdidx.overview]

29.8.7.2 Member functions [time.cal.wdidx.members]

29.8.7.3 Non-member functions [time.cal.wdidx.nonmembers]

29.8.8 Class weekday_last [time.cal.wdlast]

29.8.8.1 Overview [time.cal.wdlast.overview]

29.8.8.2 Member functions [time.cal.wdlast.members]

29.8.8.3 Non-member functions [time.cal.wdlast.nonmembers]

29.8.9 Class month_day [time.cal.md]

29.8.9.1 Overview [time.cal.md.overview]

29.8.9.2 Member functions [time.cal.md.members]

29.8.9.3 Non-member functions [time.cal.md.nonmembers]

29.8.10 Class month_day_last [time.cal.mdlast]

29.8.11 Class month_weekday [time.cal.mwd]

29.8.11.1 Overview [time.cal.mwd.overview]

29.8.11.2 Member functions [time.cal.mwd.members]

29.8.11.3 Non-member functions [time.cal.mwd.nonmembers]

29.8.12 Class month_weekday_last [time.cal.mwdlast]

29.8.12.1 Overview [time.cal.mwdlast.overview]

29.8.12.2 Member functions [time.cal.mwdlast.members]

29.8.12.3 Non-member functions [time.cal.mwdlast.nonmembers]

29.8.13 Class year_month [time.cal.ym]

29.8.13.1 Overview [time.cal.ym.overview]

29.8.13.2 Member functions [time.cal.ym.members]

29.8.13.3 Non-member functions [time.cal.ym.nonmembers]

29.8.14 Class year_month_day [time.cal.ymd]

29.8.14.1 Overview [time.cal.ymd.overview]

29.8.14.2 Member functions [time.cal.ymd.members]

29.8.14.3 Non-member functions [time.cal.ymd.nonmembers]

29.8.15 Class year_month_day_last [time.cal.ymdlast]

29.8.15.1 Overview [time.cal.ymdlast.overview]

29.8.15.2 Member functions [time.cal.ymdlast.members]

29.8.15.3 Non-member functions [time.cal.ymdlast.nonmembers]

29.8.16 Class year_month_weekday [time.cal.ymwd]

29.8.16.1 Overview [time.cal.ymwd.overview]

29.8.16.2 Member functions [time.cal.ymwd.members]

29.8.16.3 Non-member functions [time.cal.ymwd.nonmembers]

29.8.17 Class year_month_weekday_last [time.cal.ymwdlast]

29.8.17.1 Overview [time.cal.ymwdlast.overview]

29.8.17.2 Member functions [time.cal.ymwdlast.members]

29.8.17.3 Non-member functions [time.cal.ymwdlast.nonmembers]

29.8.18 Conventional syntax operators [time.cal.operators]

29.9 Class template hh_mm_ss [time.hms]

29.9.1 Overview [time.hms.overview]

29.9.2 Members [time.hms.members]

29.9.3 Non-members [time.hms.nonmembers]

29.10 12/24 hours functions [time.12]

29.11 Time zones [time.zone]

29.11.1 In general [time.zone.general]

29.11.2 Time zone database [time.zone.db]

29.11.2.1 Class tzdb [time.zone.db.tzdb]

29.11.2.2 Class tzdb_list [time.zone.db.list]

29.11.2.3 Time zone database access [time.zone.db.access]

29.11.2.4 Remote time zone database support [time.zone.db.remote]

29.11.3 Exception classes [time.zone.exception]

29.11.3.1 Class nonexistent_local_time [time.zone.exception.nonexist]

29.11.3.2 Class ambiguous_local_time [time.zone.exception.ambig]

29.11.4 Information classes [time.zone.info]

29.11.4.1 Class sys_info [time.zone.info.sys]

29.11.4.2 Class local_info [time.zone.info.local]

29.11.5 Class time_zone [time.zone.timezone]

29.11.5.1 Overview [time.zone.overview]

29.11.5.2 Member functions [time.zone.members]

29.11.5.3 Non-member functions [time.zone.nonmembers]

29.11.6 Class template zoned_traits [time.zone.zonedtraits]

29.11.7 Class template zoned_time [time.zone.zonedtime]

29.11.7.1 Overview [time.zone.zonedtime.overview]

29.11.7.2 Constructors [time.zone.zonedtime.ctor]

29.11.7.3 Member functions [time.zone.zonedtime.members]

29.11.7.4 Non-member functions [time.zone.zonedtime.nonmembers]

29.11.8 Class leap_second [time.zone.leap]

29.11.8.1 Overview [time.zone.leap.overview]

29.11.8.2 Member functions [time.zone.leap.members]

29.11.8.3 Non-member functions [time.zone.leap.nonmembers]

29.11.9.1 Overview [time.zone.link.overview]

29.11.9.2 Member functions [time.zone.link.members]

29.11.9.3 Non-member functions [time.zone.link.nonmembers]

29.12 Formatting [time.format]

29.13 Parsing [time.parse]

29.14 Header synopsis [ctime.syn]

30 Localization library [localization][localization]

30.1 General [localization.general]

30.2 Header synopsis [locale.syn]

30.3 Locales [locales]

30.3.1 Class locale [locale]

30.3.1.1 General [locale.general]

30.3.1.2 Types [locale.types]

30.3.1.2.1 Type locale​::​category [locale.category]

30.3.1.2.2 Class locale​::​facet [locale.facet]

30.3.1.2.3 Class locale​::​id [locale.id]

30.3.1.3 Constructors and destructor [locale.cons]

30.3.1.4 Members [locale.members]

30.3.1.5 Operators [locale.operators]

30.3.1.6 Static members [locale.statics]

30.3.2 locale globals [locale.global.templates]

30.3.3 Convenience interfaces [locale.convenience]

30.3.3.1 Character classification [classification]

30.3.3.2 Character conversions [conversions.character]

30.4 Standard locale categories [locale.categories]

30.4.1 General [locale.categories.general]

30.4.2 The ctype category [category.ctype]

30.4.2.1 General [category.ctype.general]

30.4.2.2 Class template ctype [locale.ctype]

30.4.2.2.1 General [locale.ctype.general]

30.4.2.2.2 ctype members [locale.ctype.members]

30.4.2.2.3 ctype virtual functions [locale.ctype.virtuals]

30.4.2.3 Class template ctype_byname [locale.ctype.byname]

30.4.2.4 ctype specialization [facet.ctype.special]

30.4.2.4.1 General [facet.ctype.special.general]

30.4.2.4.2 Destructor [facet.ctype.char.dtor]

30.4.2.4.3 Members [facet.ctype.char.members]

30.4.2.4.4 Static members [facet.ctype.char.statics]

30.4.2.4.5 Virtual functions [facet.ctype.char.virtuals]

30.4.2.5 Class template codecvt [locale.codecvt]

30.4.2.5.1 General [locale.codecvt.general]

30.4.2.5.2 Members [locale.codecvt.members]

30.4.2.5.3 Virtual functions [locale.codecvt.virtuals]

30.4.2.6 Class template codecvt_byname [locale.codecvt.byname]

30.4.3 The numeric category [category.numeric]

30.4.3.1 General [category.numeric.general]

30.4.3.2 Class template num_get [locale.num.get]

30.4.3.2.1 General [locale.num.get.general]

30.4.3.2.2 Members [facet.num.get.members]

30.4.3.2.3 Virtual functions [facet.num.get.virtuals]

30.4.3.3 Class template num_put [locale.nm.put]

30.4.3.3.1 General [locale.nm.put.general]

30.4.3.3.2 Members [facet.num.put.members]

30.4.3.3.3 Virtual functions [facet.num.put.virtuals]

30.4.4 The numeric punctuation facet [facet.numpunct]

30.4.4.1 Class template numpunct [locale.numpunct]

30.4.4.1.1 General [locale.numpunct.general]

30.4.4.1.2 Members [facet.numpunct.members]

30.4.4.1.3 Virtual functions [facet.numpunct.virtuals]

30.4.4.2 Class template numpunct_byname [locale.numpunct.byname]

30.4.5 The collate category [category.collate]

30.4.5.1 Class template collate [locale.collate]

30.4.5.1.1 General [locale.collate.general]

30.4.5.1.2 Members [locale.collate.members]

30.4.5.1.3 Virtual functions [locale.collate.virtuals]

30.4.5.2 Class template collate_byname [locale.collate.byname]

30.4.6 The time category [category.time]

30.4.6.1 General [category.time.general]

30.4.6.2 Class template time_get [locale.time.get]

30.4.6.2.1 General [locale.time.get.general]

30.4.6.2.2 Members [locale.time.get.members]

30.4.6.2.3 Virtual functions [locale.time.get.virtuals]

30.4.6.3 Class template time_get_byname [locale.time.get.byname]

30.4.6.4 Class template time_put [locale.time.put]

30.4.6.4.1 Members [locale.time.put.members]

30.4.6.4.2 Virtual functions [locale.time.put.virtuals]

30.4.6.5 Class template time_put_byname [locale.time.put.byname]

30.4.7 The monetary category [category.monetary]

30.4.7.1 General [category.monetary.general]

30.4.7.2 Class template money_get [locale.money.get]

30.4.7.2.1 Members [locale.money.get.members]

30.4.7.2.2 Virtual functions [locale.money.get.virtuals]

30.4.7.3 Class template money_put [locale.money.put]

30.4.7.3.1 Members [locale.money.put.members]

30.4.7.3.2 Virtual functions [locale.money.put.virtuals]

30.4.7.4 Class template moneypunct [locale.moneypunct]

30.4.7.4.1 General [locale.moneypunct.general]

30.4.7.4.2 Members [locale.moneypunct.members]

30.4.7.4.3 Virtual functions [locale.moneypunct.virtuals]

30.4.7.5 Class template moneypunct_byname [locale.moneypunct.byname]

30.4.8 The message retrieval category [category.messages]

30.4.8.1 General [category.messages.general]

30.4.8.2 Class template messages [locale.messages]

30.4.8.2.1 General [locale.messages.general]

30.4.8.2.2 Members [locale.messages.members]

30.4.8.2.3 Virtual functions [locale.messages.virtuals]

30.4.8.3 Class template messages_byname [locale.messages.byname]

30.5 C library locales [c.locales]

30.5.1 Header synopsis [clocale.syn]

30.5.2 Data races [clocale.data.races]

31 Input/output library [input.output][input.output]

31.1 General [input.output.general]

31.2 Iostreams requirements [iostreams.requirements]

31.2.1 Imbue limitations [iostream.limits.imbue]

31.2.2 Types [stream.types]

31.2.3 Positioning type limitations [iostreams.limits.pos]

31.2.4 Thread safety [iostreams.threadsafety]

31.3 Forward declarations [iostream.forward]

31.3.1 Header synopsis [iosfwd.syn]

31.3.2 Overview [iostream.forward.overview]

31.4 Standard iostream objects [iostream.objects]

31.4.1 Header synopsis [iostream.syn]

31.4.2 Overview [iostream.objects.overview]

31.4.3 Narrow stream objects [narrow.stream.objects]

31.4.4 Wide stream objects [wide.stream.objects]

31.5 Iostreams base classes [iostreams.base]

31.5.1 Header synopsis [ios.syn]

31.5.2 Class ios_base [ios.base]

31.5.2.1 General [ios.base.general]

31.5.2.2 Types [ios.types]

31.5.2.2.1 Class ios_base​::​failure [ios.failure]

31.5.2.2.2 Type ios_base​::​fmtflags [ios.fmtflags]

31.5.2.2.3 Type ios_base​::​iostate [ios.iostate]

31.5.2.2.4 Type ios_base​::​openmode [ios.openmode]

31.5.2.2.5 Type ios_base​::​seekdir [ios.seekdir]

31.5.2.2.6 Class ios_base​::​Init [ios.init]

31.5.2.3 State functions [fmtflags.state]

31.5.2.4 Functions [ios.base.locales]

31.5.2.5 Static members [ios.members.static]

31.5.2.6 Storage functions [ios.base.storage]

31.5.2.7 Callbacks [ios.base.callback]

31.5.2.8 Constructors and destructor [ios.base.cons]

31.5.3 Class template fpos [fpos]

31.5.3.1 Members [fpos.members]

31.5.3.2 Requirements [fpos.operations]

31.5.4 Class template basic_ios [ios]

31.5.4.1 Overview [ios.overview]

31.5.4.2 Constructors [basic.ios.cons]

31.5.4.3 Member functions [basic.ios.members]

31.5.4.4 Flags functions [iostate.flags]

31.5.5 ios_base manipulators [std.ios.manip]

31.5.5.1 fmtflags manipulators [fmtflags.manip]

31.5.5.2 adjustfield manipulators [adjustfield.manip]

31.5.5.3 basefield manipulators [basefield.manip]

31.5.5.4 floatfield manipulators [floatfield.manip]

31.5.6 Error reporting [error.reporting]

31.6 Stream buffers [stream.buffers]

31.6.1 Header synopsis [streambuf.syn]

31.6.2 Stream buffer requirements [streambuf.reqts]

31.6.3 Class template basic_streambuf [streambuf]

31.6.3.1 General [streambuf.general]

31.6.3.2 Constructors [streambuf.cons]

31.6.3.3 Public member functions [streambuf.members]

31.6.3.3.1 Locales [streambuf.locales]

31.6.3.3.2 Buffer management and positioning [streambuf.buffer]

31.6.3.3.3 Get area [streambuf.pub.get]

31.6.3.3.4 Putback [streambuf.pub.pback]

31.6.3.3.5 Put area [streambuf.pub.put]

31.6.3.4 Protected member functions [streambuf.protected]

31.6.3.4.1 Assignment [streambuf.assign]

31.6.3.4.2 Get area access [streambuf.get.area]

31.6.3.4.3 Put area access [streambuf.put.area]

31.6.3.5 Virtual functions [streambuf.virtuals]

31.6.3.5.1 Locales [streambuf.virt.locales]

31.6.3.5.2 Buffer management and positioning [streambuf.virt.buffer]

31.6.3.5.3 Get area [streambuf.virt.get]

31.6.3.5.4 Putback [streambuf.virt.pback]

31.6.3.5.5 Put area [streambuf.virt.put]

31.7 Formatting and manipulators [iostream.format]

31.7.1 Header synopsis [istream.syn]

31.7.2 Header synopsis [ostream.syn]

31.7.3 Header synopsis [iomanip.syn]

31.7.4 Header synopsis [print.syn]

31.7.5 Input streams [input.streams]

31.7.5.1 General [input.streams.general]

31.7.5.2 Class template basic_istream [istream]

31.7.5.2.1 General [istream.general]

31.7.5.2.2 Constructors [istream.cons]

31.7.5.2.3 Assignment and swap [istream.assign]

31.7.5.2.4 Class basic_istream​::​sentry [istream.sentry]

31.7.5.3 Formatted input functions [istream.formatted]

31.7.5.3.1 Common requirements [istream.formatted.reqmts]

31.7.5.3.2 Arithmetic extractors [istream.formatted.arithmetic]

31.7.5.3.3 basic_istream​::​operator>> [istream.extractors]

31.7.5.4 Unformatted input functions [istream.unformatted]

31.7.5.5 Standard basic_istream manipulators [istream.manip]

31.7.5.6 Rvalue stream extraction [istream.rvalue]

31.7.5.7 Class template basic_iostream [iostreamclass]

31.7.5.7.1 General [iostreamclass.general]

31.7.5.7.2 Constructors [iostream.cons]

31.7.5.7.3 Destructor [iostream.dest]

31.7.5.7.4 Assignment and swap [iostream.assign]

31.7.6 Output streams [output.streams]

31.7.6.1 General [output.streams.general]

31.7.6.2 Class template basic_ostream [ostream]

31.7.6.2.1 General [ostream.general]

31.7.6.2.2 Constructors [ostream.cons]

31.7.6.2.3 Assignment and swap [ostream.assign]

31.7.6.2.4 Class basic_ostream​::​sentry [ostream.sentry]

31.7.6.2.5 Seek members [ostream.seeks]

31.7.6.3 Formatted output functions [ostream.formatted]

31.7.6.3.1 Common requirements [ostream.formatted.reqmts]

31.7.6.3.2 Arithmetic inserters [ostream.inserters.arithmetic]

31.7.6.3.3 basic_ostream​::​operator<< [ostream.inserters]

31.7.6.3.4 Character inserter function templates [ostream.inserters.character]

31.7.6.3.5 Print [ostream.formatted.print]

31.7.6.4 Unformatted output functions [ostream.unformatted]

31.7.6.5 Standard manipulators [ostream.manip]

31.7.6.6 Rvalue stream insertion [ostream.rvalue]

31.7.7 Standard manipulators [std.manip]

31.7.8 Extended manipulators [ext.manip]

31.7.9 Quoted manipulators [quoted.manip]

31.7.10 Print functions [print.fun]

31.8 String-based streams [string.streams]

31.8.1 Header synopsis [sstream.syn]

31.8.2 Class template basic_stringbuf [stringbuf]

31.8.2.1 General [stringbuf.general]

31.8.2.2 Constructors [stringbuf.cons]

31.8.2.3 Assignment and swap [stringbuf.assign]

31.8.2.4 Member functions [stringbuf.members]

31.8.2.5 Overridden virtual functions [stringbuf.virtuals]

31.8.3 Class template basic_istringstream [istringstream]

31.8.3.1 General [istringstream.general]

31.8.3.2 Constructors [istringstream.cons]

31.8.3.3 Swap [istringstream.swap]

31.8.3.4 Member functions [istringstream.members]

31.8.4 Class template basic_ostringstream [ostringstream]

31.8.4.1 General [ostringstream.general]

31.8.4.2 Constructors [ostringstream.cons]

31.8.4.3 Swap [ostringstream.swap]

31.8.4.4 Member functions [ostringstream.members]

31.8.5 Class template basic_stringstream [stringstream]

31.8.5.1 General [stringstream.general]

31.8.5.2 Constructors [stringstream.cons]

31.8.5.3 Swap [stringstream.swap]

31.8.5.4 Member functions [stringstream.members]

31.9 Span-based streams [span.streams]

31.9.1 Overview [span.streams.overview]

31.9.2 Header synopsis [spanstream.syn]

31.9.3 Class template basic_spanbuf [spanbuf]

31.9.3.1 General [spanbuf.general]

31.9.3.2 Constructors [spanbuf.cons]

31.9.3.3 Assignment and swap [spanbuf.assign]

31.9.3.4 Member functions [spanbuf.members]

31.9.3.5 Overridden virtual functions [spanbuf.virtuals]

31.9.4 Class template basic_ispanstream [ispanstream]

31.9.4.1 General [ispanstream.general]

31.9.4.2 Constructors [ispanstream.cons]

31.9.4.3 Swap [ispanstream.swap]

31.9.4.4 Member functions [ispanstream.members]

31.9.5 Class template basic_ospanstream [ospanstream]

31.9.5.1 General [ospanstream.general]

31.9.5.2 Constructors [ospanstream.cons]

31.9.5.3 Swap [ospanstream.swap]

31.9.5.4 Member functions [ospanstream.members]

31.9.6 Class template basic_spanstream [spanstream]

31.9.6.1 General [spanstream.general]

31.9.6.2 Constructors [spanstream.cons]

31.9.6.3 Swap [spanstream.swap]

31.9.6.4 Member functions [spanstream.members]

31.10 File-based streams [file.streams]

31.10.1 Header synopsis [fstream.syn]

31.10.2 Class template basic_filebuf [filebuf]

31.10.2.1 General [filebuf.general]

31.10.2.2 Constructors [filebuf.cons]

31.10.2.3 Assignment and swap [filebuf.assign]

31.10.2.4 Member functions [filebuf.members]

31.10.2.5 Overridden virtual functions [filebuf.virtuals]

31.10.3 Class template basic_ifstream [ifstream]

31.10.3.1 General [ifstream.general]

31.10.3.2 Constructors [ifstream.cons]

31.10.3.3 Swap [ifstream.swap]

31.10.3.4 Member functions [ifstream.members]

31.10.4 Class template basic_ofstream [ofstream]

31.10.4.1 General [ofstream.general]

31.10.4.2 Constructors [ofstream.cons]

31.10.4.3 Swap [ofstream.swap]

31.10.4.4 Member functions [ofstream.members]

31.10.5 Class template basic_fstream [fstream]

31.10.5.1 General [fstream.general]

31.10.5.2 Constructors [fstream.cons]

31.10.5.3 Swap [fstream.swap]

31.10.5.4 Member functions [fstream.members]

31.11 Synchronized output streams [syncstream]

31.11.1 Header synopsis [syncstream.syn]

31.11.2 Class template basic_syncbuf [syncstream.syncbuf]

31.11.2.1 Overview [syncstream.syncbuf.overview]

31.11.2.2 Construction and destruction [syncstream.syncbuf.cons]

31.11.2.3 Assignment and swap [syncstream.syncbuf.assign]

31.11.2.4 Member functions [syncstream.syncbuf.members]

31.11.2.5 Overridden virtual functions [syncstream.syncbuf.virtuals]

31.11.2.6 Specialized algorithms [syncstream.syncbuf.special]

31.11.3 Class template basic_osyncstream [syncstream.osyncstream]

31.11.3.1 Overview [syncstream.osyncstream.overview]

31.11.3.2 Construction and destruction [syncstream.osyncstream.cons]

31.11.3.3 Member functions [syncstream.osyncstream.members]

31.12 File systems [filesystems]

31.12.1 General [fs.general]

31.12.2 Conformance [fs.conformance]

31.12.2.1 General [fs.conformance.general]

31.12.2.2 POSIX conformance [fs.conform.9945]

31.12.2.3 Operating system dependent behavior conformance [fs.conform.os]

31.12.2.4 File system race behavior [fs.race.behavior]

31.12.3 Requirements [fs.req]

31.12.4 Header synopsis [fs.filesystem.syn]

31.12.5 Error reporting [fs.err.report]

31.12.6 Class path [fs.class.path]

31.12.6.1 General [fs.class.path.general]

31.12.6.2 Generic pathname format [fs.path.generic]

31.12.6.3 Conversions [fs.path.cvt]

31.12.6.3.1 Argument format conversions [fs.path.fmt.cvt]

31.12.6.3.2 Type and encoding conversions [fs.path.type.cvt]

31.12.6.4 Requirements [fs.path.req]

31.12.6.5 Members [fs.path.member]

31.12.6.5.1 Constructors [fs.path.construct]

31.12.6.5.2 Assignments [fs.path.assign]

31.12.6.5.3 Appends [fs.path.append]

31.12.6.5.4 Concatenation [fs.path.concat]

31.12.6.5.5 Modifiers [fs.path.modifiers]

31.12.6.5.6 Native format observers [fs.path.native.obs]

31.12.6.5.7 Generic format observers [fs.path.generic.obs]

31.12.6.5.8 Compare [fs.path.compare]

31.12.6.5.9 Decomposition [fs.path.decompose]

31.12.6.5.10 Query [fs.path.query]

31.12.6.5.11 Generation [fs.path.gen]

31.12.6.6 Iterators [fs.path.itr]

31.12.6.7 Inserter and extractor [fs.path.io]

31.12.6.8 Non-member functions [fs.path.nonmember]

31.12.6.9 Hash support [fs.path.hash]

31.12.7 Class filesystem_error [fs.class.filesystem.error]

31.12.7.1 General [fs.class.filesystem.error.general]

31.12.7.2 Members [fs.filesystem.error.members]

31.12.8 Enumerations [fs.enum]

31.12.8.1 Enum path​::​format [fs.enum.path.format]

31.12.8.2 Enum class file_type [fs.enum.file.type]

31.12.8.3 Enum class copy_options [fs.enum.copy.opts]

31.12.8.4 Enum class perms [fs.enum.perms]

31.12.8.5 Enum class perm_options [fs.enum.perm.opts]

31.12.8.6 Enum class directory_options [fs.enum.dir.opts]

31.12.9 Class file_status [fs.class.file.status]

31.12.9.1 General [fs.class.file.status.general]

31.12.9.2 Constructors [fs.file.status.cons]

31.12.9.3 Observers [fs.file.status.obs]

31.12.9.4 Modifiers [fs.file.status.mods]

31.12.10 Class directory_entry [fs.class.directory.entry]

31.12.10.1 General [fs.class.directory.entry.general]

31.12.10.2 Constructors [fs.dir.entry.cons]

31.12.10.3 Modifiers [fs.dir.entry.mods]

31.12.10.4 Observers [fs.dir.entry.obs]

31.12.10.5 Inserter [fs.dir.entry.io]

31.12.11 Class directory_iterator [fs.class.directory.iterator]

31.12.11.1 General [fs.class.directory.iterator.general]

31.12.11.2 Members [fs.dir.itr.members]

31.12.11.3 Non-member functions [fs.dir.itr.nonmembers]

31.12.12 Class recursive_directory_iterator [fs.class.rec.dir.itr]

31.12.12.1 General [fs.class.rec.dir.itr.general]

31.12.12.2 Members [fs.rec.dir.itr.members]

31.12.12.3 Non-member functions [fs.rec.dir.itr.nonmembers]

31.12.13 Filesystem operation functions [fs.op.funcs]

31.12.13.1 General [fs.op.funcs.general]

31.12.13.2 Absolute [fs.op.absolute]

31.12.13.3 Canonical [fs.op.canonical]

31.12.13.4 Copy [fs.op.copy]

31.12.13.5 Copy file [fs.op.copy.file]

31.12.13.7 Create directories [fs.op.create.directories]

31.12.13.8 Create directory [fs.op.create.directory]

31.12.13.12 Current path [fs.op.current.path]

31.12.13.13 Equivalent [fs.op.equivalent]

31.12.13.14 Exists [fs.op.exists]

31.12.13.15 File size [fs.op.file.size]

31.12.13.17 Is block file [fs.op.is.block.file]

31.12.13.18 Is character file [fs.op.is.char.file]

31.12.13.19 Is directory [fs.op.is.directory]

31.12.13.20 Is empty [fs.op.is.empty]

31.12.13.21 Is fifo [fs.op.is.fifo]

31.12.13.22 Is other [fs.op.is.other]

31.12.13.23 Is regular file [fs.op.is.regular.file]

31.12.13.24 Is socket [fs.op.is.socket]

31.12.13.26 Last write time [fs.op.last.write.time]

31.12.13.27 Permissions [fs.op.permissions]

31.12.13.28 Proximate [fs.op.proximate]

31.12.13.30 Relative [fs.op.relative]

31.12.13.31 Remove [fs.op.remove]

31.12.13.32 Remove all [fs.op.remove.all]

31.12.13.33 Rename [fs.op.rename]

31.12.13.34 Resize file [fs.op.resize.file]

31.12.13.35 Space [fs.op.space]

31.12.13.36 Status [fs.op.status]

31.12.13.37 Status known [fs.op.status.known]

31.12.13.39 Temporary directory path [fs.op.temp.dir.path]

31.12.13.40 Weakly canonical [fs.op.weakly.canonical]

31.13 C library files [c.files]

31.13.1 Header synopsis [cstdio.syn]

31.13.2 Header synopsis [cinttypes.syn]

32 Regular expressions library [re][re]

32.1 General [re.general]

32.2 Requirements [re.req]

32.3 Header synopsis [re.syn]

32.4 Namespace std​::​regex_constants [re.const]

32.4.1 General [re.const.general]

32.4.2 Bitmask type syntax_option_type [re.synopt]

32.4.3 Bitmask type match_flag_type [re.matchflag]

32.4.4 Implementation-defined error_type [re.err]

32.5 Class regex_error [re.badexp]

32.6 Class template regex_traits [re.traits]

32.7 Class template basic_regex [re.regex]

32.7.1 General [re.regex.general]

32.7.2 Constructors [re.regex.construct]

32.7.3 Assignment [re.regex.assign]

32.7.4 Constant operations [re.regex.operations]

32.7.5 Locale [re.regex.locale]

32.7.6 Swap [re.regex.swap]

32.7.7 Non-member functions [re.regex.nonmemb]

32.8 Class template sub_match [re.submatch]

32.8.1 General [re.submatch.general]

32.8.2 Members [re.submatch.members]

32.8.3 Non-member operators [re.submatch.op]

32.9 Class template match_results [re.results]

32.9.1 General [re.results.general]

32.9.2 Constructors [re.results.const]

32.9.3 State [re.results.state]

32.9.4 Size [re.results.size]

32.9.5 Element access [re.results.acc]

32.9.6 Formatting [re.results.form]

32.9.7 Allocator [re.results.all]

32.9.8 Swap [re.results.swap]

32.9.9 Non-member functions [re.results.nonmember]

32.10 Regular expression algorithms [re.alg]

32.10.1 Exceptions [re.except]

32.10.2 regex_match [re.alg.match]

32.10.3 regex_search [re.alg.search]

32.10.4 regex_replace [re.alg.replace]

32.11 Regular expression iterators [re.iter]

32.11.1 Class template regex_iterator [re.regiter]

32.11.1.1 General [re.regiter.general]

32.11.1.2 Constructors [re.regiter.cnstr]

32.11.1.3 Comparisons [re.regiter.comp]

32.11.1.4 Indirection [re.regiter.deref]

32.11.1.5 Increment [re.regiter.incr]

32.11.2 Class template regex_token_iterator [re.tokiter]

32.11.2.1 General [re.tokiter.general]

32.11.2.2 Constructors [re.tokiter.cnstr]

32.11.2.3 Comparisons [re.tokiter.comp]

32.11.2.4 Indirection [re.tokiter.deref]

32.11.2.5 Increment [re.tokiter.incr]

32.12 Modified ECMAScript regular expression grammar [re.grammar]

33 Concurrency support library [thread][thread]

33.1 General [thread.general]

33.2 Requirements [thread.req]

33.2.1 Template parameter names [thread.req.paramname]

33.2.2 Exceptions [thread.req.exception]

33.2.3 Native handles [thread.req.native]

33.2.4 Timing specifications [thread.req.timing]

33.2.5 Requirements for Cpp17Lockable types [thread.req.lockable]

33.2.5.1 In general [thread.req.lockable.general]

33.2.5.2 Cpp17BasicLockable requirements [thread.req.lockable.basic]

33.2.5.3 Cpp17Lockable requirements [thread.req.lockable.req]

33.2.5.4 Cpp17TimedLockable requirements [thread.req.lockable.timed]

33.2.5.5 Cpp17SharedLockable requirements [thread.req.lockable.shared]

33.2.5.6 Cpp17SharedTimedLockable requirements [thread.req.lockable.shared.timed]

33.3 Stop tokens [thread.stoptoken]

33.3.1 Introduction [thread.stoptoken.intro]

33.3.2 Header <stop_token> synopsis [thread.stoptoken.syn]

33.3.3 Class stop_token [stoptoken]

33.3.3.1 General [stoptoken.general]

33.3.3.2 Constructors, copy, and assignment [stoptoken.cons]

33.3.3.3 Members [stoptoken.mem]

33.3.3.4 Non-member functions [stoptoken.nonmembers]

33.3.4 Class stop_source [stopsource]

33.3.4.1 General [stopsource.general]

33.3.4.2 Constructors, copy, and assignment [stopsource.cons]

33.3.4.3 Members [stopsource.mem]

33.3.4.4 Non-member functions [stopsource.nonmembers]

33.3.5 Class template stop_callback [stopcallback]

33.3.5.1 General [stopcallback.general]

33.3.5.2 Constructors and destructor [stopcallback.cons]

33.4 Threads [thread.threads]

33.4.1 General [thread.threads.general]

33.4.2 Header synopsis [thread.syn]

33.4.3 Class thread [thread.thread.class]

33.4.3.1 General [thread.thread.class.general]

33.4.3.2 Class thread​::​id [thread.thread.id]

33.4.3.3 Constructors [thread.thread.constr]

33.4.3.4 Destructor [thread.thread.destr]

33.4.3.5 Assignment [thread.thread.assign]

33.4.3.6 Members [thread.thread.member]

33.4.3.7 Static members [thread.thread.static]

33.4.3.8 Specialized algorithms [thread.thread.algorithm]

33.4.4 Class jthread [thread.jthread.class]

33.4.4.1 General [thread.jthread.class.general]

33.4.4.2 Constructors, move, and assignment [thread.jthread.cons]

33.4.4.3 Members [thread.jthread.mem]

33.4.4.4 Stop token handling [thread.jthread.stop]

33.4.4.5 Specialized algorithms [thread.jthread.special]

33.4.4.6 Static members [thread.jthread.static]

33.4.5 Namespace this_thread [thread.thread.this]

33.5 Atomic operations [atomics]

33.5.1 General [atomics.general]

33.5.2 Header synopsis [atomics.syn]

33.5.3 Type aliases [atomics.alias]

33.5.4 Order and consistency [atomics.order]

33.5.5 Lock-free property [atomics.lockfree]

33.5.6 Waiting and notifying [atomics.wait]

33.5.7 Class template atomic_ref [atomics.ref.generic]

33.5.7.1 General [atomics.ref.generic.general]

33.5.7.2 Operations [atomics.ref.ops]

33.5.7.3 Specializations for integral types [atomics.ref.int]

33.5.7.4 Specializations for floating-point types [atomics.ref.float]

33.5.7.5 Partial specialization for pointers [atomics.ref.pointer]

33.5.7.6 Member operators common to integers and pointers to objects [atomics.ref.memop]

33.5.8 Class template atomic [atomics.types.generic]

33.5.8.1 General [atomics.types.generic.general]

33.5.8.2 Operations on atomic types [atomics.types.operations]

33.5.8.3 Specializations for integers [atomics.types.int]

33.5.8.4 Specializations for floating-point types [atomics.types.float]

33.5.8.5 Partial specialization for pointers [atomics.types.pointer]

33.5.8.6 Member operators common to integers and pointers to objects [atomics.types.memop]

33.5.8.7 Partial specializations for smart pointers [util.smartptr.atomic]

33.5.8.7.1 General [util.smartptr.atomic.general]

33.5.8.7.2 Partial specialization for shared_ptr [util.smartptr.atomic.shared]

33.5.8.7.3 Partial specialization for weak_ptr [util.smartptr.atomic.weak]

33.5.9 Non-member functions [atomics.nonmembers]

33.5.10 Flag type and operations [atomics.flag]

33.5.11 Fences [atomics.fences]

33.5.12 C compatibility [stdatomic.h.syn]

33.6 Mutual exclusion [thread.mutex]

33.6.1 General [thread.mutex.general]

33.6.2 Header synopsis [mutex.syn]

33.6.3 Header <shared_mutex> synopsis [shared.mutex.syn]

33.6.4 Mutex requirements [thread.mutex.requirements]

33.6.4.1 In general [thread.mutex.requirements.general]

33.6.4.2 Mutex types [thread.mutex.requirements.mutex]

33.6.4.2.1 General [thread.mutex.requirements.mutex.general]

33.6.4.2.2 Class mutex [thread.mutex.class]

33.6.4.2.3 Class recursive_mutex [thread.mutex.recursive]

33.6.4.3 Timed mutex types [thread.timedmutex.requirements]

33.6.4.3.1 General [thread.timedmutex.requirements.general]

33.6.4.3.2 Class timed_mutex [thread.timedmutex.class]

33.6.4.3.3 Class recursive_timed_mutex [thread.timedmutex.recursive]

33.6.4.4 Shared mutex types [thread.sharedmutex.requirements]

33.6.4.4.1 General [thread.sharedmutex.requirements.general]

33.6.4.4.2 Class shared_mutex [thread.sharedmutex.class]

33.6.4.5 Shared timed mutex types [thread.sharedtimedmutex.requirements]

33.6.4.5.1 General [thread.sharedtimedmutex.requirements.general]

33.6.4.5.2 Class shared_timed_mutex [thread.sharedtimedmutex.class]

33.6.5 Locks [thread.lock]

33.6.5.1 General [thread.lock.general]

33.6.5.2 Class template lock_guard [thread.lock.guard]

33.6.5.3 Class template scoped_lock [thread.lock.scoped]

33.6.5.4 Class template unique_lock [thread.lock.unique]

33.6.5.4.1 General [thread.lock.unique.general]

33.6.5.4.2 Constructors, destructor, and assignment [thread.lock.unique.cons]

33.6.5.4.3 Locking [thread.lock.unique.locking]

33.6.5.4.4 Modifiers [thread.lock.unique.mod]

33.6.5.4.5 Observers [thread.lock.unique.obs]

33.6.5.5 Class template shared_lock [thread.lock.shared]

33.6.5.5.1 General [thread.lock.shared.general]

33.6.5.5.2 Constructors, destructor, and assignment [thread.lock.shared.cons]

33.6.5.5.3 Locking [thread.lock.shared.locking]

33.6.5.5.4 Modifiers [thread.lock.shared.mod]

33.6.5.5.5 Observers [thread.lock.shared.obs]

33.6.6 Generic locking algorithms [thread.lock.algorithm]

33.6.7 Call once [thread.once]

33.6.7.1 Struct once_flag [thread.once.onceflag]

33.6.7.2 Function call_once [thread.once.callonce]

33.7 Condition variables [thread.condition]

33.7.1 General [thread.condition.general]

33.7.2 Header <condition_variable> synopsis [condition.variable.syn]

33.7.3 Non-member functions [thread.condition.nonmember]

33.7.4 Class condition_variable [thread.condition.condvar]

33.7.5 Class condition_variable_any [thread.condition.condvarany]

33.7.5.1 General [thread.condition.condvarany.general]

33.7.5.2 Noninterruptible waits [thread.condvarany.wait]

33.7.5.3 Interruptible waits [thread.condvarany.intwait]

33.8 Semaphore [thread.sema]

33.8.1 General [thread.sema.general]

33.8.2 Header synopsis [semaphore.syn]

33.8.3 Class template counting_semaphore [thread.sema.cnt]

33.9 Coordination types [thread.coord]

33.9.1 General [thread.coord.general]

33.9.2 Latches [thread.latch]

33.9.2.1 General [thread.latch.general]

33.9.2.2 Header synopsis [latch.syn]

33.9.2.3 Class latch [thread.latch.class]

33.9.3 Barriers [thread.barrier]

33.9.3.1 General [thread.barrier.general]

33.9.3.2 Header synopsis [barrier.syn]

33.9.3.3 Class template barrier [thread.barrier.class]

33.10 Futures [futures]

33.10.1 Overview [futures.overview]

33.10.2 Header synopsis [future.syn]

33.10.3 Error handling [futures.errors]

33.10.4 Class future_error [futures.future.error]

33.10.5 Shared state [futures.state]

33.10.6 Class template promise [futures.promise]

33.10.7 Class template future [futures.unique.future]

33.10.8 Class template shared_future [futures.shared.future]

33.10.9 Function template async [futures.async]

33.10.10 Class template packaged_task [futures.task]

33.10.10.1 General [futures.task.general]

33.10.10.2 Member functions [futures.task.members]

33.10.10.3 Globals [futures.task.nonmembers]

Annex A (informative) Grammar summary [gram][gram]

A.1 General [gram.general]

A.2 Keywords [gram.key]

A.3 Lexical conventions [gram.lex]

A.4 Basics [gram.basic]

A.5 Expressions [gram.expr]

A.6 Statements [gram.stmt]

A.7 Declarations [gram.dcl]

A.8 Modules [gram.module]

A.9 Classes [gram.class]

A.10 Overloading [gram.over]

A.11 Templates [gram.temp]

A.12 Exception handling [gram.except]

A.13 Preprocessing directives [gram.cpp]

Annex B (normative) Implementation quantities [implimits][implimits]

Annex C (informative) Compatibility [diff][diff]

C.1 C++ and ISO C++ 2020 [diff.cpp20]

C.1.1 General [diff.cpp20.general]

C.1.2 [lex]: lexical conventions [diff.cpp20.lex]

C.1.3 [expr]: expressions [diff.cpp20.expr]

C.1.4 [stmt.stmt]: statements [diff.cpp20.stmt]

C.1.5 [dcl.dcl]: declarations [diff.cpp20.dcl]

C.1.6 [temp]: templates [diff.cpp20.temp]

C.1.7 [library]: library introduction [diff.cpp20.library]

C.1.8 [concepts]: concepts library [diff.cpp20.concepts]

C.1.9 [mem]: memory management library [diff.cpp20.memory]

C.1.10 [utilities]: general utilities library [diff.cpp20.utilities]

C.1.11 [strings]: strings library [diff.cpp20.strings]

C.1.12 [containers]: containers library [diff.cpp20.containers]

C.1.13 [thread]: concurrency support library [diff.cpp20.thread]

C.2 C++ and ISO C++ 2017 [diff.cpp17]

C.2.1 General [diff.cpp17.general]

C.2.2 [lex]: lexical conventions [diff.cpp17.lex]

C.2.3 [basic]: basics [diff.cpp17.basic]

C.2.4 [expr]: expressions [diff.cpp17.expr]

C.2.5 [dcl.dcl]: declarations [diff.cpp17.dcl.dcl]

C.2.6 [class]: classes [diff.cpp17.class]

C.2.7 [over]: overloading [diff.cpp17.over]

C.2.8 [temp]: templates [diff.cpp17.temp]

C.2.9 [except]: exception handling [diff.cpp17.except]

C.2.10 [library]: library introduction [diff.cpp17.library]

C.2.11 [containers]: containers library [diff.cpp17.containers]

C.2.12 [iterators]: iterators library [diff.cpp17.iterators]

C.2.13 [algorithms]: algorithms library [diff.cpp17.alg.reqs]

C.2.14 [input.output]: input/output library [diff.cpp17.input.output]

C.2.15 [depr]: compatibility features [diff.cpp17.depr]

C.3 C++ and ISO C++ 2014 [diff.cpp14]

C.3.1 General [diff.cpp14.general]

C.3.2 [lex]: lexical conventions [diff.cpp14.lex]

C.3.3 [expr]: expressions [diff.cpp14.expr]

C.3.4 [dcl.dcl]: declarations [diff.cpp14.dcl.dcl]

C.3.5 [class]: classes [diff.cpp14.class]

C.3.6 [temp]: templates [diff.cpp14.temp]

C.3.7 [except]: exception handling [diff.cpp14.except]

C.3.8 [library]: library introduction [diff.cpp14.library]

C.3.9 [utilities]: general utilities library [diff.cpp14.utilities]

C.3.10 [strings]: strings library [diff.cpp14.string]

C.3.11 [containers]: containers library [diff.cpp14.containers]

C.3.12 [depr]: compatibility features [diff.cpp14.depr]

C.4 C++ and ISO C++ 2011 [diff.cpp11]

C.4.1 General [diff.cpp11.general]

C.4.2 [lex]: lexical conventions [diff.cpp11.lex]

C.4.3 [basic]: basics [diff.cpp11.basic]

C.4.4 [expr]: expressions [diff.cpp11.expr]

C.4.5 [dcl.dcl]: declarations [diff.cpp11.dcl.dcl]

C.4.6 [library]: library introduction [diff.cpp11.library]

C.4.7 [input.output]: input/output library [diff.cpp11.input.output]

C.5 C++ and ISO C++ 2003 [diff.cpp03]

C.5.1 General [diff.cpp03.general]

C.5.2 [lex]: lexical conventions [diff.cpp03.lex]

C.5.3 [expr]: expressions [diff.cpp03.expr]

C.5.4 [dcl.dcl]: declarations [diff.cpp03.dcl.dcl]

C.5.5 [class]: classes [diff.cpp03.class]

C.5.6 [temp]: templates [diff.cpp03.temp]

C.5.7 [library]: library introduction [diff.cpp03.library]

C.5.8 [support]: language support library [diff.cpp03.language.support]

C.5.9 [diagnostics]: diagnostics library [diff.cpp03.diagnostics]

C.5.10 [utilities]: general utilities library [diff.cpp03.utilities]

C.5.11 [strings]: strings library [diff.cpp03.strings]

C.5.12 [containers]: containers library [diff.cpp03.containers]

C.5.13 [algorithms]: algorithms library [diff.cpp03.algorithms]

C.5.14 [numerics]: numerics library [diff.cpp03.numerics]

C.5.15 [localization]: localization library [diff.cpp03.locale]

C.5.16 [input.output]: input/output library [diff.cpp03.input.output]

C.6 C++ and ISO C [diff.iso]

C.6.1 General [diff.iso.general]

C.6.2 [lex]: lexical conventions [diff.lex]

C.6.3 [basic]: basics [diff.basic]

C.6.4 [expr]: expressions [diff.expr]

C.6.5 [stmt.stmt]: statements [diff.stat]

C.6.6 [dcl.dcl]: declarations [diff.dcl]

C.6.7 [class]: classes [diff.class]

C.6.8 [cpp]: preprocessing directives [diff.cpp]

C.7 C standard library [diff.library]

C.7.1 General [diff.library.general]

C.7.2 Modifications to headers [diff.mods.to.headers]

C.7.3 Modifications to definitions [diff.mods.to.definitions]

C.7.3.1 Types char16_t and char32_t [diff.char16]

C.7.3.2 Type wchar_t [diff.wchar.t]

C.7.3.3 Header <assert.h> [diff.header.assert.h]

C.7.3.4 Header <iso646.h> [diff.header.iso646.h]

C.7.3.5 Header <stdalign.h> [diff.header.stdalign.h]

C.7.3.6 Header <stdbool.h> [diff.header.stdbool.h]

C.7.3.7 Macro NULL [diff.null]

C.7.4 Modifications to declarations [diff.mods.to.declarations]

C.7.5 Modifications to behavior [diff.mods.to.behavior]

C.7.5.1 General [diff.mods.to.behavior.general]

C.7.5.2 Macro offsetof(type, member-designator) [diff.offsetof]

C.7.5.3 Memory allocation functions [diff.malloc]

Annex D (normative) Compatibility features [depr][depr]

D.1 General [depr.general]

D.2 Arithmetic conversion on enumerations [depr.arith.conv.enum]

D.3 Implicit capture of *this by reference [depr.capture.this]

D.4 Array comparisons [depr.array.comp]

D.5 Deprecated volatile types [depr.volatile.type]

D.6 Redeclaration of static constexpr data members [depr.static.constexpr]

D.7 Non-local use of TU-local entities [depr.local]

D.8 Implicit declaration of copy functions [depr.impldec]

D.9 Literal operator function declarations using an identifier [depr.lit]

D.10 template keyword before qualified names [depr.template.template]

D.11 Requires paragraph [depr.res.on.required]

D.12 has_denorm members in numeric_limits [depr.numeric.limits.has.denorm]

D.13 Deprecated C macros [depr.c.macros]

D.14 Relational operators [depr.relops]

D.15 char* streams [depr.str.strstreams]

D.15.1 Header synopsis [depr.strstream.syn]

D.15.2 Class strstreambuf [depr.strstreambuf]

D.15.2.1 General [depr.strstreambuf.general]

D.15.2.2 strstreambuf constructors [depr.strstreambuf.cons]

D.15.2.3 Member functions [depr.strstreambuf.members]

D.15.2.4 strstreambuf overridden virtual functions [depr.strstreambuf.virtuals]

D.15.3 Class istrstream [depr.istrstream]

D.15.3.1 General [depr.istrstream.general]

D.15.3.2 istrstream constructors [depr.istrstream.cons]

D.15.3.3 Member functions [depr.istrstream.members]

D.15.4 Class ostrstream [depr.ostrstream]

D.15.4.1 General [depr.ostrstream.general]

D.15.4.2 ostrstream constructors [depr.ostrstream.cons]

D.15.4.3 Member functions [depr.ostrstream.members]

D.15.5 Class strstream [depr.strstream]

D.15.5.1 General [depr.strstream.general]

D.15.5.2 strstream constructors [depr.strstream.cons]

D.15.5.3 strstream destructor [depr.strstream.dest]

D.15.5.4 strstream operations [depr.strstream.oper]

D.16 Deprecated error numbers [depr.cerrno]

D.17 The default allocator [depr.default.allocator]

D.18 Deprecated polymorphic_allocator member function [depr.mem.poly.allocator.mem]

D.19 Deprecated type traits [depr.meta.types]

D.20 Tuple [depr.tuple]

D.21 Variant [depr.variant]

D.22 Deprecated iterator class template [depr.iterator]

D.23 Deprecated move_iterator access [depr.move.iter.elem]

D.24 Deprecated shared_ptr atomic access [depr.util.smartptr.shared.atomic]

D.25 Deprecated basic_string capacity [depr.string.capacity]

D.26 Deprecated standard code conversion facets [depr.locale.stdcvt]

D.26.1 General [depr.locale.stdcvt.general]

D.26.2 Header synopsis [depr.codecvt.syn]

D.26.3 Requirements [depr.locale.stdcvt.req]

D.27 Deprecated convenience conversion interfaces [depr.conversions]

D.27.1 General [depr.conversions.general]

D.27.2 Class template wstring_convert [depr.conversions.string]

D.27.3 Class template wbuffer_convert [depr.conversions.buffer]

D.28 Deprecated locale category facets [depr.locale.category]

D.29 Deprecated filesystem path factory functions [depr.fs.path.factory]

D.30 Deprecated atomic operations [depr.atomics]

D.30.1 General [depr.atomics.general]

D.30.2 Volatile access [depr.atomics.volatile]

D.30.3 Non-member functions [depr.atomics.nonmembers]

D.30.4 Operations on atomic types [depr.atomics.types.operations]

Annex E (informative) Conformance with UAX #31 [uaxid][uaxid]

E.1 General [uaxid.general]

E.2 R1 Default identifiers [uaxid.def]

E.2.1 General [uaxid.def.general]

E.2.2 R1a Restricted format characters [uaxid.def.rfmt]

E.2.3 R1b Stable identifiers [uaxid.def.stable]

E.3 R2 Immutable identifiers [uaxid.immutable]

E.4 R3 Pattern_White_Space and Pattern_Syntax characters [uaxid.pattern]

E.5 R4 Equivalent normalized identifiers [uaxid.eqn]

E.6 R5 Equivalent case-insensitive identifiers [uaxid.eqci]

E.7 R6 Filtered normalized identifiers [uaxid.filter]

E.8 R7 Filtered case-insensitive identifiers [uaxid.filterci]

E.9 R8 Hashtag identifiers [uaxid.hashtag]

Bibliography

Index

Index of grammar productions

Index of library headers

Index of library names

Index of library concepts

Index of implementation-defined behavior