Shopping Cart

No products in the cart.

BS ISO/IEC 14882:2014:2015 Edition

$215.11

Information technology. Programming languages. C++

Published By Publication Date Number of Pages
BSI 2015 1378
Guaranteed Safe Checkout
Category:

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

PDF Catalog

PDF Pages PDF Title
5 Contents
13 List of Tables
17 List of Figures
18 Foreword
19 1 General
1.1 Scope
1.2 Normative references
20 1.3 Terms and definitions
23 1.4 Implementation compliance
1.5 Structure of this International Standard
24 1.6 Syntax notation
1.7 The C++ memory model
25 1.8 The C++ object model
26 1.9 Program execution
29 1.10 Multi-threaded executions and data races
33 1.11 Acknowledgments
34 2 Lexical conventions
2.1 Separate translation
2.2 Phases of translation
35 2.3 Character sets
36 2.4 Trigraph sequences
37 2.5 Preprocessing tokens
38 2.6 Alternative tokens
2.7 Tokens
2.8 Comments
2.9 Header names
39 2.10 Preprocessing numbers
2.11 Identifiers
40 2.12 Keywords
2.13 Operators and punctuators
41 2.14 Literals
2.14.1 Kinds of literals
2.14.2 Integer literals
43 2.14.3 Character literals
44 2.14.4 Floating literals
45 2.14.5 String literals
48 2.14.6 Boolean literals
2.14.7 Pointer literals
2.14.8 User-defined literals
50 3 Basic concepts
3.1 Declarations and definitions
52 3.2 One definition rule
55 3.3 Scope
3.3.1 Declarative regions and scopes
3.3.2 Point of declaration
57 3.3.3 Block scope
3.3.4 Function prototype scope
3.3.5 Function scope
3.3.6 Namespace scope
58 3.3.7 Class scope
59 3.3.8 Enumeration scope
3.3.9 Template parameter scope
60 3.3.10 Name hiding
3.4 Name lookup
61 3.4.1 Unqualified name lookup
64 3.4.2 Argument-dependent name lookup
66 3.4.3 Qualified name lookup
67 3.4.3.1 Class members
68 3.4.3.2 Namespace members
72 3.4.4 Elaborated type specifiers
73 3.4.5 Class member access
74 3.4.6 Using-directives and namespace aliases
3.5 Program and linkage
77 3.6 Start and termination
3.6.1 Main function
3.6.2 Initialization of non-local variables
79 3.6.3 Termination
80 3.7 Storage duration
3.7.1 Static storage duration
81 3.7.2 Thread storage duration
3.7.3 Automatic storage duration
3.7.4 Dynamic storage duration
3.7.4.1 Allocation functions
82 3.7.4.2 Deallocation functions
83 3.7.4.3 Safely-derived pointers
84 3.7.5 Duration of subobjects
3.8 Object lifetime
87 3.9 Types
89 3.9.1 Fundamental types
91 3.9.2 Compound types
92 3.9.3 CV-qualifiers
93 3.10 Lvalues and rvalues
94 3.11 Alignment
96 4 Standard conversions
97 4.1 Lvalue-to-rvalue conversion
4.2 Array-to-pointer conversion
4.3 Function-to-pointer conversion
98 4.4 Qualification conversions
99 4.5 Integral promotions
4.6 Floating point promotion
4.7 Integral conversions
100 4.8 Floating point conversions
4.9 Floating-integral conversions
4.10 Pointer conversions
4.11 Pointer to member conversions
101 4.12 Boolean conversions
4.13 Integer conversion rank
102 5 Expressions
105 5.1 Primary expressions
5.1.1 General
108 5.1.2 Lambda expressions
115 5.2 Postfix expressions
5.2.1 Subscripting
116 5.2.2 Function call
117 5.2.3 Explicit type conversion (functional notation)
118 5.2.4 Pseudo destructor call
5.2.5 Class member access
119 5.2.6 Increment and decrement
5.2.7 Dynamic cast
121 5.2.8 Type identification
5.2.9 Static cast
123 5.2.10 Reinterpret cast
125 5.2.11 Const cast
126 5.3 Unary expressions
5.3.1 Unary operators
127 5.3.2 Increment and decrement
5.3.3 Sizeof
128 5.3.4 New
133 5.3.5 Delete
134 5.3.6 Alignof
5.3.7 noexcept operator
135 5.4 Explicit type conversion (cast notation)
136 5.5 Pointer-to-member operators
5.6 Multiplicative operators
137 5.7 Additive operators
138 5.8 Shift operators
5.9 Relational operators
139 5.10 Equality operators
140 5.11 Bitwise AND operator
5.12 Bitwise exclusive OR operator
5.13 Bitwise inclusive OR operator
141 5.14 Logical AND operator
5.15 Logical OR operator
5.16 Conditional operator
143 5.17 Assignment and compound assignment operators
144 5.18 Comma operator
5.19 Constant expressions
148 6 Statements
6.1 Labeled statement
6.2 Expression statement
6.3 Compound statement or block
149 6.4 Selection statements
150 6.4.1 The if statement
6.4.2 The switch statement
6.5 Iteration statements
151 6.5.1 The while statement
6.5.2 The do statement
152 6.5.3 The for statement
6.5.4 The range-based for statement
153 6.6 Jump statements
6.6.1 The break statement
6.6.2 The continue statement
154 6.6.3 The return statement
6.6.4 The goto statement
6.7 Declaration statement
155 6.8 Ambiguity resolution
157 7 Declarations
158 7.1 Specifiers
159 7.1.1 Storage class specifiers
161 7.1.2 Function specifiers
7.1.3 The typedef specifier
163 7.1.4 The friend specifier
7.1.5 The constexpr specifier
166 7.1.6 Type specifiers
167 7.1.6.1 The cv-qualifiers
168 7.1.6.2 Simple type specifiers
172 7.1.6.3 Elaborated type specifiers
7.1.6.4 auto specifier
175 7.2 Enumeration declarations
179 7.3 Namespaces
7.3.1 Namespace definition
180 7.3.1.1 Unnamed namespaces
181 7.3.1.2 Namespace member definitions
182 7.3.2 Namespace alias
7.3.3 The using declaration
188 7.3.4 Using directive
191 7.4 The asm declaration
7.5 Linkage specifications
194 7.6 Attributes
7.6.1 Attribute syntax and semantics
195 7.6.2 Alignment specifier
196 7.6.3 Noreturn attribute
7.6.4 Carries dependency attribute
197 7.6.5 Deprecated attribute
199 8 Declarators
200 8.1 Type names
201 8.2 Ambiguity resolution
202 8.3 Meaning of declarators
203 8.3.1 Pointers
204 8.3.2 References
205 8.3.3 Pointers to members
206 8.3.4 Arrays
207 8.3.5 Functions
211 8.3.6 Default arguments
214 8.4 Function definitions
8.4.1 In general
215 8.4.2 Explicitly-defaulted functions
216 8.4.3 Deleted definitions
217 8.5 Initializers
221 8.5.1 Aggregates
224 8.5.2 Character arrays
8.5.3 References
227 8.5.4 List-initialization
232 9 Classes
234 9.1 Class names
236 9.2 Class members
238 9.3 Member functions
239 9.3.1 Nonstatic member functions
240 9.3.2 The this pointer
241 9.4 Static members
9.4.1 Static member functions
242 9.4.2 Static data members
9.5 Unions
244 9.6 Bit-fields
245 9.7 Nested class declarations
246 9.8 Local class declarations
9.9 Nested type names
248 10 Derived classes
249 10.1 Multiple base classes
251 10.2 Member name lookup
254 10.3 Virtual functions
258 10.4 Abstract classes
260 11 Member access control
261 11.1 Access specifiers
262 11.2 Accessibility of base classes and base class members
265 11.3 Friends
268 11.4 Protected member access
269 11.5 Access to virtual functions
11.6 Multiple access
11.7 Nested classes
271 12 Special member functions
12.1 Constructors
273 12.2 Temporary objects
276 12.3 Conversions
12.3.1 Conversion by constructor
277 12.3.2 Conversion functions
278 12.4 Destructors
281 12.5 Free store
283 12.6 Initialization
12.6.1 Explicit initialization
284 12.6.2 Initializing bases and members
288 12.7 Construction and destruction
291 12.8 Copying and moving class objects
298 12.9 Inheriting constructors
302 13 Overloading
13.1 Overloadable declarations
304 13.2 Declaration matching
305 13.3 Overload resolution
306 13.3.1 Candidate functions and argument lists
308 13.3.1.1 Function call syntax
13.3.1.1.1 Call to named function
13.3.1.1.2 Call to object of class type
309 13.3.1.2 Operators in expressions
312 13.3.1.3 Initialization by constructor
13.3.1.4 Copy-initialization of class by user-defined conversion
13.3.1.5 Initialization by conversion function
313 13.3.1.6 Initialization by conversion function for direct reference binding
13.3.1.7 Initialization by list-initialization
13.3.2 Viable functions
314 13.3.3 Best viable function
316 13.3.3.1 Implicit conversion sequences
318 13.3.3.1.1 Standard conversion sequences
13.3.3.1.2 User-defined conversion sequences
319 13.3.3.1.3 Ellipsis conversion sequences
13.3.3.1.4 Reference binding
13.3.3.1.5 List-initialization sequence
322 13.3.3.2 Ranking implicit conversion sequences
325 13.4 Address of overloaded function
326 13.5 Overloaded operators
327 13.5.1 Unary operators
13.5.2 Binary operators
13.5.3 Assignment
328 13.5.4 Function call
13.5.5 Subscripting
13.5.6 Class member access
13.5.7 Increment and decrement
329 13.5.8 User-defined literals
330 13.6 Built-in operators
334 14 Templates
335 14.1 Template parameters
338 14.2 Names of template specializations
340 14.3 Template arguments
342 14.3.1 Template type arguments
14.3.2 Template non-type arguments
344 14.3.3 Template template arguments
346 14.4 Type equivalence
347 14.5 Template declarations
14.5.1 Class templates
348 14.5.1.1 Member functions of class templates
14.5.1.2 Member classes of class templates
14.5.1.3 Static data members of class templates
349 14.5.1.4 Enumeration members of class templates
14.5.2 Member templates
351 14.5.3 Variadic templates
353 14.5.4 Friends
355 14.5.5 Class template partial specializations
357 14.5.5.1 Matching of class template partial specializations
14.5.5.2 Partial ordering of class template specializations
358 14.5.5.3 Members of class template specializations
359 14.5.6 Function templates
14.5.6.1 Function template overloading
361 14.5.6.2 Partial ordering of function templates
363 14.5.7 Alias templates
364 14.6 Name resolution
367 14.6.1 Locally declared names
369 14.6.2 Dependent names
370 14.6.2.1 Dependent types
373 14.6.2.2 Type-dependent expressions
374 14.6.2.3 Value-dependent expressions
375 14.6.2.4 Dependent template arguments
14.6.3 Non-dependent names
14.6.4 Dependent name resolution
376 14.6.4.1 Point of instantiation
14.6.4.2 Candidate functions
377 14.6.5 Friend names declared within a class template
14.7 Template instantiation and specialization
378 14.7.1 Implicit instantiation
381 14.7.2 Explicit instantiation
384 14.7.3 Explicit specialization
389 14.8 Function template specializations
14.8.1 Explicit template argument specification
392 14.8.2 Template argument deduction
396 14.8.2.1 Deducing template arguments from a function call
398 14.8.2.2 Deducing template arguments taking the address of a function template
14.8.2.3 Deducing conversion function template arguments
399 14.8.2.4 Deducing template arguments during partial ordering
401 14.8.2.5 Deducing template arguments from a type
407 14.8.2.6 Deducing template arguments from a function declaration
14.8.3 Overload resolution
410 15 Exception handling
411 15.1 Throwing an exception
413 15.2 Constructors and destructors
15.3 Handling an exception
415 15.4 Exception specifications
418 15.5 Special functions
419 15.5.1 The std::terminate() function
420 15.5.2 The std::unexpected() function
15.5.3 The std::uncaught_exception() function
421 16 Preprocessing directives
422 16.1 Conditional inclusion
423 16.2 Source file inclusion
424 16.3 Macro replacement
425 16.3.1 Argument substitution
426 16.3.2 The # operator
16.3.3 The ## operator
427 16.3.4 Rescanning and further replacement
16.3.5 Scope of macro definitions
429 16.4 Line control
430 16.5 Error directive
16.6 Pragma directive
16.7 Null directive
16.8 Predefined macro names
431 16.9 Pragma operator
432 17 Library introduction
17.1 General
433 17.2 The C standard library
17.3 Definitions
436 17.4 Additional definitions
17.5 Method of description (Informative)
17.5.1 Structure of each clause
17.5.1.1 Elements
17.5.1.2 Summary
17.5.1.3 Requirements
437 17.5.1.4 Detailed specifications
438 17.5.1.5 C library
17.5.2 Other conventions
17.5.2.1 Type descriptions
17.5.2.1.1 General
439 17.5.2.1.2 Enumerated types
17.5.2.1.3 Bitmask types
440 17.5.2.1.4 Character sequences
17.5.2.1.4.1 Byte strings
441 17.5.2.1.4.2 Multibyte strings
17.5.2.2 Functions within classes
17.5.2.3 Private members
17.6 Library-wide requirements
17.6.1 Library contents and organization
17.6.1.1 Library contents
442 17.6.1.2 Headers
443 17.6.1.3 Freestanding implementations
17.6.2 Using the library
17.6.2.1 Overview
17.6.2.2 Headers
17.6.2.3 Linkage
444 17.6.3 Requirements on types and expressions
17.6.3.1 Template argument requirements
446 17.6.3.2 Swappable requirements
447 17.6.3.3 NullablePointer requirements
448 17.6.3.4 Hash requirements
17.6.3.5 Allocator requirements
453 17.6.4 Constraints on programs
17.6.4.1 Overview
17.6.4.2 Namespace use
17.6.4.2.1 Namespace std
17.6.4.2.2 Namespace posix
17.6.4.3 Reserved names
454 17.6.4.3.1 Macro names
17.6.4.3.2 Global names
17.6.4.3.3 External linkage
17.6.4.3.4 Types
17.6.4.3.5 User-defined literal suffixes
17.6.4.4 Headers
17.6.4.5 Derived classes
17.6.4.6 Replacement functions
455 17.6.4.7 Handler functions
456 17.6.4.8 Other functions
17.6.4.9 Function arguments
17.6.4.10 Shared objects and the library
457 17.6.4.11 Requires paragraph
17.6.5 Conforming implementations
17.6.5.1 Overview
17.6.5.2 Headers
17.6.5.3 Restrictions on macro definitions
17.6.5.4 Global and non-member functions
17.6.5.5 Member functions
458 17.6.5.6 constexpr functions and constructors
17.6.5.7 Requirements for stable algorithms
17.6.5.8 Reentrancy
17.6.5.9 Data race avoidance
459 17.6.5.10 Protection within classes
17.6.5.11 Derived classes
17.6.5.12 Restrictions on exception handling
17.6.5.13 Restrictions on storage of pointers
17.6.5.14 Value of error codes
460 17.6.5.15 Moved-from state of library types
461 18 Language support library
18.1 General
18.2 Types
462 18.3 Implementation properties
18.3.1 In general
18.3.2 Numeric limits
18.3.2.1 Class template numeric_limits
18.3.2.2 Header synopsis
463 18.3.2.3 Class template numeric_limits
464 18.3.2.4 numeric_limits members
468 18.3.2.5 Type float_round_style
469 18.3.2.6 Type float_denorm_style
18.3.2.7 numeric_limits specializations
471 18.3.3 C library
18.4 Integer types
18.4.1 Header synopsis
473 18.5 Start and termination
474 18.6 Dynamic memory management
475 18.6.1 Storage allocation and deallocation
18.6.1.1 Single-object forms
477 18.6.1.2 Array forms
479 18.6.1.3 Placement forms
18.6.1.4 Data races
18.6.2 Storage allocation errors
18.6.2.1 Class bad_alloc
480 18.6.2.2 Class bad_array_new_length
18.6.2.3 Type new_handler
481 18.6.2.4 set_new_handler
18.6.2.5 get_new_handler
18.7 Type identification
18.7.1 Class type_info
482 18.7.2 Class bad_cast
483 18.7.3 Class bad_typeid
18.8 Exception handling
484 18.8.1 Class exception
485 18.8.2 Class bad_exception
18.8.3 Abnormal termination
18.8.3.1 Type terminate_handler
18.8.3.2 set_terminate
18.8.3.3 get_terminate
486 18.8.3.4 terminate
18.8.4 uncaught_exception
18.8.5 Exception propagation
487 18.8.6 nested_exception
488 18.9 Initializer lists
18.9.1 Initializer list constructors
489 18.9.2 Initializer list access
18.9.3 Initializer list range access
18.10 Other runtime support
492 19 Diagnostics library
19.1 General
19.2 Exception classes
19.2.1 Class logic_error
493 19.2.2 Class domain_error
19.2.3 Class invalid_argument
494 19.2.4 Class length_error
19.2.5 Class out_of_range
19.2.6 Class runtime_error
495 19.2.7 Class range_error
19.2.8 Class overflow_error
496 19.2.9 Class underflow_error
19.3 Assertions
19.4 Error numbers
19.5 System error support
499 19.5.1 Class error_category
19.5.1.1 Class error_category overview
500 19.5.1.2 Class error_category virtual members
19.5.1.3 Class error_category non-virtual members
501 19.5.1.4 Program defined classes derived from error_category
19.5.1.5 Error category objects
19.5.2 Class error_code
19.5.2.1 Class error_code overview
502 19.5.2.2 Class error_code constructors
503 19.5.2.3 Class error_code modifiers
19.5.2.4 Class error_code observers
19.5.2.5 Class error_code non-member functions
504 19.5.3 Class error_condition
19.5.3.1 Class error_condition overview
19.5.3.2 Class error_condition constructors
505 19.5.3.3 Class error_condition modifiers
19.5.3.4 Class error_condition observers
19.5.3.5 Class error_condition non-member functions
506 19.5.4 Comparison operators
19.5.5 System error hash support
19.5.6 Class system_error
19.5.6.1 Class system_error overview
507 19.5.6.2 Class system_error members
508 20 General utilities library
20.1 General
20.2 Utility components
510 20.2.1 Operators
511 20.2.2 swap
20.2.3 exchange
20.2.4 forward/move helpers
512 20.2.5 Function template declval
513 20.3 Pairs
20.3.1 In general
20.3.2 Class template pair
516 20.3.3 Specialized algorithms
517 20.3.4 Tuple-like access to pair
518 20.3.5 Piecewise construction
20.4 Tuples
20.4.1 In general
519 20.4.2 Class template tuple
521 20.4.2.1 Construction
523 20.4.2.2 Assignment
524 20.4.2.3 swap
20.4.2.4 Tuple creation functions
525 20.4.2.5 Tuple helper classes
526 20.4.2.6 Element access
527 20.4.2.7 Relational operators
528 20.4.2.8 Tuple traits
20.4.2.9 Tuple specialized algorithms
20.5 Compile-time integer sequences
20.5.1 In general
20.5.2 Class template integer_sequence
529 20.5.3 Alias template make_integer_sequence
20.6 Class template bitset
531 20.6.1 bitset constructors
532 20.6.2 bitset members
535 20.6.3 bitset hash support
536 20.6.4 bitset operators
537 20.7 Memory
20.7.1 In general
20.7.2 Header synopsis
541 20.7.3 Pointer traits
20.7.3.1 Pointer traits member types
542 20.7.3.2 Pointer traits member functions
20.7.4 Pointer safety
543 20.7.5 Align
544 20.7.6 Allocator argument tag
20.7.7 uses_allocator
20.7.7.1 uses_allocator trait
20.7.7.2 uses-allocator construction
20.7.8 Allocator traits
545 20.7.8.1 Allocator traits member types
546 20.7.8.2 Allocator traits static member functions
547 20.7.9 The default allocator
548 20.7.9.1 allocator members
549 20.7.9.2 allocator globals
20.7.10 Raw storage iterator
550 20.7.11 Temporary buffers
20.7.12 Specialized algorithms
20.7.12.1 addressof
20.7.12.2 uninitialized_copy
551 20.7.12.3 uninitialized_fill
20.7.12.4 uninitialized_fill_n
20.7.13 C library
552 20.8 Smart pointers
20.8.1 Class template unique_ptr
553 20.8.1.1 Default deleters
20.8.1.1.1 In general
20.8.1.1.2 default_delete
554 20.8.1.1.3 default_delete
20.8.1.2 unique_ptr for single objects
555 20.8.1.2.1 unique_ptr constructors
558 20.8.1.2.2 unique_ptr destructor
20.8.1.2.3 unique_ptr assignment
20.8.1.2.4 unique_ptr observers
559 20.8.1.2.5 unique_ptr modifiers
20.8.1.3 unique_ptr for array objects with a runtime length
560 20.8.1.3.1 unique_ptr constructors
561 20.8.1.3.2 unique_ptr observers
20.8.1.3.3 unique_ptr modifiers
20.8.1.4 unique_ptr creation
20.8.1.5 unique_ptr specialized algorithms
563 20.8.2 Shared-ownership pointers
20.8.2.1 Class bad_weak_ptr
20.8.2.2 Class template shared_ptr
566 20.8.2.2.1 shared_ptr constructors
568 20.8.2.2.2 shared_ptr destructor
20.8.2.2.3 shared_ptr assignment
20.8.2.2.4 shared_ptr modifiers
569 20.8.2.2.5 shared_ptr observers
570 20.8.2.2.6 shared_ptr creation
20.8.2.2.7 shared_ptr comparison
571 20.8.2.2.8 shared_ptr specialized algorithms
20.8.2.2.9 shared_ptr casts
572 20.8.2.2.10 get_deleter
20.8.2.2.11 shared_ptr I/O
573 20.8.2.3 Class template weak_ptr
20.8.2.3.1 weak_ptr constructors
574 20.8.2.3.2 weak_ptr destructor
20.8.2.3.3 weak_ptr assignment
20.8.2.3.4 weak_ptr modifiers
575 20.8.2.3.5 weak_ptr observers
20.8.2.3.6 weak_ptr specialized algorithms
20.8.2.4 Class template owner_less
576 20.8.2.5 Class template enable_shared_from_this
577 20.8.2.6 shared_ptr atomic access
579 20.8.2.7 Smart pointer hash support
580 20.9 Function objects
583 20.9.1 Definitions
20.9.2 Requirements
584 20.9.3 Class template reference_wrapper
585 20.9.3.1 reference_wrapper construct/copy/destroy
20.9.3.2 reference_wrapper assignment
586 20.9.3.3 reference_wrapper access
20.9.3.4 reference_wrapper invocation
20.9.3.5 reference_wrapper helper functions
20.9.4 Arithmetic operations
588 20.9.5 Comparisons
591 20.9.6 Logical operations
592 20.9.7 Bitwise operations
593 20.9.8 Negators
594 20.9.9 Function template bind
20.9.9.1 Function object binders
20.9.9.1.1 Class template is_bind_expression
20.9.9.1.2 Class template is_placeholder
20.9.9.1.3 Function template bind
596 20.9.9.1.4 Placeholders
20.9.10 Function template mem_fn
20.9.11 Polymorphic function wrappers
20.9.11.1 Class bad_function_call
597 20.9.11.1.1 bad_function_call constructor
20.9.11.2 Class template function
598 20.9.11.2.1 function construct/copy/destroy
600 20.9.11.2.2 function modifiers
20.9.11.2.3 function capacity
20.9.11.2.4 function invocation
601 20.9.11.2.5 function target access
20.9.11.2.6 null pointer comparison operators
20.9.11.2.7 specialized algorithms
20.9.12 Class template hash
602 20.10 Metaprogramming and type traits
20.10.1 Requirements
20.10.2 Header synopsis
606 20.10.3 Helper classes
20.10.4 Unary type traits
20.10.4.1 Primary type categories
607 20.10.4.2 Composite type traits
608 20.10.4.3 Type properties
614 20.10.5 Type property queries
615 20.10.6 Relationships between types
616 20.10.7 Transformations between types
20.10.7.1 Const-volatile modifications
20.10.7.2 Reference modifications
617 20.10.7.3 Sign modifications
618 20.10.7.4 Array modifications
20.10.7.5 Pointer modifications
619 20.10.7.6 Other transformations
621 20.11 Compile-time rational arithmetic
20.11.1 In general
20.11.2 Header synopsis
622 20.11.3 Class template ratio
623 20.11.4 Arithmetic on ratios
20.11.5 Comparison of ratios
624 20.11.6 SI types for ratio
20.12 Time utilities
20.12.1 In general
20.12.2 Header synopsis
627 20.12.3 Clock requirements
628 20.12.4 Time-related traits
20.12.4.1 treat_as_floating_point
20.12.4.2 duration_values
629 20.12.4.3 Specializations of common_type
20.12.5 Class template duration
630 20.12.5.1 duration constructors
631 20.12.5.2 duration observer
20.12.5.3 duration arithmetic
632 20.12.5.4 duration special values
633 20.12.5.5 duration non-member arithmetic
634 20.12.5.6 duration comparisons
635 20.12.5.7 duration_cast
20.12.5.8 Suffixes for duration literals
636 20.12.6 Class template time_point
637 20.12.6.1 time_point constructors
20.12.6.2 time_point observer
20.12.6.3 time_point arithmetic
20.12.6.4 time_point special values
638 20.12.6.5 time_point non-member arithmetic
20.12.6.6 time_point comparisons
639 20.12.6.7 time_point_cast
20.12.7 Clocks
20.12.7.1 Class system_clock
640 20.12.7.2 Class steady_clock
20.12.7.3 Class high_resolution_clock
20.12.8 Date and time functions
20.13 Class template scoped_allocator_adaptor
20.13.1 Header synopsis
642 20.13.2 Scoped allocator adaptor member types
643 20.13.3 Scoped allocator adaptor constructors
644 20.13.4 Scoped allocator adaptor members
646 20.13.5 Scoped allocator operators
647 20.14 Class type_index
20.14.1 Header synopsis
20.14.2 type_index overview
20.14.3 type_index members
648 20.14.4 Hash support
649 21 Strings library
21.1 General
21.2 Character traits
21.2.1 Character traits requirements
651 21.2.2 traits typedefs
652 21.2.3 char_traits specializations
21.2.3.1 struct char_traits
21.2.3.2 struct char_traits
653 21.2.3.3 struct char_traits
654 21.2.3.4 struct char_traits
655 21.3 String classes
659 21.4 Class template basic_string
663 21.4.1 basic_string general requirements
21.4.2 basic_string constructors and assignment operators
667 21.4.3 basic_string iterator support
21.4.4 basic_string capacity
669 21.4.5 basic_string element access
21.4.6 basic_string modifiers
21.4.6.1 basic_string::operator+=
670 21.4.6.2 basic_string::append
671 21.4.6.3 basic_string::assign
672 21.4.6.4 basic_string::insert
674 21.4.6.5 basic_string::erase
21.4.6.6 basic_string::replace
676 21.4.6.7 basic_string::copy
677 21.4.6.8 basic_string::swap
21.4.7 basic_string string operations
21.4.7.1 basic_string accessors
21.4.7.2 basic_string::find
678 21.4.7.3 basic_string::rfind
21.4.7.4 basic_string::find_first_of
679 21.4.7.5 basic_string::find_last_of
21.4.7.6 basic_string::find_first_not_of
680 21.4.7.7 basic_string::find_last_not_of
21.4.7.8 basic_string::substr
681 21.4.7.9 basic_string::compare
21.4.8 basic_string non-member functions
21.4.8.1 operator+
683 21.4.8.2 operator==
684 21.4.8.3 operator!=
21.4.8.4 operator<
21.4.8.5 operator>
685 21.4.8.6 operator<=
21.4.8.7 operator>=
21.4.8.8 swap
686 21.4.8.9 Inserters and extractors
687 21.5 Numeric conversions
689 21.6 Hash support
21.7 Suffix for basic_string literals
21.8 Null-terminated sequence utilities
693 22 Localization library
22.1 General
22.2 Header synopsis
694 22.3 Locales
22.3.1 Class locale
696 22.3.1.1 locale types
22.3.1.1.1 Type locale::category
698 22.3.1.1.2 Class locale::facet
22.3.1.1.3 Class locale::id
699 22.3.1.2 locale constructors and destructor
700 22.3.1.3 locale members
22.3.1.4 locale operators
701 22.3.1.5 locale static members
22.3.2 locale globals
22.3.3 Convenience interfaces
22.3.3.1 Character classification
702 22.3.3.2 Conversions
22.3.3.2.1 Character conversions
22.3.3.2.2 string conversions
705 22.3.3.2.3 Buffer conversions
707 22.4 Standard locale categories
22.4.1 The ctype category
22.4.1.1 Class template ctype
708 22.4.1.1.1 ctype members
709 22.4.1.1.2 ctype virtual functions
711 22.4.1.2 Class template ctype_byname
22.4.1.3 ctype specializations
712 22.4.1.3.1 ctype destructor
22.4.1.3.2 ctype members
713 22.4.1.3.3 ctype static members
22.4.1.3.4 ctype virtual functions
714 22.4.1.4 Class template codecvt
715 22.4.1.4.1 codecvt members
716 22.4.1.4.2 codecvt virtual functions
718 22.4.1.5 Class template codecvt_byname
22.4.2 The numeric category
22.4.2.1 Class template num_get
720 22.4.2.1.1 num_get members
22.4.2.1.2 num_get virtual functions
723 22.4.2.2 Class template num_put
724 22.4.2.2.1 num_put members
22.4.2.2.2 num_put virtual functions
727 22.4.3 The numeric punctuation facet
22.4.3.1 Class template numpunct
728 22.4.3.1.1 numpunct members
22.4.3.1.2 numpunct virtual functions
729 22.4.3.2 Class template numpunct_byname
22.4.4 The collate category
22.4.4.1 Class template collate
730 22.4.4.1.1 collate members
22.4.4.1.2 collate virtual functions
731 22.4.4.2 Class template collate_byname
22.4.5 The time category
22.4.5.1 Class template time_get
732 22.4.5.1.1 time_get members
733 22.4.5.1.2 time_get virtual functions
735 22.4.5.2 Class template time_get_byname
22.4.5.3 Class template time_put
736 22.4.5.3.1 time_put members
22.4.5.3.2 time_put virtual functions
22.4.5.4 Class template time_put_byname
737 22.4.6 The monetary category
22.4.6.1 Class template money_get
22.4.6.1.1 money_get members
738 22.4.6.1.2 money_get virtual functions
739 22.4.6.2 Class template money_put
22.4.6.2.1 money_put members
22.4.6.2.2 money_put virtual functions
740 22.4.6.3 Class template moneypunct
741 22.4.6.3.1 moneypunct members
742 22.4.6.3.2 moneypunct virtual functions
743 22.4.6.4 Class template moneypunct_byname
22.4.7 The message retrieval category
22.4.7.1 Class template messages
22.4.7.1.1 messages members
744 22.4.7.1.2 messages virtual functions
22.4.7.2 Class template messages_byname
745 22.4.8 Program-defined facets
747 22.5 Standard code conversion facets
749 22.6 C library locales
750 23 Containers library
23.1 General
23.2 Container requirements
23.2.1 General container requirements
757 23.2.2 Container data races
23.2.3 Sequence containers
762 23.2.4 Associative containers
768 23.2.4.1 Exception safety guarantees
769 23.2.5 Unordered associative containers
778 23.2.5.1 Exception safety guarantees
23.3 Sequence containers
23.3.1 In general
780 23.3.2 Class template array
23.3.2.1 Class template array overview
782 23.3.2.2 array constructors, copy, and assignment
23.3.2.3 array specialized algorithms
23.3.2.4 array::size
23.3.2.5 array::data
23.3.2.6 array::fill
23.3.2.7 array::swap
23.3.2.8 Zero sized arrays
23.3.2.9 Tuple interface to class template array
783 23.3.3 Class template deque
23.3.3.1 Class template deque overview
785 23.3.3.2 deque constructors, copy, and assignment
786 23.3.3.3 deque capacity
23.3.3.4 deque modifiers
787 23.3.3.5 deque specialized algorithms
23.3.4 Class template forward_list
23.3.4.1 Class template forward_list overview
790 23.3.4.2 forward_list constructors, copy, assignment
791 23.3.4.3 forward_list iterators
23.3.4.4 forward_list element access
23.3.4.5 forward_list modifiers
793 23.3.4.6 forward_list operations
795 23.3.4.7 forward_list specialized algorithms
23.3.5 Class template list
23.3.5.1 Class template list overview
798 23.3.5.2 list constructors, copy, and assignment
23.3.5.3 list capacity
799 23.3.5.4 list modifiers
23.3.5.5 list operations
801 23.3.5.6 list specialized algorithms
802 23.3.6 Class template vector
23.3.6.1 Class template vector overview
804 23.3.6.2 vector constructors, copy, and assignment
805 23.3.6.3 vector capacity
806 23.3.6.4 vector data
23.3.6.5 vector modifiers
23.3.6.6 vector specialized algorithms
807 23.3.7 Class vector
809 23.4 Associative containers
23.4.1 In general
23.4.2 Header

