Table of Contents

1 General [intro]
1.1 Scope [intro.scope]
1.2 Normative references [intro.refs]
1.3 Definitions [intro.defs]
1.4 Syntax notation [syntax]
1.5 The C++ memory model [intro.memory]
1.6 The C++ object model [intro.object]
1.7 Processor compliance [intro.compliance]
1.8 Program execution [intro.execution]
2 Lexical conventions [lex]
2.1 Phases of translation [lex.phases]
2.2 Trigraph sequences [lex.trigraph]
2.3 Preprocessing tokens [lex.pptoken]
2.4 Alternative tokens [lex.digraph]
2.5 Tokens [lex.token]
2.6 Comments [lex.comment]
2.7 Identifiers []
2.8 Keywords [lex.key]
2.9 Literals [lex.literal]
2.9.1 Integer literals [lex.icon]
2.9.2 Character literals [lex.ccon]
2.9.3 Floating literals [lex.fcon]
2.9.4 String literals [lex.string]
2.9.5 Boolean literals [lex.bool]
3 Basic concepts [basic]
3.1 Declarations and definitions [basic.def]
3.2 One definition rule [basic.def.odr]
3.3 Declarative regions and scopes [basic.scope]
3.3.1 Local scope [basic.scope.local]
3.3.2 Function prototype scope [basic.scope.proto]
3.3.3 Function scope
3.3.4 Namespace scope [basic.scope.namespace]
3.3.5 Class scope [basic.scope.class]
3.3.6 Name hiding [basic.scope.hiding]
3.3.7 Explicit qualification [basic.scope.exqual]
3.3.8 Elaborated type specifier [basic.scope.elab]
3.3.9 Point of declaration [basic.scope.pdecl]
3.4 Name look up [class.scope]
3.5 Program and linkage []
3.6 Start and termination [basic.start]
3.6.1 Main function [basic.start.main]
3.6.2 Initialization of non-local objects [basic.start.init]
3.6.3 Termination [basic.start.term]
3.7 Storage duration []
3.7.1 Static storage duration []
3.7.2 Automatic storage duration []
3.7.3 Dynamic storage duration [] Allocation functions [] Deallocation functions []
3.7.4 Duration of sub-objects []
3.8 Object Lifetime []
3.9 Types [basic.types]
3.9.1 Fundamental types [basic.fundamental]
3.9.2 Compound types [basic.compound]
3.9.3 CV-qualifiers [basic.type.qualifier]
3.9.4 Type names []
3.10 Lvalues and rvalues [basic.lval]
4 Standard conversions [conv]
4.1 Lvalue-to-rvalue conversion [conv.lval]
4.2 Array-to-pointer conversion [conv.array]
4.3 Function-to-pointer conversion [conv.func]
4.4 Qualification conversions [conv.qual]
4.5 Integral promotions [conv.prom]
4.6 Floating point promotion [conv.fpprom]
4.7 Integral conversions [conv.integral]
4.8 Floating point conversions [conv.double]
4.9 Floating-integral conversions [conv.fpint]
4.10 Pointer conversions [conv.ptr]
4.11 Pointer to member conversions [conv.mem]
4.12 Base class conversion [conv.class]
4.13 Boolean conversions [conv.bool]
5 Expressions [expr]
5.1 Primary expressions [expr.prim]
5.2 Postfix expressions []
5.2.1 Subscripting [expr.sub]
5.2.2 Function call []
5.2.3 Explicit type conversion (functional notation) [expr.type.conv]
5.2.4 Class member access [expr.ref]
5.2.5 Increment and decrement []
5.2.6 Dynamic cast [expr.dynamic.cast]
5.2.7 Type identification [expr.typeid]
5.2.8 Static cast [expr.static.cast]
5.2.9 Reinterpret cast [expr.reinterpret.cast]
5.2.10 Const cast [expr.const.cast]
5.3 Unary expressions [expr.unary]
5.3.1 Unary operators [expr.unary.op]
5.3.2 Increment and decrement [expr.pre.incr]
5.3.3 Sizeof [expr.sizeof]
5.3.4 New []
5.3.5 Delete [expr.delete]
5.4 Explicit type conversion (cast notation) [expr.cast]
5.5 Pointer-to-member operators [expr.mptr.oper]
5.6 Multiplicative operators [expr.mul]
5.7 Additive operators [expr.add]
5.8 Shift operators [expr.shift]
5.9 Relational operators [expr.rel]
5.10 Equality operators [expr.eq]
5.11 Bitwise AND operator [expr.bit.and]
5.12 Bitwise exclusive OR operator [expr.xor]
5.13 Bitwise inclusive OR operator [expr.or]
5.14 Logical AND operator [expr.log.and]
5.15 Logical OR operator [expr.log.or]
5.16 Conditional operator [expr.cond]
5.17 Assignment operators [expr.ass]
5.18 Comma operator [expr.comma]
5.19 Constant expressions [expr.const]
6 Statements [stmt.stmt]
6.1 Labeled statement [stmt.label]
6.2 Expression statement [stmt.expr]
6.3 Compound statement or block [stmt.block]
6.4 Selection statements []
6.4.1 The if statement [stmt.if]
6.4.2 The switch statement [stmt.switch]
6.5 Iteration statements [stmt.iter]
6.5.1 The while statement [stmt.while]
6.5.2 The do statement []
6.5.3 The for statement [stmt.for]
6.6 Jump statements [stmt.jump]
6.6.1 The break statement [stmt.break]
6.6.2 The continue statement [stmt.cont]
6.6.3 The return statement [stmt.return]
6.6.4 The goto statement [stmt.goto]
6.7 Declaration statement [stmt.dcl]
6.8 Ambiguity resolution [stmt.ambig]
7 Declarations [dcl.dcl]
7.1 Specifiers [dcl.spec]
7.1.1 Storage class specifiers []
7.1.2 Function specifiers [dcl.fct.spec]
7.1.3 The typedef specifier [dcl.typedef]
7.1.4 The friend specifier [dcl.friend]
7.1.5 Type specifiers [dcl.type] The cv-qualifiers [] Simple type specifiers [dcl.type.simple] Elaborated type specifiers [dcl.type.elab]
7.2 Enumeration declarations [dcl.enum]
7.3 Namespaces [basic.namespace]
7.3.1 Namespace definition [namespace.def] Explicit qualification [namespace.qual] Unnamed namespaces [namespace.unnamed] Namespace scope [namespace.scope] Namespace member definitions [namespace.memdef]
7.3.2 Namespace or class alias [namespace.alias]
7.3.3 The using declaration [namespace.udecl]
7.3.4 Using directive [namespace.udir]
7.4 The asm declaration [dcl.asm]
7.5 Linkage specifications []
8 Declarators [dcl.decl]
8.1 Type names []
8.2 Ambiguity resolution [dcl.ambig.res]
8.3 Meaning of declarators [dcl.meaning]
8.3.1 Pointers [dcl.ptr]
8.3.2 References [dcl.ref]
8.3.3 Pointers to members [dcl.mptr]
8.3.4 Arrays [dcl.array]
8.3.5 Functions [dcl.fct]
8.3.6 Default arguments [dcl.fct.default]
8.4 Function definitions [dcl.fct.def]
8.5 Initializers [dcl.init]
8.5.1 Aggregates [dcl.init.aggr]
8.5.2 Character arrays [dcl.init.string]
8.5.3 References [dcl.init.ref]
9 Classes [class]
9.1 Class names []
9.2 Class members [class.mem]
9.3 Scope rules for classes [class.scope0]
9.4 Member functions [class.mfct]
9.4.1 Nonstatic member functions [class.mfct.nonstatic]
9.4.2 The this pointer [class.this]
9.5 Static members [class.static]
9.5.1 Static member functions [class.static.mfct]
9.5.2 Static data members []
9.6 Unions [class.union]
9.7 Bit-fields [class.bit]
9.8 Nested class declarations [class.nest]
9.9 Local class declarations [class.local]
9.10 Nested type names [class.nested.type]
10 Derived classes [class.derived]
10.1 Multiple base classes [class.mi]
10.2 Member name lookup [class.member.lookup]
10.3 Virtual functions [class.virtual]
10.4 Abstract classes [class.abstract]
11 Member access control [class.access]
11.1 Access specifiers [class.access.spec]
11.2 Access specifiers for base classes [class.access.base]
11.3 Access declarations [class.access.dcl]
11.4 Friends [class.friend]
11.5 Protected member access [class.protected]
11.6 Access to virtual functions [class.access.virt]
11.7 Multiple access [class.paths]
12 Special member functions [special]
12.1 Constructors [class.ctor]
12.2 Temporary objects [class.temporary]
12.3 Conversions [class.conv]
12.3.1 Conversion by constructor [class.conv.ctor]
12.3.2 Conversion functions [class.conv.fct]
12.4 Destructors [class.dtor]
12.5 Free store []
12.6 Initialization [class.init]
12.6.1 Explicit initialization [class.expl.init]
12.6.2 Initializing bases and members [class.base.init]
12.7 Construction and destruction [class.cdtor]
12.8 Copying class objects [class.copy]
13 Overloading [over]
13.1 Overloadable declarations [over.load]
13.2 Declaration matching [over.dcl]
13.3 Overload resolution [over.match]
13.3.1 Candidate functions and argument lists [over.match.funcs] Function call syntax [] Call to named function [] Call to object of class type [] Operators in expressions [over.match.oper] Initialization by user-defined conversions [over.match.user] Initialization by constructor [over.match.ctor]
13.3.2 Viable functions [over.match.viable]
13.3.3 Best Viable Function [] Implicit conversion sequences [] Standard conversion sequences [over.ics.scs] User-defined conversion sequences [over.ics.user] Ellipsis conversion sequences [over.ics.ellipsis] Reference binding [over.ics.ref] Ranking implicit conversion sequences [over.ics.rank]
13.4 Address of overloaded function [over.over]
13.5 Overloaded operators [over.oper]
13.5.1 Unary operators [over.unary]
13.5.2 Binary operators [over.binary]
13.5.3 Assignment [over.ass]
13.5.4 Function call []
13.5.5 Subscripting [over.sub]
13.5.6 Class member access [over.ref]
13.5.7 Increment and decrement []
13.6 Built-in operators [over.built]
14 Templates [temp]
14.1 Template names [temp.names]
14.2 Name resolution [temp.res]
14.2.1 Locally declared names [temp.local]
14.2.2 Names from the template's enclosing scope [temp.encl]
14.2.3 Dependent names [temp.dep]
14.2.4 Non-local names declared within a template [temp.inject]
14.3 Template instantiation [temp.inst]
14.3.1 Template linkage [temp.linkage]
14.3.2 Point of instantiation [temp.point]
14.3.3 Instantiation of operator-> [temp.opref]
14.4 Explicit instantiation [temp.explicit]
14.5 Template specialization [temp.spec]
14.6 Class template specializations [temp.class.spec]
14.6.1 Matching of class template specializations [temp.class.spec.match]
14.6.2 Partial ordering of class template specializations [temp.class.order]
14.7 Template parameters [temp.param]
14.8 Template arguments [temp.arg]
14.9 Type equivalence [temp.type]
14.10 Function templates [temp.fct]
14.10.1 Explicit template argument specification [temp.arg.explicit]
14.10.2 Template argument deduction [temp.deduct]
14.10.3 Overload resolution [temp.over]
14.10.4 Overloading and linkage []
14.10.5 Overloading and specialization [temp.over.spec]
14.10.6 Partial ordering of function templates [temp.func.order]
14.11 Member function templates [temp.mem.func]
14.12 Friends [temp.friend]
14.13 Static members and variables [temp.static]
15 Exception handling [except]
15.1 Throwing an exception [except.throw]
15.2 Constructors and destructors [except.ctor]
15.3 Handling an exception [except.handle]
15.4 Exception specifications [except.spec]
15.5 Special functions [except.special]
15.5.1 The terminate() function [except.terminate]
15.5.2 The unexpected() function [except.unexpected]
15.6 Exceptions and access [except.access]
16 Preprocessing directives [cpp]
16.1 Conditional inclusion [cpp.cond]
16.2 Source file inclusion [cpp.include]
16.3 Macro replacement [cpp.replace]
16.3.1 Argument substitution [cpp.subst]
16.3.2 The # operator [cpp.stringize]
16.3.3 The ## operator [cpp.concat]
16.3.4 Rescanning and further replacement [cpp.rescan]
16.3.5 Scope of macro definitions [cpp.scope]
16.4 Line control [cpp.line]
16.5 Error directive [cpp.error]
16.6 Pragma directive [cpp.pragma]
16.7 Null directive [cpp.null]
16.8 Predefined macro names [cpp.predefined]
17 Library introduction [lib.library]
17.1 Definitions [lib.definitions]
17.2 Method of description (Informative) [lib.description]
17.2.1 Structure of each subclause [lib.structure] Summary [lib.structure.summary] Requirements [lib.structure.requirements] Specifications [lib.structure.specifications] C Library [lib.structure.see.also]
17.2.2 Other conventions [lib.conventions] Type descriptions [lib.type.descriptions] Enumerated types [lib.enumerated.types] Bitmask types [lib.bitmask.types] Character sequences [lib.character.seq] Byte strings [lib.byte.strings] Multibyte strings [lib.multibyte.strings] Wide-character sequences [lib.wide.characters] Functions within classes [lib.functions.within.classes] Private members [lib.objects.within.classes]
17.3 Library-wide requirements [lib.requirements]
17.3.1 Library contents and organization [lib.organization] Library contents [lib.contents] Headers [lib.headers] Freestanding implementations [lib.compliance]
17.3.2 Using the library [lib.using] Headers [lib.using.headers] Linkage [lib.using.linkage]
17.3.3 Constraints on programs [lib.constraints] Reserved names [lib.reserved.names] Macro names [lib.macro.names] Global names [] External linkage [lib.extern.names] Headers [lib.alt.headers] Derived classes [lib.derived.classes] Replacement functions [lib.replacement.functions] Handler functions [lib.handler.functions] Other functions [lib.res.on.functions] Function arguments [lib.res.on.arguments]
17.3.4 Conforming implementations [lib.conforming] Headers [lib.res.on.headers] Restrictions on macro definitions [lib.res.on.macro.definitions] Global functions [] Member functions [lib.member.functions] Reentrancy [lib.reentrancy] Protection within classes [] Derived classes [lib.derivation] Restrictions on exception handling [lib.res.on.exception.handling]
18 Language support library []
18.1 Types []
18.2 Implementation properties []
18.2.1 Numeric limits [lib.limits] Template class numeric_limits [lib.numeric.limits] numeric_limits members [lib.numeric.limits.members] Type float_round_style [] numeric_limits specializations [lib.numeric.special]
18.2.2 C Library [lib.c.limits]
18.3 Start and termination []
18.4 Dynamic memory management []
18.4.1 Storage allocation and deallocation [] Single-object forms [] Array forms [] Placement forms []
18.4.2 Storage allocation errors [lib.alloc.errors] Class bad_alloc [lib.bad.alloc] Type new_handler [] set_new_handler []
18.5 Type identification []
18.5.1 Class type_info []
18.5.2 Class bad_cast [lib.bad.cast]
18.5.3 Class bad_typeid [lib.bad.typeid]
18.6 Exception handling []
18.6.1 Violating exception-specifications [lib.exception.unexpected] Class bad_exception [lib.bad.exception] Type unexpected_handler [lib.unexpected.handler] set_unexpected [lib.set.unexpected] unexpected [lib.unexpected]
18.6.2 Abnormal termination [lib.exception.terminate] Type terminate_handler [lib.terminate.handler] set_terminate [lib.set.terminate] terminate [lib.terminate]
18.7 Other runtime support []
19 Diagnostics library [lib.diagnostics]
19.1 Exception classes [lib.std.exceptions]
19.1.1 Class exception [lib.exception]
19.1.2 Class logic_error [lib.logic.error]
19.1.3 Class domain_error [lib.domain.error]
19.1.4 Class invalid_argument [lib.invalid.argument]
19.1.5 Class length_error [lib.length.error]
19.1.6 Class out_of_range [lib.out.of.range]
19.1.7 Class runtime_error [lib.runtime.error]
19.1.8 Class range_error [lib.range.error]
19.1.9 Class overflow_error [lib.overflow.error]
19.2 Assertions [lib.assertions]
19.3 Error numbers [lib.errno]
20 General utilities library [lib.utilities]
20.1 Allocator requirements [lib.allocator.requirements]
20.2 Utility components [lib.utility]
20.2.1 Operators [lib.operators]
20.2.2 Pairs [lib.pairs]
20.3 Function objects [lib.function.objects]
20.3.1 Base [lib.base]
20.3.2 Arithmetic operations [lib.arithmetic.operations]
20.3.3 Comparisons [lib.comparisons]
20.3.4 Logical operations [lib.logical.operations]
20.3.5 Negators [lib.negators]
20.3.6 Binders [lib.binders] Template class binder1st [lib.binder.1st] bind1st [lib.bind.1st] Template class binder2nd [lib.binder.2nd] bind2nd [lib.bind.2nd]
20.3.7 Adaptors for pointers to functions [lib.function.pointer.adaptors]
20.4 Memory [lib.memory]
20.4.1 The default allocator [lib.default.allocator] allocator members [lib.allocator.members] allocator placement new [lib.allocator.placement] Example allocator [lib.allocator.example]
20.4.2 Raw storage iterator []
20.4.3 Memory handling primitives [lib.memory.primitives] allocate [lib.allocate] deallocate [lib.deallocate] construct [lib.construct] destroy [lib.destroy] Temporary buffers [lib.temporary.buffer]
20.4.4 Specialized algorithms [lib.specialized.algorithms] uninitialized_copy [lib.uninitialized.copy] uninitialized_fill [lib.uninitialized.fill] uninitialized_fill [lib.uninitialized.fill.n]
20.4.5 Template class auto_ptr [] auto_ptr constructors [] auto_ptr members []
20.4.6 C Library [lib.c.malloc]
20.5 Date and time []
21 Strings library [lib.strings]
21.1 String classes [lib.string.classes]
21.1.1 Template class basic_string [lib.template.string] Template class string_char_traits [lib.string.char.traits] string_char_traits members [lib.string.char.traits.members] Template class basic_string [lib.basic.string] basic_string constructors [lib.string.cons] basic_string iterator support [lib.string.iterators] basic_string capacity [lib.string.capacity] basic_string element access [lib.string.access] basic_string modifiers [lib.string.modifiers] basic_string::operator+= [lib.string::op+=] basic_string::append [lib.string::append] basic_string::assign [lib.string::assign] basic_string::insert [lib.string::insert] basic_string::remove [lib.string::remove] basic_string::replace [lib.string::replace] basic_string::copy [lib.string::copy] basic_string::swap [lib.string::swap] basic_string string operations [lib.string.ops] basic_string::find [lib.string::find] basic_string::rfind [lib.string::rfind] basic_string::find_first_of [lib.string::find.first.of] basic_string::find_last_of [lib.string::find.last.of] basic_string::find_first_not_of [lib.string::find.first.not.of] basic_string::find_last_not_of [lib.string::find.last.not.of] basic_string::substr [lib.string::substr] basic_string::compare [lib.string::compare] basic_string non-member functions [lib.string.nonmembers] operator+ [lib.string::op+] operator== [lib.string::operator==] operator!= [lib.string::op!=] operator< [lib.string::op<] operator> [lib.string::op>] operator<= [lib.string::op<=] operator>= [lib.string::op>=] Inserters and extractors
21.1.2 Class string [lib.string]
21.1.3 string_char_traits<char> members [lib.string.traits.members]
21.1.4 Class wstring [lib.wstring]
21.1.5 string_char_traits<wchar_t> members [lib.wstring.members]
21.2 Null-terminated sequence utilities [lib.c.strings]
22 Localization library [lib.localization]
22.1 Locales [lib.locales]
22.1.1 Class locale [lib.locale] locale types [lib.locale.types] Type locale::category [lib.locale.category] Class locale::facet [lib.locale.facet] Class locale::id [] locale constructors and destructor [lib.locale.cons] locale members [lib.locale.members] locale operators [lib.locale.operators] locale static members [lib.locale.statics]
22.1.2 Convenience interfaces [lib.locale.convenience] Character classification [lib.classification] Character conversions [lib.conversions]
22.2 Standard locale categories [lib.locale.categories]
22.2.1 The ctype category [lib.category.ctype] Template class ctype [lib.locale.ctype] ctype members [lib.locale.ctype.members] ctype virtual functions [lib.locale.ctype.virtuals] Template class ctype_byname [lib.locale.ctype.byname] ctype specializations [lib.facet.ctype.special] ctype<char> destructor [lib.facet.ctype.char.dtor] ctype<char> members [lib.facet.ctype.char.members] ctype<char> overridden virtual functions [lib.facet.ctype.char.virtuals] Template class codecvt [lib.locale.codecvt] codecvt members [lib.locale.codecvt.members] codecvt virtual functions [lib.locale.codecvt.virtuals] Template class codecvt_byname [lib.locale.codecvt.byname]
22.2.2 The numeric category [lib.category.numeric] Template class num_get [lib.locale.num.get] num_get members [lib.facet.num.get.members] num_get virtual functions [lib.facet.num.get.virtuals] Template class num_put [lib.locale.num.put] num_put members [lib.facet.num.put.members] num_put virtual functions [lib.facet.num.put.virtuals]
22.2.3 The numeric punctuation facet [lib.facet.numpunct] Template class numpunct [lib.locale.numpunct] numpunct members [lib.facet.numpunct.members] numpunct virtual functions [lib.facet.numpunct.virtuals] Template class numpunct_byname [lib.locale.numpunct.byname]
22.2.4 The collate category [lib.category.collate] Template class collate [lib.locale.collate] collate members [lib.locale.collate.members] collate virtual functions [lib.locale.collate.virtuals] Template class collate_byname [lib.locale.collate.byname]
22.2.5 The time category [lib.category.time] Template class time_get [lib.locale.time.get] time_get members [lib.locale.time.get.members] time_get virtual functions [lib.locale.time.get.virtuals] Template class time_get_byname [lib.locale.time.get.byname] Template class time_put [lib.locale.time.put] time_put members [lib.locale.time.put.members] time_put virtual functions [lib.locale.time.put.virtuals] Template class time_put_byname [lib.locale.time.put.byname]
22.2.6 The monetary category [lib.category.monetary] Template class money_get [] money_get members [] money_get virtual functions [] Template class money_put [] money_put members [] money_put virtual functions [] Template class moneypunct [lib.locale.moneypunct] moneypunct members [lib.locale.moneypunct.members] moneypunct virtual functions [lib.locale.moneypunct.virtuals] Template class moneypunct_byname [lib.locale.moneypunct.byname]
22.2.7 The message retrieval category [lib.category.messages] Template class messages [lib.locale.messages] messages members [lib.locale.messages.members] messages virtual functions [lib.locale.messages.virtuals] Template class messages_byname [lib.locale.messages.byname]
22.2.8 Program-defined facets [lib.facets.examples]
22.3 C Library Locales [lib.c.locales]
23 Containers library [lib.containers]
23.1 Container requirements [lib.container.requirements]
23.1.1 Sequences [lib.sequence.reqmts]
23.1.2 Associative containers [lib.associative.reqmts]
23.2 Sequences [lib.sequences]
23.2.1 Template class bitset [lib.template.bitset] bitset constructors [lib.bitset.cons] bitset members [lib.bitset.members] bitset operators [lib.bitset.operators]
23.2.2 Template class deque [lib.deque] deque types [lib.deque.types] deque constructors, copy, and assignment [lib.deque.cons] deque iterator support [lib.deque.iterators] deque capacity [lib.deque.capacity] deque element access [lib.deque.access] deque modifiers [lib.deque.modifiers]
23.2.3 Template class list [lib.list] list types [lib.list.types] list constructors, copy, and assignment [lib.list.cons] list iterator support [lib.list.iterators] list capacity [lib.list.capacity] list element access [lib.list.access] list modifiers [lib.list.modifiers] list operations [lib.list.ops]
23.2.4 Container adapters [lib.container.adapters] Template class queue [lib.queue] Template class priority_queue [lib.priority.queue] priority_queue constructors [lib.priqueue.cons] priority_queue members [lib.priqueue.members] Template class stack [lib.stack]
23.2.5 Template class vector [lib.vector] vector types [lib.vector.types] vector constructors, copy, and assignment [lib.vector.cons] vector iterator support [lib.vector.iterators] vector capacity [lib.vector.capacity] vector element access [lib.vector.access] vector modifiers [lib.vector.modifiers]
23.2.6 Class vector<bool> [lib.vector.bool]
23.3 Associative containers [lib.associative]
23.3.1 Template class map [] map types [] map constructors, copy, and assignment [] map iterator support [] map capacity [] map element access [] map modifiers [] map observers [] map operations []
23.3.2 Template class multimap [lib.multimap]
23.3.3 Template class set [lib.set] set types [lib.set.types] set constructors, copy, and assignment [lib.set.cons] set iterator support [lib.set.iterators] set capacity [lib.set.capacity] set modifiers [lib.set.modifiers] set observers [lib.set.observers] set operations [lib.set.ops]
23.3.4 Template class multiset [lib.multiset]
24 Iterators library [lib.iterators]
24.1 Iterator requirements [lib.iterator.requirements]
24.1.1 Input iterators [lib.input.iterators]
24.1.2 Output iterators [lib.output.iterators]
24.1.3 Forward iterators [lib.forward.iterators]
24.1.4 Bidirectional iterators [lib.bidirectional.iterators]
24.1.5 Random access iterators [lib.random.access.iterators]
24.1.6 Iterator tags [lib.iterator.tags]
24.2 Iterator primitives [lib.iterator.primitives]
24.2.1 Standard iterator tags [lib.std.iterator.tags]
24.2.2 Basic iterators [lib.basic.iterators]
24.2.3 iterator_category [lib.iterator.category]
24.2.4 value_type [lib.value.type]
24.2.5 distance_type [lib.distance.type]
24.2.6 Iterator operations [lib.iterator.operations]
24.3 Predefined iterators [lib.predef.iterators]
24.3.1 Reverse iterators [lib.reverse.iterators] Template class reverse_bidirectional_iterator [lib.reverse.bidir.iter] reverse_bidirectional_iterator operations [lib.reverse.bidir.iter.ops] reverse_bidirectional_iterator constructor [lib.reverse.bidir.iter.cons] Conversion [lib.reverse.bidir.iter.conv] operator* [] operator++ [lib.reverse.bidir.iter.op++] operator-- [lib.reverse.bidir.iter.op--] operator== [lib.reverse.bidir.iter.op==] Template class reverse_iterator [lib.reverse.iterator] reverse_iterator operations [lib.reverse.iter.ops] reverse_iterator constructor [lib.reverse.iter.cons] Conversion [lib.reverse.iter.conv] operator* [] operator++ [lib.reverse.iter.op++] operator-- [lib.reverse.iter.op--] operator== [lib.reverse.iter.op==]
24.3.2 Insert iterators [lib.insert.iterators] Template class back_insert_iterator [lib.back.insert.iterator] back_insert_iterator operations [lib.back.insert.iter.ops] back_insert_iterator constructor [lib.back.insert.iter.cons] back_insert_iterator::operator= [lib.back.insert.iter.op=] back_insert_iterator::operator* [lib.back.insert.iter.op*] back_insert_iterator::operator++ [lib.back.insert.iter.op++] back_inserter [lib.back.inserter] Template class front_insert_iterator [lib.front.insert.iterator] front_insert_iterator operations [lib.front.insert.iter.ops] front_insert_iterator constructor [lib.front.insert.iter.cons] front_insert_iterator::operator= [lib.front.insert.iter.op=] front_insert_iterator::operator* [lib.front.insert.iter.op*] front_insert_iterator::operator++ [lib.front.insert.iter.op++] front_inserter [lib.front.inserter] Template class insert_iterator [lib.insert.iterator] insert_iterator operations [lib.insert.iter.ops] insert_iterator constructor [lib.insert.iter.cons] insert_iterator::operator= [lib.insert.iter.op=] insert_iterator::operator* [lib.insert.iter.op*] insert_iterator::operator++ [lib.insert.iter.op++] inserter [lib.inserter]
24.4 Stream iterators []
24.4.1 Template class istream_iterator [lib.istream.iterator]
24.4.2 Template class ostream_iterator [lib.ostream.iterator]
24.4.3 Template class istreambuf_iterator [lib.istreambuf.iterator] Template class istreambuf_iterator::proxy [lib.istreambuf.iterator::proxy] istreambuf_iterator constructors [lib.istreambuf.iterator.cons] istreambuf_iterator::operator* [lib.istreambuf.iterator::op*] istreambuf_iterator::operator++ [lib.istreambuf.iterator::op++] istreambuf_iterator::equal [lib.istreambuf.iterator::equal] iterator_category [lib.iterator.category.i] operator== [lib.istreambuf.iterator::op==] operator!= [lib.istreambuf.iterator::op!=]
24.4.4 Template class ostreambuf_iterator [lib.ostreambuf.iterator] ostreambuf_iterator constructors [lib.ostreambuf.iter.cons] ostreambuf_iterator operations [lib.ostreambuf.iter.ops] ostreambuf_iterator non-member operations [lib.ostreambuf.iterator.nonmembers]
25 Algorithms library [lib.algorithms]
25.1 Non-modifying sequence operations [lib.alg.nonmodifying]
25.1.1 For each [lib.alg.foreach]
25.1.2 Find [lib.alg.find]
25.1.3 Find End [lib.alg.find.end]
25.1.4 Find First [lib.alg.find.first.of]
25.1.5 Adjacent find [lib.alg.adjacent.find]
25.1.6 Count [lib.alg.count]
25.1.7 Mismatch [lib.mismatch]
25.1.8 Equal [lib.alg.equal]
25.1.9 Search []
25.2 Mutating sequence operations [lib.alg.modifying.operations]
25.2.1 Copy [lib.alg.copy]
25.2.2 Swap [lib.alg.swap]
25.2.3 Transform [lib.alg.transform]
25.2.4 Replace [lib.alg.replace]
25.2.5 Fill [lib.alg.fill]
25.2.6 Generate [lib.alg.generate]
25.2.7 Remove [lib.alg.remove]
25.2.8 Unique [lib.alg.unique]
25.2.9 Reverse [lib.alg.reverse]
25.2.10 Rotate [lib.alg.rotate]
25.2.11 Random shuffle [lib.alg.random.shuffle]
25.2.12 Partitions [lib.alg.partitions]
25.3 Sorting and related operations [lib.alg.sorting]
25.3.1 Sorting [lib.alg.sort] sort [lib.sort] stable_sort [lib.stable.sort] partial_sort [lib.partial.sort] partial_sort_copy [lib.partial.sort.copy]
25.3.2 Nth element [lib.alg.nth.element]
25.3.3 Binary search [] lower_bound [lib.lower.bound] upper_bound [lib.upper.bound] equal_range [lib.equal.range] binary_search []
25.3.4 Merge [lib.alg.merge]
25.3.5 Set operations on sorted structures [lib.alg.set.operations] includes [lib.includes] set_union [lib.set.union] set_intersection [lib.set.intersection] set_difference [lib.set.difference] set_symmetric_difference [lib.set.symmetric.difference]
25.3.6 Heap operations [lib.alg.heap.operations] push_heap [lib.push.heap] pop_heap [lib.pop.heap] make_heap [lib.make.heap] sort_heap [lib.sort.heap]
25.3.7 Minimum and maximum [lib.alg.min.max]
25.3.8 Lexicographical comparison [lib.alg.lex.comparison]
25.3.9 Permutation generators [lib.alg.permutation.generators]
25.4 C library algorithms [lib.alg.c.library]
26 Numerics library [lib.numerics]
26.1 Numeric type requirements [lib.numeric.requirements]
26.2 Complex numbers [lib.complex.numbers]
26.2.1 Template class complex [lib.complex]
26.2.2 complex specializations [lib.complex.special]
26.2.3 complex member functions [lib.complex.members]
26.2.4 complex member operators [lib.complex.member.ops]
26.2.5 complex non-member operations [lib.complex.ops]
26.2.6 complex value operations [lib.complex.value.ops]
26.2.7 complex transcendentals [lib.complex.transcendentals]
26.3 Numeric arrays [lib.numarray]
26.3.1 Template class valarray [lib.template.valarray] valarray constructors [lib.valarray.cons] valarray assignment [lib.valarray.assign] valarray element access [lib.valarray.access] valarray subset operations [lib.valarray.sub] valarray unary operators [lib.valarray.unary] valarray computed assignment [lib.valarray.cassign] valarray member functions [lib.valarray.members]
26.3.2 valarray non-member operations [lib.valarray.nonmembers] valarray binary operators [lib.valarray.binary] valarray comparison operators [lib.valarray.comparison] valarray min and max functions [lib.valarray.min.max] valarray transcendentals [lib.valarray.transcend]
26.3.3 Class slice [lib.class.slice] slice constructors [lib.cons.slice] slice access functions [lib.slice.access]
26.3.4 Template class slice_array [lib.template.slice.array] slice_array constructors [lib.cons.slice.arr] slice_array assignment [lib.slice.arr.assign] slice_array computed assignment [lib.slice.arr.comp.assign] slice_array fill function [lib.slice.arr.fill]
26.3.5 The gslice class [lib.class.gslice] gslice constructors [lib.gslice.cons] gslice access functions [lib.gslice.access]
26.3.6 Template class gslice_array [lib.template.gslice.array] gslice_array constructors [lib.gslice.array.cons] gslice_array assignment [lib.gslice.array.assign] gslice_array computed assignment [lib.gslice.array.comp.assign] gslice_array fill function [lib.gslice.array.fill]
26.3.7 Template class mask_array [lib.template.mask.array] mask_array constructors [lib.mask.array.cons] mask_array assignment [lib.mask.array.assign] mask_array computed assignment [lib.mask.array.comp.assign] mask_array fill function [lib.mask.array.fill]
26.3.8 Template class indirect_array [lib.template.indirect.array] indirect_array constructors [lib.indirect.array.cons] indirect_array assignment [lib.indirect.array.assign] indirect_array computed assignment [lib.indirect.array.comp.assign] indirect_array fill function [lib.indirect.array.fill]
26.4 Generalized numeric operations [lib.numeric.ops]
26.4.1 Accumulate [lib.accumulate]
26.4.2 Inner product [lib.inner.product]
26.4.3 Partial sum [lib.partial.sum]
26.4.4 Adjacent difference [lib.adjacent.difference]
26.5 C Library [lib.c.math]
27 Input/output library [lib.input.output]
27.1 Iostreams requirements [lib.iostreams.requirements]
27.1.1 Definitions [lib.iostreams.definitions]
27.1.2 Type requirements [lib.iostreams.type.reqmts] Type \f4CHAR_T\fP [lib.iostreams.char.t] Type \f4INT_T\fP [] Type \f4OFF_T\fP [] Type \f4POS_T\fP [lib.iostreams.pos.t]
27.2 Forward declarations [lib.iostream.forward]
27.3 Standard iostream objects [lib.iostream.objects]
27.3.1 Narrow stream objects []
27.3.2 Wide stream objects []
27.4 Iostreams base classes [lib.iostreams.base]
27.4.1 Types []
27.4.2 Template struct ios_traits [lib.ios.traits] ios_traits types [lib.ios.traits.types] ios_traits value functions [lib.ios.traits.values] ios_traits test functions [lib.ios.traits.tests] ios_traits conversion functions [lib.ios.traits.convert]
27.4.3 Class ios_base [lib.ios.base] Types [lib.ios.types] Class ios_base::failure [lib.ios::failure] Type ios_base::fmtflags [lib.ios::fmtflags] Type ios_base::iostate [lib.ios::iostate] Type ios_base::openmode [lib.ios::openmode] Type ios_base::seekdir [lib.ios::seekdir] Class ios_base::Init [lib.ios::Init] ios_base fmtflags state functions [lib.fmtflags.state] ios_base locale functions [lib.ios.base.locales] ios_base storage functions [] ios_base constructors [lib.ios.base.cons]
27.4.4 Template class basic_ios [lib.ios] basic_ios constructors [lib.basic.ios.cons] Member functions [lib.basic.ios.members] basic_ios iostate flags functions [lib.iostate.flags]
27.4.5 ios_base manipulators [lib.std.ios.manip] fmtflags manipulators [lib.fmtflags.manip] adjustfield manipulators [lib.adjustfield.manip] basefield manipulators [lib.basefield.manip] floatfield manipulators [lib.floatfield.manip]
27.5 Stream buffers []
27.5.1 Stream buffer requirements [lib.streambuf.reqts]
27.5.2 Template class basic_streambuf<charT,traits> [lib.streambuf] basic_streambuf constructors [lib.streambuf.cons] basic_streambuf public member functions [lib.streambuf.members] Locales [lib.streambuf.locales] Buffer management and positioning [lib.streambuf.buffer] Get area [] Putback [] Put area [] basic_streambuf protected member functions [lib.streambuf.protected] Get area access [lib.streambuf.get.area] Put area access [lib.streambuf.put.area] basic_streambuf virtual functions [lib.streambuf.virtuals] Locales [lib.streambuf.virt.locales] Buffer management and positioning [lib.streambuf.virt.buffer] Get area [lib.streambuf.virt.get] Putback [lib.streambuf.virt.pback] Put area [lib.streambuf.virt.put]
27.6 Formatting and manipulators [lib.iostream.format]
27.6.1 Input streams [lib.input.streams] Template class basic_istream [lib.istream] basic_istream constructors [lib.basic.istream.cons] basic_istream prefix and suffix [lib.istream.prefix] Formatted input functions [lib.istream.formatted] Common requirements [lib.istream.formatted.reqmts] basic_istream::operator>> [lib.istream::extractors] Unformatted input functions [lib.istream.unformatted] Standard basic_istream manipulators [lib.istream.manip]
27.6.2 Output streams [lib.output.streams] Template class basic_ostream [lib.ostream] basic_ostream constructors [lib.ostream.cons] basic_ostream prefix and suffix functions [lib.ostream.prefix] Formatted output functions [lib.ostream.formatted] Common requirements [lib.ostream.formatted.reqmts] basic_ostream::operator<< [lib.ostream.inserters] Unformatted output functions [lib.ostream.unformatted] Standard basic_ostream manipulators [lib.ostream.manip]
27.6.3 Standard manipulators [lib.std.manip]
27.7 String-based streams [lib.string.streams]
27.7.1 Template class basic_stringbuf [lib.stringbuf] basic_stringbuf constructors [lib.stringbuf.cons] Member functions [lib.stringbuf.members] Overridden virtual functions [lib.stringbuf.virtuals]
27.7.2 Template class basic_istringstream [lib.istringstream] basic_istringstream constructors [lib.istringstream.cons] Member functions [lib.istringstream.members] Class basic_ostringstream [lib.ostringstream] basic_ostringstream constructors [lib.ostringstream.cons] Member functions [lib.ostringstream.members]
27.8 File-based streams [lib.file.streams]
27.8.1 File streams [lib.fstreams] Template class basic_filebuf [lib.filebuf] basic_filebuf constructors [lib.filebuf.cons] Member functions [lib.filebuf.members] Overridden virtual functions [lib.filebuf.virtuals] Template class basic_ifstream [lib.ifstream] basic_ifstream constructors [lib.ifstream.cons] Member functions [lib.ifstream.members] Template class basic_ofstream [lib.ofstream] basic_ofstream constructors [lib.ofstream.cons] Member functions [lib.ofstream.members]
27.8.2 C Library files [lib.c.files]
A Grammar summary [gram]
A.1 Keywords [gram.key]
A.2 Lexical conventions [gram.lex]
A.3 Basic concepts [gram.basic]
A.4 Expressions [gram.expr]
A.5 Statements [gram.stmt.stmt]
A.6 Declarations [gram.dcl.dcl]
A.7 Declarators [gram.dcl.decl]
A.8 Classes [gram.class]
A.9 Derived classes [gram.class.derived]
A.10 Special member functions [gram.special]
A.11 Overloading [gram.over]
A.12 Templates [gram.temp]
A.13 Exception handling [gram.except]
B Implementation quantities [limits]
C Compatibility [diff]
C.1 Extensions [diff.c]
C.1.1 C++ features available in 1985 [diff.early]
C.1.2 C++ features added since 1985 [diff.c++]
C.2 C++ and ISO C [diff.iso]
C.2.1 Clause _lex_: lexical conventions [diff.lex]
C.2.2 Clause _basic_: basic concepts [diff.basic]
C.2.3 Clause _expr_: expressions [diff.expr]
C.2.4 Clause _stmt.stmt_: statements [diff.stat]
C.2.5 Clause _dcl.dcl_: declarations [diff.dcl]
C.2.6 Clause _dcl.decl_: declarators [diff.decl]
C.2.7 Clause _class_: classes [diff.class]
C.2.8 Clause _special_: special member functions [diff.special]
C.2.9 Clause _cpp_: preprocessing directives [diff.cpp]
C.3 Anachronisms [diff.anac]
C.3.1 Old style function definitions [diff.fct.def]
C.3.2 Old style base class initializer [diff.base.init]
C.3.3 Assignment to this [diff.this]
C.3.4 Cast of bound pointer [diff.bound]
C.3.5 Nonnested classes [diff.class.nonnested]
C.4 Standard C library [diff.library]
C.4.1 Modifications to headers []
C.4.2 Modifications to definitions []
C.4.2.1 Type wchar_t [diff.wchar.t]
C.4.2.2 Header <iso646.h> [diff.header.iso646.h]
C.4.2.3 Macro NULL [diff.null]
C.4.3 Modifications to declarations []
C.4.4 Modifications to behavior []
C.4.4.1 Macro \f7offsetof(\f6type\f5, \f6member-designator\f5)\f1 [diff.offsetof]
C.4.4.2 Memory allocation functions [diff.malloc]
D Compatibility features [depr]
D.1 Standard C library headers [depr.c.headers]
D.2 Old iostreams members [depr.ios.members]
D.3 char* streams [depr.str.strstreams]
D.3.1 Class strstreambuf [depr.strstreambuf]
D.3.1.1 strstreambuf constructors [depr.strstreambuf.cons]
D.3.1.2 Member functions [depr.strstreambuf.members]
D.3.1.3 strstreambuf overridden virtual functions [depr.strstreambuf.virtuals]
D.3.2 Template class istrstream [depr.istrstream]
D.3.2.1 istrstream constructors [depr.istrstream.cons]
D.3.2.2 Member functions [depr.istrstream.members]
D.3.3 Template class ostrstream [depr.ostrstream]
D.3.3.1 ostrstream constructors [depr.ostrstream.cons]
D.3.3.2 Member functions [depr.ostrstream.members]