Document Number: Date: Revises: Reply to: N4296 2014-11-19 N4140 Richard Smith Google Inc cxxeditor@gmail.com Working Draft, Standard for Programming Language C++ Note: this is an early draft It’s known to be incomplet and incorrekt, and it has lots of ba d formatting c ISO/IEC N4296 Contents Contents ii List of Tables x List of Figures xiv General 1.1 Scope 1.2 Normative references 1.3 Terms and definitions 1.4 Implementation compliance 1.5 Structure of this International Standard 1.6 Syntax notation 1.7 The C++ memory model 1.8 The C++ object model 1.9 Program execution 1.10 Multi-threaded executions and data races 1.11 Acknowledgments 1 5 6 11 15 Lexical conventions 2.1 Separate translation 2.2 Phases of translation 2.3 Character sets 2.4 Preprocessing tokens 2.5 Alternative tokens 2.6 Tokens 2.7 Comments 2.8 Header names 2.9 Preprocessing numbers 2.10 Identifiers 2.11 Keywords 2.12 Operators and punctuators 2.13 Literals 17 17 17 18 19 20 21 21 21 22 22 23 23 24 Basic 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 34 34 36 39 45 59 62 65 69 73 78 80 Contents concepts Declarations and definitions One definition rule Scope Name lookup Program and linkage Start and termination Storage duration Object lifetime Types Lvalues and rvalues Alignment ii c ISO/IEC N4296 Standard conversions 4.1 Lvalue-to-rvalue conversion 4.2 Array-to-pointer conversion 4.3 Function-to-pointer conversion 4.4 Qualification conversions 4.5 Integral promotions 4.6 Floating point promotion 4.7 Integral conversions 4.8 Floating point conversions 4.9 Floating-integral conversions 4.10 Pointer conversions 4.11 Pointer to member conversions 4.12 Boolean conversions 4.13 Integer conversion rank 82 83 83 83 84 84 85 85 85 86 86 86 87 87 Expressions 5.1 Primary expressions 5.2 Postfix expressions 5.3 Unary expressions 5.4 Explicit type conversion (cast notation) 5.5 Pointer-to-member operators 5.6 Multiplicative operators 5.7 Additive operators 5.8 Shift operators 5.9 Relational operators 5.10 Equality operators 5.11 Bitwise AND operator 5.12 Bitwise exclusive OR operator 5.13 Bitwise inclusive OR operator 5.14 Logical AND operator 5.15 Logical OR operator 5.16 Conditional operator 5.17 Throwing an exception 5.18 Assignment and compound assignment operators 5.19 Comma operator 5.20 Constant expressions 88 91 102 113 122 123 124 124 126 126 127 128 128 128 128 129 129 130 131 132 132 Statements 6.1 Labeled statement 6.2 Expression statement 6.3 Compound statement or block 6.4 Selection statements 6.5 Iteration statements 6.6 Jump statements 6.7 Declaration statement 6.8 Ambiguity resolution 137 137 137 137 138 139 142 143 145 Declarations 7.1 Specifiers 7.2 Enumeration declarations 7.3 Namespaces 147 149 166 169 Contents iii c ISO/IEC 7.4 7.5 7.6 N4296 The asm declaration Linkage specifications Attributes Declarators 8.1 Type names 8.2 Ambiguity resolution 8.3 Meaning of declarators 8.4 Function definitions 8.5 Initializers 182 182 185 191 192 193 194 207 210 Classes 9.1 Class names 9.2 Class members 9.3 Member functions 9.4 Static members 9.5 Unions 9.6 Bit-fields 9.7 Nested class declarations 9.8 Local class declarations 9.9 Nested type names 226 229 230 233 236 238 240 240 242 242 10 Derived classes 10.1 Multiple base classes 10.2 Member name lookup 10.3 Virtual functions 10.4 Abstract classes 243 244 246 249 254 base class members 256 257 259 261 264 265 266 266 267 267 270 272 275 278 279 286 288 296 13 Overloading 13.1 Overloadable declarations 13.2 Declaration matching 300 300 302 11 Member access control 11.1 Access specifiers 11.2 Accessibility of base classes and 11.3 Friends 11.4 Protected member access 11.5 Access to virtual functions 11.6 Multiple access 11.7 Nested classes 12 Special member functions 12.1 Constructors 12.2 Temporary objects 12.3 Conversions 12.4 Destructors 12.5 Free store 12.6 Initialization 12.7 Construction and destruction 12.8 Copying and moving class objects 12.9 Inheriting constructors Contents iv c ISO/IEC 13.3 13.4 13.5 13.6 N4296 303 323 325 329 14 Templates 14.1 Template parameters 14.2 Names of template specializations 14.3 Template arguments 14.4 Type equivalence 14.5 Template declarations 14.6 Name resolution 14.7 Template instantiation and specialization 14.8 Function template specializations 333 334 337 339 344 345 364 379 392 15 Exception handling 15.1 Throwing an exception 15.2 Constructors and destructors 15.3 Handling an exception 15.4 Exception specifications 15.5 Special functions 414 415 417 417 419 424 16 Preprocessing directives 16.1 Conditional inclusion 16.2 Source file inclusion 16.3 Macro replacement 16.4 Line control 16.5 Error directive 16.6 Pragma directive 16.7 Null directive 16.8 Predefined macro names 16.9 Pragma operator 426 427 429 430 435 435 435 436 436 437 17 Library introduction 17.1 General 17.2 The C standard library 17.3 Definitions 17.4 Additional definitions 17.5 Method of description (Informative) 17.6 Library-wide requirements 438 438 439 439 442 442 448 18 Language support library 18.1 General 18.2 Types 18.3 Implementation properties 18.4 Integer types 18.5 Start and termination 18.6 Dynamic memory management 18.7 Type identification 18.8 Exception handling 18.9 Initializer lists 468 468 468 469 478 479 481 487 489 494 Contents Overload resolution Address of overloaded function Overloaded operators Built-in operators v c ISO/IEC N4296 18.10 Other runtime support 19 Diagnostics library 19.1 General 19.2 Exception classes 19.3 Assertions 19.4 Error numbers 19.5 System error support 495 498 498 498 502 502 502 20 General utilities library 20.1 General 20.2 Utility components 20.3 Pairs 20.4 Tuples 20.5 Compile-time integer sequences 20.6 Class template bitset 20.7 Memory 20.8 Smart pointers 20.9 Function objects 20.10 Metaprogramming and type traits 20.11 Compile-time rational arithmetic 20.12 Time utilities 20.13 Class template scoped_allocator_adaptor 20.14 Class type_index 514 514 514 519 523 533 534 541 556 582 602 622 625 640 646 21 Strings library 21.1 General 21.2 Character traits 21.3 String classes 21.4 Class template basic_string 21.5 Numeric conversions 21.6 Hash support 21.7 Suffix for basic_string literals 21.8 Null-terminated sequence utilities 648 648 648 654 658 684 686 686 686 22 Localization library 22.1 General 22.2 Header synopsis 22.3 Locales 22.4 Standard locale categories 22.5 Standard code conversion facets 22.6 C library locales 690 690 690 691 703 742 743 23 Containers library 23.1 General 23.2 Container requirements 23.3 Sequence containers 23.4 Associative containers 23.5 Unordered associative containers 23.6 Container adaptors 745 745 745 774 805 823 842 Contents vi c ISO/IEC 24 Iterators library 24.1 General 24.2 Iterator requirements 24.3 Header synopsis 24.4 Iterator primitives 24.5 Iterator adaptors 24.6 Stream iterators 24.7 Range access 24.8 Container access N4296 852 852 852 857 860 864 877 883 884 25 Algorithms library 25.1 General 25.2 Non-modifying sequence operations 25.3 Mutating sequence operations 25.4 Sorting and related operations 25.5 C library algorithms 886 886 897 902 910 922 26 Numerics library 26.1 General 26.2 Numeric type requirements 26.3 The floating-point environment 26.4 Complex numbers 26.5 Random number generation 26.6 Numeric arrays 26.7 Generalized numeric operations 26.8 C library 924 924 924 925 926 936 980 1001 1004 27 Input/output library 27.1 General 27.2 Iostreams requirements 27.3 Forward declarations 27.4 Standard iostream objects 27.5 Iostreams base classes 27.6 Stream buffers 27.7 Formatting and manipulators 27.8 String-based streams 27.9 File-based streams 1009 1009 1010 1010 1012 1014 1032 1041 1069 1079 28 Regular expressions library 28.1 General 28.2 Definitions 28.3 Requirements 28.4 Header synopsis 28.5 Namespace std::regex_constants 28.6 Class regex_error 28.7 Class template regex_traits 28.8 Class template basic_regex 28.9 Class template sub_match 28.10 Class template match_results 28.11 Regular expression algorithms 28.12 Regular expression iterators 1095 1095 1095 1096 1098 1105 1108 1108 1112 1117 1123 1128 1133 Contents vii c ISO/IEC N4296 28.13 Modified ECMAScript regular expression grammar 1139 29 Atomic operations library 29.1 General 29.2 Header synopsis 29.3 Order and consistency 29.4 Lock-free property 29.5 Atomic types 29.6 Operations on atomic types 29.7 Flag type and operations 29.8 Fences 1142 1142 1142 1145 1147 1147 1151 1156 1157 30 Thread support library 30.1 General 30.2 Requirements 30.3 Threads 30.4 Mutual exclusion 30.5 Condition variables 30.6 Futures 1159 1159 1159 1162 1167 1186 1194 A Grammar summary A.1 Keywords A.2 Lexical conventions A.3 Basic concepts A.4 Expressions A.5 Statements A.6 Declarations A.7 Declarators A.8 Classes A.9 Derived classes A.10 Special member functions A.11 Overloading A.12 Templates A.13 Exception handling A.14 Preprocessing directives 1210 1210 1210 1215 1215 1218 1219 1223 1225 1225 1226 1226 1226 1227 1228 B Implementation quantities C Compatibility C.1 C++ and ISO C C.2 C++ and ISO C++ 2003 C.3 C++ and ISO C++ 2011 C.4 C++ and ISO C++ 2014 C.5 C standard library 1230 1232 1232 1241 1248 1249 1249 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 1253 1253 1253 1253 1253 1253 Contents viii c ISO/IEC D.6 D.7 D.8 D.9 Old iostreams members char* streams Violating exception-specifications uncaught_exception N4296 1254 1255 1264 1264 E Universal character names for identifier characters 1265 E.1 Ranges of characters allowed 1265 E.2 Ranges of characters disallowed initially 1265 F Cross references 1266 Index 1284 Index of grammar productions 1313 Index of library names 1316 Index of implementation-defined behavior 1352 Contents ix c ISO/IEC N4296 List of Tables Alternative tokens Identifiers with special meaning Keywords Alternative representations Types of integer literals Escape sequences String literal concatenations 20 22 23 23 25 27 30 Relations on const and volatile 78 simple-type-specifiers and the types they specify 160 10 11 Relationship between operator and function call notation Conversions 308 316 12 Value of folding empty sequences 353 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Library categories C++ library headers C++ headers for C library facilities C++ headers for freestanding implementations EqualityComparable requirements LessThanComparable requirements DefaultConstructible requirements MoveConstructible requirements CopyConstructible requirements (in addition to MoveConstructible) MoveAssignable requirements CopyAssignable requirements (in addition to MoveAssignable) Destructible requirements NullablePointer requirements Hash requirements Descriptive variable definitions Allocator requirements 438 448 449 450 451 451 451 451 451 452 452 452 454 454 455 455 29 30 31 32 33 34 35 36 37 38 39 40 Language support library summary Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis Header synopsis 468 468 478 478 479 496 496 496 496 496 496 497 List of Tables x c ISO/IEC strstream, 1264 strstreambuf, 1258 peek basic_istream, 1052 piecewise_constant_distribution, 976 constructor, 977, 978 densities, 978 intervals, 978 piecewise_construct, 523 piecewise_construct_t, 523 piecewise_linear_distribution, 978 constructor, 979, 980 densities, 980 intervals, 980 placeholders, 596 plus, 588 plus, 589 pointer allocator_traits, 549 pointer_to pointer_traits, 546 pointer_traits, 545 difference_type, 546 element_type, 545 pointer_to, 546 rebind, 546 poisson_distribution, 965 constructor, 966 mean, 966 polar complex, 934 pop priority_queue, 848 forward_list, 787 pop_back basic_string, 672 pop_heap, 918 pos_type char_traits, 650 position match_results, 1126 positive_sign moneypunct, 736 pow, 936, 993, 1005 complex, 935 pptr basic_streambuf, 1038 precision ios_base, 703, 1021 prefix match_results, 1126 Cross references N4296 prev, 864 prev_permutation, 922 priority_queue, 845 emplace, 848 priority_queue, 846, 847 swap, 848 probabilities discrete_distribution, 976 proj complex, 933 promise constructor, 1198 destructor, 1198 get_future, 1198 operator=, 1198 set_exception, 1199 set_exception_at_thread_exit, 1199 set_value, 1199 set_value_at_thread_exit, 1199 swap, 1198, 1200 propagate_on_container_copy_assignment allocator_traits, 550 scoped_allocator_adaptor, 643 propagate_on_container_move_assignment allocator_traits, 550 scoped_allocator_adaptor, 643 propagate_on_container_swap allocator_traits, 550 scoped_allocator_adaptor, 643 proxy istreambuf_iterator, 881 ptrdiff_t, 468 pubimbue basic_streambuf, 1035 pubseekoff basic_streambuf, 1036 pubseekpos basic_streambuf, 1036 pubsetbuf basic_streambuf, 1036 pubsync basic_streambuf, 1036 push priority_queue, 848 push_back basic_string, 669 push_front forward_list, 787 push_heap, 918 put basic_ostream, 1063 1340 c ISO/IEC money_put, 734 num_put, 719 time_put, 731 put_money, 1066 put_time, 1067 putback basic_istream, 1053 putenv, 495 pword ios_base, 1022 , 842 queue, 843 swap, 845 quick_exit, 479, 480 quiet_NaN numeric_limits, 474 quoted, 1068 radix numeric_limits, 472 raise, 496 , 945–947 random_access_iterator_tag, 862 random_device, 957 constructor, 957 entropy, 957 operator(), 957 range_error, 498, 501 range_error, 501 ranlux24, 956 ranlux24_base, 956 ranlux48, 956 ranlux48_base, 956 ratio, 622 ratio_equal, 624 ratio_greater, 625 ratio_greater_equal, 625 ratio_less, 625 ratio_less_equal, 625 ratio_not_equal, 624 raw_storage_iterator constructor, 553 operator*, 553 operator++, 553 operator=, 553 rbegin basic_string, 666 rbegin(C&), 884 rbegin(initializer_list), 884 rbegin(T (&array)[N]), 884 Cross references N4296 rdbuf basic_filebuf, 1092 basic_ifstream, 1088 basic_ios, 1026 basic_istringstream, 1076 basic_ofstream, 1090 basic_ostringstream, 1077 basic_stringstream, 1079 istrstream, 1261 ostrstream, 1262 strstream, 1264 wbuffer_convert, 702, 703 rdstate basic_ios, 1028 read basic_istream, 1052 readsome basic_istream, 1053 real, 935 complex, 930, 933 realloc, 555, 1252 rebind pointer_traits, 546 rebind_alloc allocator_traits, 550 ref reference_wrapper, 587 reference_wrapper, 586 cref, 588 get, 587 operator T&, 587 operator(), 587 operator=, 587 ref, 587 reference_wrapper, 587 , 1098 regex, 1098 regex_constants, 1105 error_type, 1107, 1108 match_flag_type, 1105 syntax_option_type, 1105 regex_error, 1108, 1112, 1141 constructor, 1108 regex_iterator, 1133 increment, 1135 operator!=, 1135 operator*, 1135 operator++, 1135, 1136 operator->, 1135 operator==, 1135 regex_iterator, 1134 1341 c ISO/IEC regex_match, 1128–1130 regex_replace, 1132, 1133 regex_search, 1130, 1131 regex_token_iterator, 1136 end-of-sequence, 1136 operator!=, 1139 operator*, 1139 operator++, 1139 operator->, 1139 operator==, 1136, 1139 regex_token_iterator, 1138 regex_traits, 1108 char_class_type, 1109 isctype, 1110 length, 1109 lookup_classname, 1110 lookup_collatename, 1109 transform, 1109 transform_primary, 1109 translate, 1109 translate_nocase, 1109 value, 1111 register_callback ios_base, 1023 regular expression traits isctype, 1140 lookup_classname, 1140 lookup_collatename, 1140 transform_primary, 1141 rel_ops, 514 release shared_lock, 1184 unique_lock, 1181 unique_ptr, 562 remainder, 1005 remove, 906 list, 796 forward_list, 790 remove_copy, 906 remove_copy_if, 906 remove_if, 906 forward_list, 790 remquo, 1005 rend basic_string, 666 rend(const C&), 884 rend(initializer_list), 884 rend(T (&array)[N]), 884 rep system_clock, 639 replace, 904 Cross references N4296 basic_string, 673, 674 replace_copy, 905 replace_copy_if, 905 replace_if, 904 reserve basic_string, 667 vector, 801 reset bitset, 538 packaged_task, 1209 shared_ptr, 572 unique_ptr, 562, 565 weak_ptr, 577 resetiosflags, 1064 resize deque, 782 list, 794 basic_string, 666, 667 forward_list, 788 valarray, 990 vector, 801 rethrow_exception, 492 rethrow_if_nested nested_exception, 494 rethrow_nested nested_exception, 493 return_temporary_buffer, 553 reverse, 907 list, 797 forward_list, 790 reverse_copy, 907 reverse_iterator, 864 reverse_iterator, 866 base, 866 constructor, 866 make_reverse_iterator non-member function, 869 operator++, 866 operator , 867 rfind basic_string, 676 right, 1030 rint, 1005 rotate, 908 rotate_copy, 908 round, 1005 round_error numeric_limits, 472 round_indeterminate, 475 round_style numeric_limits, 475 1342 c ISO/IEC round_to_nearest, 475 round_toward_infinity, 475 round_toward_neg_infinity, 475 round_toward_zero, 475 runtime_error, 498, 500 runtime_error, 500, 501 s lognormal_distribution, 971 sbumpc basic_streambuf, 1036 scalbln, 1005 scalbn, 1005 scan_is ctype, 705 ctype, 708 scan_not ctype, 705 ctype, 709 SCHAR_MAX, 477 SCHAR_MIN, 477 scientific, 1031 , 640 scoped_allocator_adaptor allocate, 644 construct, 644, 645 constructor, 643 deallocate, 644 destructor, 646 inner_allocator, 644 inner_allocator_type, 642 is_always_equal, 643 max_size, 644 operator!=, 646 operator==, 646 outer_allocator, 644 propagate_on_container_copy_assignment, 643 propagate_on_container_move_assignment, 643 propagate_on_container_swap, 643 select_on_container_copy_construction, 646 search, 901 search_n, 902 seed_seq constructor, 958 generate, 958 param, 959 size, 959 seekdir Cross references N4296 ios_base, 1020 seekg basic_istream, 1054 seekoff basic_filebuf, 1085 basic_streambuf, 1038 basic_stringbuf, 1073 strstreambuf, 1259 seekp basic_ostream, 1059 seekpos basic_filebuf, 1086 basic_streambuf, 1038 basic_stringbuf, 1074 strstreambuf, 1260 select_on_container_copy_construction allocator_traits, 551 scoped_allocator_adaptor, 646 sentry basic_istream, 1045 basic_ostream, 1058 constructor, 1046, 1058 , 806 set, 817 bitset, 538 operator, 572 operator=, 574 owner_before, 573, 577 reset, 572 shared_ptr, 569 static_pointer_cast, 574 swap, 572, 574 unique, 572 use_count, 572 shift valarray, 990 showbase, 1029 showmanyc basic_filebuf, 1084 basic_streambuf, 1039, 1084 showpoint, 1029 showpos, 1030 shrink_to_fit basic_string, 667 deque, 782 vector, 801 SHRT_MAX, 477 SHRT_MIN, 477 1344 c ISO/IEC shuffle, 908 shuffle_order_engine, 954 constructor, 955 sig_atomic_t, 496 SIG_DFL, 496 SIG_ERR, 496 SIG_IGN, 496 SIGABRT, 496 SIGFPE, 496 SIGILL, 496 SIGINT, 496 signal, 496 , 495 signaling_NaN numeric_limits, 474 signbit, 1007 SIGSEGV, 496 SIGTERM, 496 sin, 993, 1005 complex, 935 sinh, 993, 1005 complex, 935 size array, 777, 778 basic_string, 666 bitset, 539 gslice, 997 initializer_list, 495 match_results, 1125 seed_seq, 959 slice, 994 size_t, 115, 468 size_type allocator_traits, 549 skipws, 1030 sleep_for this_thread, 1167 sleep_until this_thread, 1167 slice, 993 slice, 993 slice_array, 994 snextc basic_streambuf, 1036 sort, 911 list, 797 forward_list, 790 sort_heap, 919 splice list, 795 list, 796 Cross references N4296 splice_after forward_list, 789 sputbackc basic_streambuf, 1036 sputc basic_streambuf, 1037 sputn basic_streambuf, 1037 sqrt, 993, 1005 complex, 935 , 1069 , 495 stable_partition, 909 stable_sort, 911 , 848 stack, 848 swap, 851 start gslice, 997 slice, 994 state fpos, 1023 match_results, 1125 wbuffer_convert, 702 wstring_convert, 701 state_type char_traits, 650 wbuffer_convert, 703 wstring_convert, 701 static_pointer_cast shared_ptr, 574 , 495 , 495 , 495 stddev normal_distribution, 971 , 498 , 495, 1253 stod, 685 stof, 684, 685 stoi, 684, 685 stol, 684, 685 stold, 684, 685 stoll, 684, 685 store atomic type, 1153 stoul, 684, 685 stoull, 684, 685 str basic_istringstream, 1076 basic_ostringstream, 1077 1345 c ISO/IEC basic_stringbuf, 1072 basic_stringstream, 1079 istrstream, 1261 match_results, 1126 ostrstream, 1262 strstream, 1264 strstreambuf, 1258 sub_match, 1118 strchr, 686 , 1032 streambuf, 1010, 1032 streamoff, 1015, 1024, 1254 streamsize, 1015 ios_base, 1021 strftime, 731 stride gslice, 997 slice, 994 , 654 stringbuf, 1010, 1069 stringstream, 1010 strlen, 1258, 1262 strpbrk, 686 strrchr, 687 strstr, 687 strstream, 1263 destructor, 1263 strstream, 1263 strstreambuf, 1255, 1257 strstreambuf, 1257 destructor, 1258 setg, 1258 student_t_distribution, 974 constructor, 975 mean, 975 sub_match, 1117 compare, 1118 constructor, 1117 length, 1117 operator basic_string, 1117 operator!=, 1118–1122 operator=, 1118–1122 str, 1118 substr basic_string, 678 subtract_with_carry_engine, 951 Cross references N4296 constructor, 951, 952 suffix match_results, 1126 sum valarray, 990 sungetc basic_streambuf, 1036 swap, 517, 533 pair, 522 array, 778 basic_filebuf, 1082 basic_fstream, 1092 basic_ifstream, 1088 basic_ios, 1028 basic_iostream, 1055 basic_istream, 1045 basic_istringstream, 1075 basic_ofstream, 1090 basic_ostream, 1058 basic_ostringstream, 1077 basic_regex, 1117 basic_streambuf, 1037 basic_string, 675, 683 basic_stringbuf, 1071, 1072 basic_stringstream, 1079 deque, 783 forward_list, 791 function, 601, 602 list, 797 map, 812 match_results, 1127 multimap, 816 multiset, 823 packaged_task, 1208, 1209 pair, 521 priority_queue, 848 promise, 1198, 1200 queue, 845 set, 820 shared_lock, 1184, 1185 shared_ptr, 572, 574 stack, 851 thread, 1165, 1166 tuple, 529 unique_lock, 1181 unique_ptr, 562 unordered_map, 830 unordered_multimap, 834 unordered_multiset, 842 unordered_set, 838 valarray, 989, 993 1346 c ISO/IEC vector, 801, 802 vector, 805 weak_ptr, 577, 578 swap(unique_ptr&, unique_ptr&), 565 swap_ranges, 903 sync basic_filebuf, 1086 basic_istream, 1053 basic_streambuf, 1038 sync_with_stdio ios_base, 1021 syntax_option_type, 1105 awk, 1105 basic, 1105 collate, 1105, 1141 ECMAScript, 1105 egrep, 1105 extended, 1105 grep, 1105 icase, 1105 nosubs, 1105 optimize, 1105 syntax_option_type awk, 1106 basic, 1106 collate, 1106 ECMAScript, 1106 egrep, 1106 extended, 1106 grep, 1106 icase, 1106 nosubs, 1106 optimize, 1106 system, 495, 496 system_category, 505, 507 system_clock rep, 639 system_error, 502, 512 code, 513 system_error, 512, 513 what, 513 t binomial_distribution, 964 negative_binomial_distribution, 965 table ctype, 709 tan, 993, 1005 complex, 935 tanh, 993, 1005 complex, 935 Cross references N4296 target function, 601 target_type function, 601 tellg basic_istream, 1053 tellp basic_ostream, 1059 terminate, 480, 491, 492, 1264 terminate_handler, 462, 491 test bitset, 539 tgamma, 1005 this_thread get_id, 1167 sleep_for, 1167 sleep_until, 1167 yield, 1167 thousands_sep moneypunct, 736 numpunct, 723 , 1162 thread constructor, 1164, 1165 destructor, 1165 detach, 1166 get_id, 1166 hardware_concurrency, 1166 join, 1166 joinable, 1166 operator=, 1165 swap, 1165, 1166 thread::id constructor, 1164 operator!=, 1164 operator