synopsis
810 23.4.3 Header synopsis
811 23.4.4 Class template map
23.4.4.1 Class template map overview
814 23.4.4.2 map constructors, copy, and assignment
815 23.4.4.3 map element access
23.4.4.4 map modifiers
816 23.4.4.5 map specialized algorithms
23.4.5 Class template multimap
23.4.5.1 Class template multimap overview
819 23.4.5.2 multimap constructors
23.4.5.3 multimap modifiers
23.4.5.4 multimap specialized algorithms
820 23.4.6 Class template set
23.4.6.1 Class template set overview
822 23.4.6.2 set constructors, copy, and assignment
823 23.4.6.3 set specialized algorithms
23.4.7 Class template multiset
23.4.7.1 Class template multiset overview
826 23.4.7.2 multiset constructors
23.4.7.3 multiset specialized algorithms
23.5 Unordered associative containers
23.5.1 In general
23.5.2 Header synopsis
827 23.5.3 Header synopsis
828 23.5.4 Class template unordered_map
23.5.4.1 Class template unordered_map overview
831 23.5.4.2 unordered_map constructors
23.5.4.3 unordered_map element access
832 23.5.4.4 unordered_map modifiers
23.5.4.5 unordered_map swap
23.5.5 Class template unordered_multimap
23.5.5.1 Class template unordered_multimap overview
835 23.5.5.2 unordered_multimap constructors
23.5.5.3 unordered_multimap modifiers
836 23.5.5.4 unordered_multimap swap
23.5.6 Class template unordered_set
23.5.6.1 Class template unordered_set overview
839 23.5.6.2 unordered_set constructors
23.5.6.3 unordered_set swap
23.5.7 Class template unordered_multiset
23.5.7.1 Class template unordered_multiset overview
842 23.5.7.2 unordered_multiset constructors
843 23.5.7.3 unordered_multiset swap
23.6 Container adaptors
23.6.1 In general
23.6.2 Header synopsis
844 23.6.3 Class template queue
23.6.3.1 queue definition
845 23.6.3.2 queue constructors
23.6.3.3 queue constructors with allocators
846 23.6.3.4 queue operators
23.6.3.5 queue specialized algorithms
23.6.4 Class template priority_queue
847 23.6.4.1 priority_queue constructors
848 23.6.4.2 priority_queue constructors with allocators
849 23.6.4.3 priority_queue members
23.6.4.4 priority_queue specialized algorithms
23.6.5 Class template stack
23.6.5.1 Header synopsis
850 23.6.5.2 stack definition
851 23.6.5.3 stack constructors
23.6.5.4 stack constructors with allocators
852 23.6.5.5 stack operators
23.6.5.6 stack specialized algorithms
853 24 Iterators library
24.1 General
24.2 Iterator requirements
24.2.1 In general
854 24.2.2 Iterator
855 24.2.3 Input iterators
24.2.4 Output iterators
856 24.2.5 Forward iterators
857 24.2.6 Bidirectional iterators
24.2.7 Random access iterators
858 24.3 Header synopsis
861 24.4 Iterator primitives
24.4.1 Iterator traits
863 24.4.2 Basic iterator
24.4.3 Standard iterator tags
864 24.4.4 Iterator operations
865 24.5 Iterator adaptors
24.5.1 Reverse iterators
24.5.1.1 Class template reverse_iterator
866 24.5.1.2 reverse_iterator requirements
24.5.1.3 reverse_iterator operations
24.5.1.3.1 reverse_iterator constructor
867 24.5.1.3.2 reverse_iterator::operator=
24.5.1.3.3 Conversion
24.5.1.3.4 operator*
24.5.1.3.5 operator->
24.5.1.3.6 operator++
868 24.5.1.3.7 operator–
24.5.1.3.8 operator+
24.5.1.3.9 operator+=
24.5.1.3.10 operator-
24.5.1.3.11 operator-=
24.5.1.3.12 operator[]
24.5.1.3.13 operator==
869 24.5.1.3.14 operator<
24.5.1.3.15 operator!=
24.5.1.3.16 operator>
24.5.1.3.17 operator>=
24.5.1.3.18 operator<=
24.5.1.3.19 operator-
24.5.1.3.20 operator+
870 24.5.1.3.21 Non-member function make_reverse_iterator()
24.5.2 Insert iterators
24.5.2.1 Class template back_insert_iterator
24.5.2.2 back_insert_iterator operations
24.5.2.2.1 back_insert_iterator constructor
871 24.5.2.2.2 back_insert_iterator::operator=
24.5.2.2.3 back_insert_iterator::operator*
24.5.2.2.4 back_insert_iterator::operator++
24.5.2.2.5 back_inserter
24.5.2.3 Class template front_insert_iterator
872 24.5.2.4 front_insert_iterator operations
24.5.2.4.1 front_insert_iterator constructor
24.5.2.4.2 front_insert_iterator::operator=
24.5.2.4.3 front_insert_iterator::operator*
24.5.2.4.4 front_insert_iterator::operator++
24.5.2.4.5 front_inserter
24.5.2.5 Class template insert_iterator
873 24.5.2.6 insert_iterator operations
24.5.2.6.1 insert_iterator constructor
24.5.2.6.2 insert_iterator::operator=
24.5.2.6.3 insert_iterator::operator*
24.5.2.6.4 insert_iterator::operator++
24.5.2.6.5 inserter
874 24.5.3 Move iterators
24.5.3.1 Class template move_iterator
875 24.5.3.2 move_iterator requirements
24.5.3.3 move_iterator operations
24.5.3.3.1 move_iterator constructors
24.5.3.3.2 move_iterator::operator=
876 24.5.3.3.3 move_iterator conversion
24.5.3.3.4 move_iterator::operator*
24.5.3.3.5 move_iterator::operator->
24.5.3.3.6 move_iterator::operator++
24.5.3.3.7 move_iterator::operator–
24.5.3.3.8 move_iterator::operator+
24.5.3.3.9 move_iterator::operator+=
877 24.5.3.3.10 move_iterator::operator-
24.5.3.3.11 move_iterator::operator-=
24.5.3.3.12 move_iterator::operator[]
24.5.3.3.13 move_iterator comparisons
878 24.5.3.3.14 move_iterator non-member functions
24.6 Stream iterators
24.6.1 Class template istream_iterator
879 24.6.1.1 istream_iterator constructors and destructor
24.6.1.2 istream_iterator operations
880 24.6.2 Class template ostream_iterator
881 24.6.2.1 ostream_iterator constructors and destructor
24.6.2.2 ostream_iterator operations
882 24.6.3 Class template istreambuf_iterator
24.6.3.1 Class template istreambuf_iterator::proxy
883 24.6.3.2 istreambuf_iterator constructors
24.6.3.3 istreambuf_iterator::operator*
24.6.3.4 istreambuf_iterator::operator++
24.6.3.5 istreambuf_iterator::equal
884 24.6.3.6 operator==
24.6.3.7 operator!=
24.6.4 Class template ostreambuf_iterator
24.6.4.1 ostreambuf_iterator constructors
885 24.6.4.2 ostreambuf_iterator operations
24.7 range access
887 25 Algorithms library
25.1 General
898 25.2 Non-modifying sequence operations
25.2.1 All of
25.2.2 Any of
25.2.3 None of
25.2.4 For each
899 25.2.5 Find
25.2.6 Find end
25.2.7 Find first
900 25.2.8 Adjacent find
25.2.9 Count
25.2.10 Mismatch
901 25.2.11 Equal
902 25.2.12 Is permutation
25.2.13 Search
903 25.3 Mutating sequence operations
25.3.1 Copy
904 25.3.2 Move
905 25.3.3 swap
25.3.4 Transform
25.3.5 Replace
906 25.3.6 Fill
907 25.3.7 Generate
25.3.8 Remove
908 25.3.9 Unique
25.3.10 Reverse
909 25.3.11 Rotate
910 25.3.12 Shuffle
25.3.13 Partitions
911 25.4 Sorting and related operations
912 25.4.1 Sorting
25.4.1.1 sort
25.4.1.2 stable_sort
913 25.4.1.3 partial_sort
25.4.1.4 partial_sort_copy
25.4.1.5 is_sorted
914 25.4.2 Nth element
25.4.3 Binary search
25.4.3.1 lower_bound
915 25.4.3.2 upper_bound
25.4.3.3 equal_range
916 25.4.3.4 binary_search
25.4.4 Merge
917 25.4.5 Set operations on sorted structures
25.4.5.1 includes
25.4.5.2 set_union
918 25.4.5.3 set_intersection
25.4.5.4 set_difference
919 25.4.5.5 set_symmetric_difference
25.4.6 Heap operations
25.4.6.1 push_heap
920 25.4.6.2 pop_heap
25.4.6.3 make_heap
25.4.6.4 sort_heap
25.4.6.5 is_heap
921 25.4.7 Minimum and maximum
923 25.4.8 Lexicographical comparison
25.4.9 Permutation generators
924 25.5 C library algorithms
926 26 Numerics library
26.1 General
26.2 Numeric type requirements
927 26.3 The floating-point environment
26.3.1 Header synopsis
928 26.4 Complex numbers
26.4.1 Header synopsis
930 26.4.2 Class template complex
931 26.4.3 complex specializations
932 26.4.4 complex member functions
933 26.4.5 complex member operators
934 26.4.6 complex non-member operations
935 26.4.7 complex value operations
936 26.4.8 complex transcendentals
938 26.4.9 Additional overloads
939 26.4.10 Suffixes for complex number literals
26.4.11 Header
26.5 Random number generation
940 26.5.1 Requirements
26.5.1.1 General requirements
26.5.1.2 Seed sequence requirements
941 26.5.1.3 Uniform random number generator requirements
942 26.5.1.4 Random number engine requirements
944 26.5.1.5 Random number engine adaptor requirements
945 26.5.1.6 Random number distribution requirements
948 26.5.2 Header synopsis
950 26.5.3 Random number engine class templates
951 26.5.3.1 Class template linear_congruential_engine
952 26.5.3.2 Class template mersenne_twister_engine
953 26.5.3.3 Class template subtract_with_carry_engine
954 26.5.4 Random number engine adaptor class templates
26.5.4.1 In general
955 26.5.4.2 Class template discard_block_engine
956 26.5.4.3 Class template independent_bits_engine
957 26.5.4.4 Class template shuffle_order_engine
958 26.5.5 Engines and engine adaptors with predefined parameters
959 26.5.6 Class random_device
960 26.5.7 Utilities
26.5.7.1 Class seed_seq
962 26.5.7.2 Function template generate_canonical
963 26.5.8 Random number distribution class templates
26.5.8.1 In general
26.5.8.2 Uniform distributions
26.5.8.2.1 Class template uniform_int_distribution
964 26.5.8.2.2 Class template uniform_real_distribution
965 26.5.8.3 Bernoulli distributions
26.5.8.3.1 Class bernoulli_distribution
966 26.5.8.3.2 Class template binomial_distribution
967 26.5.8.3.3 Class template geometric_distribution
26.5.8.3.4 Class template negative_binomial_distribution
968 26.5.8.4 Poisson distributions
26.5.8.4.1 Class template poisson_distribution
969 26.5.8.4.2 Class template exponential_distribution
970 26.5.8.4.3 Class template gamma_distribution
971 26.5.8.4.4 Class template weibull_distribution
972 26.5.8.4.5 Class template extreme_value_distribution
973 26.5.8.5 Normal distributions
26.5.8.5.1 Class template normal_distribution
974 26.5.8.5.2 Class template lognormal_distribution
975 26.5.8.5.3 Class template chi_squared_distribution
976 26.5.8.5.4 Class template cauchy_distribution
977 26.5.8.5.5 Class template fisher_f_distribution
978 26.5.8.5.6 Class template student_t_distribution
26.5.8.6 Sampling distributions
26.5.8.6.1 Class template discrete_distribution
980 26.5.8.6.2 Class template piecewise_constant_distribution
982 26.5.8.6.3 Class template piecewise_linear_distribution
984 26.6 Numeric arrays
26.6.1 Header synopsis
986 26.6.2 Class template valarray
26.6.2.1 Class template valarray overview
988 26.6.2.2 valarray constructors
989 26.6.2.3 valarray assignment
990 26.6.2.4 valarray element access
26.6.2.5 valarray subset operations
992 26.6.2.6 valarray unary operators
993 26.6.2.7 valarray computed assignment
26.6.2.8 valarray member functions
995 26.6.3 valarray non-member operations
26.6.3.1 valarray binary operators
996 26.6.3.2 valarray logical operators
997 26.6.3.3 valarray transcendentals
26.6.3.4 valarray specialized algorithms
26.6.4 Class slice
26.6.4.1 Class slice overview
998 26.6.4.2 slice constructors
26.6.4.3 slice access functions
26.6.5 Class template slice_array
26.6.5.1 Class template slice_array overview
999 26.6.5.2 slice_array assignment
26.6.5.3 slice_array computed assignment
26.6.5.4 slice_array fill function
26.6.6 The gslice class
26.6.6.1 The gslice class overview
1001 26.6.6.2 gslice constructors
26.6.6.3 gslice access functions
26.6.7 Class template gslice_array
26.6.7.1 Class template gslice_array overview
1002 26.6.7.2 gslice_array assignment
26.6.7.3 gslice_array
26.6.7.4 gslice_array fill function
26.6.8 Class template mask_array
26.6.8.1 Class template mask_array overview
1003 26.6.8.2 mask_array assignment
26.6.8.3 mask_array computed assignment
26.6.8.4 mask_array fill function
26.6.9 Class template indirect_array
26.6.9.1 Class template indirect_array overview
1004 26.6.9.2 indirect_array assignment
26.6.9.3 indirect_array computed assignment
1005 26.6.9.4 indirect_array fill function
26.6.10 valarray range access
26.7 Generalized numeric operations
26.7.1 Header synopsis
1006 26.7.2 Accumulate
26.7.3 Inner product
1007 26.7.4 Partial sum
26.7.5 Adjacent difference
1008 26.7.6 Iota
26.8 C library
1013 27 Input/output library
27.1 General
27.2 Iostreams requirements
27.2.1 Imbue limitations
1014 27.2.2 Positioning type limitations
27.2.3 Thread safety
27.3 Forward declarations
1016 27.4 Standard iostream objects
27.4.1 Overview
1017 27.4.2 Narrow stream objects
27.4.3 Wide stream objects
1018 27.5 Iostreams base classes
27.5.1 Overview
1019 27.5.2 Types
27.5.3 Class ios_base
1022 27.5.3.1 Types
27.5.3.1.1 Class ios_base::failure
27.5.3.1.2 Type ios_base::fmtflags
27.5.3.1.3 Type ios_base::iostate
27.5.3.1.4 Type ios_base::openmode
27.5.3.1.5 Type ios_base::seekdir
1024 27.5.3.1.6 Class ios_base::Init
27.5.3.2 ios_base state functions
1025 27.5.3.3 ios_base functions
1026 27.5.3.4 ios_base static members
27.5.3.5 ios_base storage functions
1027 27.5.3.6 ios_base callbacks
27.5.3.7 ios_base constructors/destructor
27.5.4 Class template fpos
1028 27.5.4.1 fpos members
27.5.4.2 fpos requirements
1029 27.5.5 Class template basic_ios
27.5.5.1 Overview
1030 27.5.5.2 basic_ios constructors
1031 27.5.5.3 Member functions
1033 27.5.5.4 basic_ios flags functions
1034 27.5.6 ios_base manipulators
27.5.6.1 fmtflags manipulators
1036 27.5.6.2 adjustfield manipulators
27.5.6.3 basefield manipulators
27.5.6.4 floatfield manipulators
1037 27.5.6.5 Error reporting
27.6 Stream buffers
27.6.1 Overview
27.6.2 Stream buffer requirements
1038 27.6.3 Class template basic_streambuf
1040 27.6.3.1 basic_streambuf constructors
1041 27.6.3.2 basic_streambuf public member functions
27.6.3.2.1 Locales
27.6.3.2.2 Buffer management and positioning
27.6.3.2.3 Get area
1042 27.6.3.2.4 Putback
27.6.3.2.5 Put area
27.6.3.3 basic_streambuf protected member functions
27.6.3.3.1 Assignment
1043 27.6.3.3.2 Get area access
27.6.3.3.3 Put area access
1044 27.6.3.4 basic_streambuf virtual functions
27.6.3.4.1 Locales
27.6.3.4.2 Buffer management and positioning
27.6.3.4.3 Get area
1046 27.6.3.4.4 Putback
27.6.3.4.5 Put area
1047 27.7 Formatting and manipulators
27.7.1 Overview
1048 27.7.2 Input streams
27.7.2.1 Class template basic_istream
1051 27.7.2.1.1 basic_istream constructors
27.7.2.1.2 Class basic_istream assign and swap
27.7.2.1.3 Class basic_istream::sentry
1052 27.7.2.2 Formatted input functions
27.7.2.2.1 Common requirements
27.7.2.2.2 Arithmetic extractors
1054 27.7.2.2.3 basic_istream::operator>>
1055 27.7.2.3 Unformatted input functions
1060 27.7.2.4 Standard basic_istream manipulators
1061 27.7.2.5 Class template basic_iostream
27.7.2.5.1 basic_iostream constructors
27.7.2.5.2 basic_iostream destructor
1062 27.7.2.5.3 basic_iostream assign and swap
27.7.2.6 Rvalue stream extraction
27.7.3 Output streams
27.7.3.1 Class template basic_ostream
1064 27.7.3.2 basic_ostream constructors
27.7.3.3 Class basic_ostream assign and swap
1065 27.7.3.4 Class basic_ostream::sentry
27.7.3.5 basic_ostream seek members
1066 27.7.3.6 Formatted output functions
27.7.3.6.1 Common requirements
27.7.3.6.2 Arithmetic inserters
1067 27.7.3.6.3 basic_ostream::operator<<
1068 27.7.3.6.4 Character inserter function templates
1069 27.7.3.7 Unformatted output functions
1070 27.7.3.8 Standard basic_ostream manipulators
27.7.3.9 Rvalue stream insertion
1071 27.7.4 Standard manipulators
1073 27.7.5 Extended manipulators
1075 27.7.6 Quoted manipulators
1076 27.8 String-based streams
27.8.1 Overview
27.8.2 Class template basic_stringbuf
1077 27.8.2.1 basic_stringbuf constructors
1078 27.8.2.2 Assign and swap
1079 27.8.2.3 Member functions
27.8.2.4 Overridden virtual functions
1081 27.8.3 Class template basic_istringstream
1082 27.8.3.1 basic_istringstream constructors
27.8.3.2 Assign and swap
1083 27.8.3.3 Member functions
27.8.4 Class template basic_ostringstream
1084 27.8.4.1 basic_ostringstream constructors
27.8.4.2 Assign and swap
1085 27.8.4.3 Member functions
27.8.5 Class template basic_stringstream
1086 27.8.6 basic_stringstream constructors
27.8.6.1 Assign and swap
1087 27.8.7 Member functions
27.9 File-based streams
27.9.1 File streams
27.9.1.1 Class template basic_filebuf
1089 27.9.1.2 basic_filebuf constructors
1090 27.9.1.3 Assign and swap
27.9.1.4 Member functions
1091 27.9.1.5 Overridden virtual functions
1094 27.9.1.6 Class template basic_ifstream
1095 27.9.1.7 basic_ifstream constructors
1096 27.9.1.8 Assign and swap
27.9.1.9 Member functions
1097 27.9.1.10 Class template basic_ofstream
27.9.1.11 basic_ofstream constructors
1098 27.9.1.12 Assign and swap
27.9.1.13 Member functions
1099 27.9.1.14 Class template basic_fstream
1100 27.9.1.15 basic_fstream constructors
27.9.1.16 Assign and swap
1101 27.9.1.17 Member functions
27.9.2 C library files
1103 28 Regular expressions library
28.1 General
28.2 Definitions
1104 28.3 Requirements
1106 28.4 Header synopsis
1113 28.5 Namespace std::regex_constants
28.5.1 Bitmask type syntax_option_type
28.5.2 Bitmask type regex_constants::match_flag_type
1115 28.5.3 Implementation-defined error_type
1116 28.6 Class regex_error
28.7 Class template regex_traits
1119 28.8 Class template basic_regex
1122 28.8.1 basic_regex constants
28.8.2 basic_regex constructors
1123 28.8.3 basic_regex assign
1125 28.8.4 basic_regex constant operations
28.8.5 basic_regex locale
28.8.6 basic_regex swap
28.8.7 basic_regex non-member functions
28.8.7.1 basic_regex non-member swap
1126 28.9 Class template sub_match
28.9.1 sub_match members
1127 28.9.2 sub_match non-member operators
1132 28.10 Class template match_results
1134 28.10.1 match_results constructors
28.10.2 match_results state
1135 28.10.3 match_results size
28.10.4 match_results element access
1136 28.10.5 match_results formatting
1137 28.10.6 match_results allocator
28.10.7 match_results swap
28.10.8 match_results non-member functions
1138 28.11 Regular expression algorithms
28.11.1 exceptions
28.11.2 regex_match
1140 28.11.3 regex_search
1141 28.11.4 regex_replace
1143 28.12 Regular expression iterators
28.12.1 Class template regex_iterator
1144 28.12.1.1 regex_iterator constructors
28.12.1.2 regex_iterator comparisons
1145 28.12.1.3 regex_iterator indirection
28.12.1.4 regex_iterator increment
28.12.2 Class template regex_token_iterator
1147 28.12.2.1 regex_token_iterator constructors
1148 28.12.2.2 regex_token_iterator comparisons
28.12.2.3 regex_token_iterator indirection
1149 28.12.2.4 regex_token_iterator increment
28.13 Modified ECMAScript regular expression grammar
1152 29 Atomic operations library
29.1 General
29.2 Header synopsis
1155 29.3 Order and consistency
1157 29.4 Lock-free property
29.5 Atomic types
1161 29.6 Operations on atomic types
29.6.1 General operations on atomic types
29.6.2 Templated operations on atomic types
29.6.3 Arithmetic operations on atomic types
29.6.4 Operations on atomic pointer types
29.6.5 Requirements for operations on atomic types
1167 29.7 Flag type and operations
1168 29.8 Fences
1169 30 Thread support library
30.1 General
30.2 Requirements
30.2.1 Template parameter names
30.2.2 Exceptions
30.2.3 Native handles
30.2.4 Timing specifications
1170 30.2.5 Requirements for Lockable types
30.2.5.1 In general
1171 30.2.5.2 BasicLockable requirements
30.2.5.3 Lockable requirements
30.2.5.4 TimedLockable requirements
1172 30.2.6 decay_copy
30.3 Threads
30.3.1 Class thread
1173 30.3.1.1 Class thread::id
1174 30.3.1.2 thread constructors
1175 30.3.1.3 thread destructor
30.3.1.4 thread assignment
30.3.1.5 thread members
1176 30.3.1.6 thread static members
30.3.1.7 thread specialized algorithms
1177 30.3.2 Namespace this_thread
30.4 Mutual exclusion
1178 30.4.1 Mutex requirements
30.4.1.1 In general
30.4.1.2 Mutex types
1180 30.4.1.2.1 Class mutex
30.4.1.2.2 Class recursive_mutex
1181 30.4.1.3 Timed mutex types
1182 30.4.1.3.1 Class timed_mutex
1183 30.4.1.3.2 Class recursive_timed_mutex
30.4.1.4 Shared timed mutex types
1185 30.4.1.4.1 Class shared_timed_mutex
1186 30.4.2 Locks
30.4.2.1 Class template lock_guard
1187 30.4.2.2 Class template unique_lock
1188 30.4.2.2.1 unique_lock constructors, destructor, and assignment
1190 30.4.2.2.2 unique_lock locking
1191 30.4.2.2.3 unique_lock modifiers
30.4.2.2.4 unique_lock observers
1192 30.4.2.3 Class template shared_lock
1193 30.4.2.3.1 shared_lock constructors, destructor, and assignment
1194 30.4.2.3.2 shared_lock locking
1195 30.4.2.3.3 shared_lock modifiers
1196 30.4.2.3.4 shared_lock observers
30.4.3 Generic locking algorithms
30.4.4 Call once
30.4.4.1 Struct once_flag
1197 30.4.4.2 Function call_once
30.5 Condition variables
1199 30.5.1 Class condition_variable
1202 30.5.2 Class condition_variable_any
1205 30.6 Futures
30.6.1 Overview
1207 30.6.2 Error handling
30.6.3 Class future_error
30.6.4 Shared state
1209 30.6.5 Class template promise
1212 30.6.6 Class template future
1214 30.6.7 Class template shared_future
1217 30.6.8 Function template async
1219 30.6.9 Class template packaged_task
1220 30.6.9.1 packaged_task member functions
1222 30.6.9.2 packaged_task globals
1223 A Grammar summary
A.1 Keywords
A.2 Lexical conventions
1227 A.3 Basic concepts
1228 A.4 Expressions
1231 A.5 Statements
1232 A.6 Declarations
1236 A.7 Declarators
1238 A.8 Classes
A.9 Derived classes
1239 A.10 Special member functions
A.11 Overloading
1240 A.12 Templates
A.13 Exception handling
1241 A.14 Preprocessing directives
1243 B Implementation quantities
1245 C Compatibility
C.1 C++ and ISO C
C.1.1 Clause 2: lexical conventions
1246 C.1.2 Clause 3: basic concepts
1247 C.1.3 Clause 4: standard conversions
C.1.4 Clause 5: expressions
1248 C.1.5 Clause 6: statements
C.1.6 Clause 7: declarations
1250 C.1.7 Clause 8: declarators
1251 C.1.8 Clause 9: classes
1253 C.1.9 Clause 12: special member functions
C.1.10 Clause 16: preprocessing directives
C.2 C++ and ISO C++ 2003
C.2.1 Clause 2: lexical conventions
1254 C.2.2 Clause 4: standard conversions
C.2.3 Clause 5: expressions
C.2.4 Clause 7: declarations
1255 C.2.5 Clause 8: declarators
C.2.6 Clause 12: special member functions
C.2.7 Clause 14: templates
1256 C.2.8 Clause 17: library introduction
C.2.9 Clause 18: language support library
1257 C.2.10 Clause 19: diagnostics library
C.2.11 Clause 20: general utilities library
C.2.12 Clause 21: strings library
1258 C.2.13 Clause 23: containers library
1259 C.2.14 Clause 25: algorithms library
C.2.15 Clause 26: numerics library
C.2.16 Clause 27: Input/output library
1260 C.3 C++ and ISO C++ 2011
C.3.1 Clause 2: lexical conventions
C.3.2 Clause 3: basic concepts
C.3.3 Clause 7: declarations
1261 C.3.4 Clause 27: input/output library
C.4 C standard library
1262 C.4.1 Modifications to headers
C.4.2 Modifications to definitions
C.4.2.1 Types char16_t and char32_t
C.4.2.2 Type wchar_t
C.4.2.3 Header
C.4.2.4 Macro NULL
C.4.3 Modifications to declarations
C.4.4 Modifications to behavior
1264 C.4.4.1 Macro offsetof(type, member-designator)
C.4.4.2 Memory allocation functions
1265 D Compatibility features
D.1 Increment operator with bool operand
D.2 register keyword
D.3 Implicit declaration of copy functions
D.4 Dynamic exception specifications
D.5 C standard library headers
1266 D.6 Old iostreams members
1267 D.7 char* streams
D.7.1 Class strstreambuf
1269 D.7.1.1 strstreambuf constructors
1270 D.7.1.2 Member functions
1271 D.7.1.3 strstreambuf overridden virtual functions
1273 D.7.2 Class istrstream
D.7.2.1 istrstream constructors
1274 D.7.2.2 Member functions
D.7.3 Class ostrstream
D.7.3.1 ostrstream constructors
1275 D.7.3.2 Member functions
D.7.4 Class strstream
1276 D.7.4.1 strstream constructors
D.7.4.2 strstream destructor
D.7.4.3 strstream operations
D.8 Function objects
D.8.1 Base
1277 D.8.2 Function adaptors
D.8.2.1 Adaptors for pointers to functions
1278 D.8.2.2 Adaptors for pointers to members
1280 D.9 Binders
D.9.1 Class template binder1st
D.9.2 bind1st
D.9.3 Class template binder2nd
1281 D.9.4 bind2nd
D.10 auto_ptr
D.10.1 Class template auto_ptr
1282 D.10.1.1 auto_ptr constructors
1283 D.10.1.2 auto_ptr members
D.10.1.3 auto_ptr conversions
1284 D.11 Violating exception-specifications
D.11.1 Type unexpected_handler
D.11.2 set_unexpected
D.11.3 get_unexpected
D.11.4 unexpected
D.12 Random shuffle
1286 E Universal character names for identifier characters
E.1 Ranges of characters allowed
E.2 Ranges of characters disallowed initially
1287 F Cross references
1305 Index
1334 Index of grammar productions
1337 Index of library names
1374 Index of implementation-defined behavior
BS ISO/IEC 14882:2014
$215.11