14882: Tables (original) (raw)

Tables [tab]

Table 1 β€” Basic character set [tab:lex.charset.basic]

πŸ”—character glyph
πŸ”—U+0009 character tabulation
πŸ”—U+000b line tabulation
πŸ”—U+000c form feed
πŸ”—U+0020 space
πŸ”—U+000a line feed new-line
πŸ”—U+0021 exclamation mark !
πŸ”—U+0022 quotation mark "
πŸ”—U+0023 number sign #
πŸ”—U+0024 dollar sign $
πŸ”—U+0025 percent sign %
πŸ”—U+0026 ampersand &
πŸ”—U+0027 apostrophe '
πŸ”—U+0028 left parenthesis (
πŸ”—U+0029 right parenthesis )
πŸ”—U+002a asterisk *
πŸ”—U+002b plus sign +
πŸ”—U+002c comma ,
πŸ”—U+002d hyphen-minus -
πŸ”—U+002e full stop .
πŸ”—U+002f solidus /
πŸ”—U+0030 .. U+0039 digit zero .. nine 0 1 2 3 4 5 6 7 8 9
πŸ”—U+003a colon :
πŸ”—U+003b semicolon ;
πŸ”—U+003c less-than sign <
πŸ”—U+003d equals sign =
πŸ”—U+003e greater-than sign >
πŸ”—U+003f question mark ?
πŸ”—U+0040 commercial at @
πŸ”—U+0041 .. U+005a latin capital letter a .. z A B C D E F G H I J K L M
πŸ”— N O P Q R S T U V W X Y Z
πŸ”—U+005b left square bracket [
πŸ”—U+005c reverse solidus \
πŸ”—U+005d right square bracket ]
πŸ”—U+005e circumflex accent ^
πŸ”—U+005f low line _
πŸ”—U+0060 grave accent `
πŸ”—U+0061 .. U+007a latin small letter a .. z a b c d e f g h i j k l m
πŸ”— n o p q r s t u v w x y z
πŸ”—U+007b left curly bracket {
πŸ”—U+007c vertical line |
πŸ”—U+007d right curly bracket }
πŸ”—U+007e tilde ~

Table 2 β€” Additional control characters in the basic literal character set [tab:lex.charset.literal]

U+0000 null
U+0007 alert
U+0008 backspace
U+000d carriage return

Table 3 β€” Alternative tokens [tab:lex.digraph]

πŸ”—Alternative Primary Alternative Primary Alternative Primary
πŸ”—<% { and && and_eq &=
πŸ”—%> } bitor | or_eq |=
πŸ”—<: [ or | xor_eq
πŸ”—:> ] xor ^ not !
πŸ”—%: # compl ~ not_eq !=
πŸ”—%:%: ## bitand &

Table 5 β€” Keywords [tab:lex.key]

πŸ”—alignas constinit extern protected throw
πŸ”—alignof const_cast false public true
πŸ”—asm continue float register try
πŸ”—auto contract_assert for reinterpret_cast typedef
πŸ”—bool co_await friend requires typeid
πŸ”—break co_return goto return typename
πŸ”—case co_yield if short union
πŸ”—catch decltype inline signed unsigned
πŸ”—char default int sizeof using
πŸ”—char8_t delete long static virtual
πŸ”—char16_t do mutable static_assert void
πŸ”—char32_t double namespace static_cast volatile
πŸ”—class dynamic_cast new struct wchar_t
πŸ”—concept else noexcept switch while
πŸ”—const enum nullptr template
πŸ”—consteval explicit operator this
πŸ”—constexpr export private thread_local

Table 6 β€” Alternative representations [tab:lex.key.digraph]

πŸ”—and and_eq bitand bitor compl not
πŸ”—not_eq or or_eq xor xor_eq

Table 8 β€” Types of integer-literals [tab:lex.icon.type]

πŸ”—integer-suffix decimal-literal integer-literal other than decimal-literal
πŸ”—none int int
πŸ”— long int unsigned int
πŸ”— long long int long int
πŸ”— unsigned long int
πŸ”— long long int
πŸ”— unsigned long long int
πŸ”—u or U unsigned int unsigned int
πŸ”— unsigned long int unsigned long int
πŸ”— unsigned long long int unsigned long long int
πŸ”—l or L long int long int
πŸ”— long long int unsigned long int
πŸ”— long long int
πŸ”— unsigned long long int
πŸ”—Both u or U unsigned long int unsigned long int
πŸ”—and l or L unsigned long long int unsigned long long int
πŸ”—ll or LL long long int long long int
πŸ”— unsigned long long int
πŸ”—Both u or U unsigned long long int unsigned long long int
πŸ”—and ll or LL
πŸ”—z or Z the signed integer type corresponding the signed integer type
πŸ”— to std​::​size_t ([support.types.layout]) corresponding to std​::​size_t
πŸ”— std​::​size_t
πŸ”—Both u or U std​::​size_t std​::​size_t
πŸ”—and z or Z

Table 10 β€” Simple escape sequences [tab:lex.ccon.esc]

πŸ”—character simple-escape-sequence
πŸ”—U+000a line feed \n
πŸ”—U+0009 character tabulation \t
πŸ”—U+000b line tabulation \v
πŸ”—U+0008 backspace \b
πŸ”—U+000d carriage return \r
πŸ”—U+000c form feed \f
πŸ”—U+0007 alert \a
πŸ”—U+005c reverse solidus \\
πŸ”—U+003f question mark \?
πŸ”—U+0027 apostrophe \'
πŸ”—U+0022 quotation mark \"

Table 13 β€” String literal concatenations [tab:lex.string.concat]

πŸ”—Source Means Source Means Source Means
πŸ”—u"a" u"b" u"ab" U"a" U"b" U"ab" L"a" L"b" L"ab"
πŸ”—u"a" "b" u"ab" U"a" "b" U"ab" L"a" "b" L"ab"
πŸ”—"a" u"b" u"ab" "a" U"b" U"ab" "a" L"b" L"ab"

Table 15 β€” Properties of named extended floating-point types [tab:basic.extended.fp]

πŸ”—Parameter float16_t float32_t float64_t float128_t bfloat16_t
πŸ”—ISO/IEC 60559 name binary16 binary32 binary64 binary128
πŸ”—k, storage width in bits 16 32 64 128 16
πŸ”—p, precision in bits 11 24 53 113 8
πŸ”—emax, maximum exponent 15 127 1023 16383 127
πŸ”—w, exponent field width in bits 5 8 11 15 8

Table 16 β€” Relations on const and volatile [tab:basic.type.qualifier.rel]

πŸ”—no cv-qualifier < const
πŸ”—no cv-qualifier < volatile
πŸ”—no cv-qualifier < const volatile
πŸ”—const < const volatile
πŸ”—volatile < const volatile

Table 21 β€” __has_cpp_attribute values [tab:cpp.cond.ha]

πŸ”—Attribute Value
πŸ”—assume 202207L
πŸ”—deprecated 201309L
πŸ”—fallthrough 201603L
πŸ”—likely 201803L
πŸ”—maybe_unused 201603L
πŸ”—no_unique_address 201803L
πŸ”—nodiscard 201907L
πŸ”—noreturn 200809L
πŸ”—unlikely 201803L

Table 22 β€” Feature-test macros [tab:cpp.predefined.ft]

πŸ”—Macro name Value
πŸ”—__cpp_aggregate_bases 201603L
πŸ”—__cpp_aggregate_nsdmi 201304L
πŸ”—__cpp_aggregate_paren_init 201902L
πŸ”—__cpp_alias_templates 200704L
πŸ”—__cpp_aligned_new 201606L
πŸ”—__cpp_attributes 200809L
πŸ”—__cpp_auto_cast 202110L
πŸ”—__cpp_binary_literals 201304L
πŸ”—__cpp_capture_star_this 201603L
πŸ”—__cpp_char8_t 202207L
πŸ”—__cpp_concepts 202002L
πŸ”—__cpp_conditional_explicit 201806L
πŸ”—__cpp_constexpr 202406L
πŸ”—__cpp_constexpr_dynamic_alloc 201907L
πŸ”—__cpp_constexpr_exceptions 202411L
πŸ”—__cpp_constexpr_in_decltype 201711L
πŸ”—__cpp_consteval 202211L
πŸ”—__cpp_constinit 201907L
πŸ”—__cpp_contracts 202502L
πŸ”—__cpp_decltype 200707L
πŸ”—__cpp_decltype_auto 201304L
πŸ”—__cpp_deduction_guides 201907L
πŸ”—__cpp_delegating_constructors 200604L
πŸ”—__cpp_deleted_function 202403L
πŸ”—__cpp_designated_initializers 201707L
πŸ”—__cpp_enumerator_attributes 201411L
πŸ”—__cpp_explicit_this_parameter 202110L
πŸ”—__cpp_fold_expressions 201603L
πŸ”—__cpp_generic_lambdas 201707L
πŸ”—__cpp_guaranteed_copy_elision 201606L
πŸ”—__cpp_hex_float 201603L
πŸ”—__cpp_if_consteval 202106L
πŸ”—__cpp_if_constexpr 201606L
πŸ”—__cpp_impl_coroutine 201902L
πŸ”—__cpp_impl_destroying_delete 201806L
πŸ”—__cpp_impl_three_way_comparison 201907L
πŸ”—__cpp_implicit_move 202207L
πŸ”—__cpp_inheriting_constructors 201511L
πŸ”—__cpp_init_captures 201803L
πŸ”—__cpp_initializer_lists 200806L
πŸ”—__cpp_inline_variables 201606L
πŸ”—__cpp_lambdas 200907L
πŸ”—__cpp_modules 201907L
πŸ”—__cpp_multidimensional_subscript 202211L
πŸ”—__cpp_named_character_escapes 202207L
πŸ”—__cpp_namespace_attributes 201411L
πŸ”—__cpp_noexcept_function_type 201510L
πŸ”—__cpp_nontype_template_args 201911L
πŸ”—__cpp_nontype_template_parameter_auto 201606L
πŸ”—__cpp_nsdmi 200809L
πŸ”—__cpp_pack_indexing 202311L
πŸ”—__cpp_placeholder_variables 202306L
πŸ”—__cpp_pp_embed 202502L
πŸ”—__cpp_range_based_for 202211L
πŸ”—__cpp_raw_strings 200710L
πŸ”—__cpp_ref_qualifiers 200710L
πŸ”—__cpp_return_type_deduction 201304L
πŸ”—__cpp_rvalue_references 200610L
πŸ”—__cpp_size_t_suffix 202011L
πŸ”—__cpp_sized_deallocation 201309L
πŸ”—__cpp_static_assert 202306L
πŸ”—__cpp_static_call_operator 202207L
πŸ”—__cpp_structured_bindings 202411L
πŸ”—__cpp_template_parameters 202502L
πŸ”—__cpp_template_template_args 201611L
πŸ”—__cpp_threadsafe_static_init 200806L
πŸ”—__cpp_trivial_relocatability 202502L
πŸ”—__cpp_trivial_union 202502L
πŸ”—__cpp_unicode_characters 200704L
πŸ”—__cpp_unicode_literals 200710L
πŸ”—__cpp_user_defined_literals 200809L
πŸ”—__cpp_using_enum 201907L
πŸ”—__cpp_variable_templates 201304L
πŸ”—__cpp_variadic_friend 202403L
πŸ”—__cpp_variadic_templates 200704L
πŸ”—__cpp_variadic_using 201611L

Table 26 β€” Names from ISO/IEC 9899:2018, Annex K [tab:c.annex.k.names]

πŸ”—abort_handler_s mbstowcs_s strncat_s vswscanf_s
πŸ”—asctime_s memcpy_s strncpy_s vwprintf_s
πŸ”—bsearch_s memmove_s strtok_s vwscanf_s
πŸ”—constraint_handler_t memset_s swprintf_s wcrtomb_s
πŸ”—ctime_s printf_s swscanf_s wcscat_s
πŸ”—errno_t qsort_s tmpfile_s wcscpy_s
πŸ”—fopen_s RSIZE_MAX TMP_MAX_S wcsncat_s
πŸ”—fprintf_s rsize_t tmpnam_s wcsncpy_s
πŸ”—freopen_s scanf_s vfprintf_s wcsnlen_s
πŸ”—fscanf_s set_constraint_handler_s vfscanf_s wcsrtombs_s
πŸ”—fwprintf_s snprintf_s vfwprintf_s wcstok_s
πŸ”—fwscanf_s snwprintf_s vfwscanf_s wcstombs_s
πŸ”—getenv_s sprintf_s vprintf_s wctomb_s
πŸ”—gets_s sscanf_s vscanf_s wmemcpy_s
πŸ”—gmtime_s strcat_s vsnprintf_s wmemmove_s
πŸ”—ignore_handler_s strcpy_s vsnwprintf_s wprintf_s
πŸ”—localtime_s strerrorlen_s vsprintf_s wscanf_s
πŸ”—L_tmpnam_s strerror_s vsscanf_s
πŸ”—mbsrtowcs_s strlen_s vswprintf_s

Table 28 β€” Cpp17EqualityComparable requirements [tab:cpp17.equalitycomparable]

decltype(a == b) models boolean-testable == is an equivalence relation, that is, it has the following properties:If a == b and b == c, then a == c.

Table 30 β€” Cpp17DefaultConstructible requirements [tab:cpp17.defaultconstructible]

object t is default-initialized
object u is value-initialized or aggregate-initialized
an object of type T is value-initialized or aggregate-initialized

Table 31 β€” Cpp17MoveConstructible requirements [tab:cpp17.moveconstructible]

u is equivalent to the value of rv before the construction
T(rv) is equivalent to the value of rv before the construction
rv's state is unspecified[Note 1: rv must still meet the requirements of the library component that is using it. The operations listed in those requirements must work as specified whether rv has been moved from or not. β€” _end note_]

Table 33 β€” Cpp17MoveAssignable requirements [tab:cpp17.moveassignable]

πŸ”—Expression Return type Return value Post-condition
πŸ”—t = rv T& t If t and rv do not refer to the same object,t is equivalent to the value of rv before the assignment
πŸ”—rv's state is unspecified. [Note 2: rv must still meet the requirements of the library component that is using it, whether or not t and rv refer to the same object. The operations listed in those requirements must work as specified whether rv has been moved from or not. β€” _end note_]

Table 35 β€” Cpp17Destructible requirements [tab:cpp17.destructible]

All resources owned by u are reclaimed, no exception is propagated.

Table 36 β€” Cpp17NullablePointer requirements [tab:cpp17.nullablepointer]

πŸ”—Expression Return type Operational semantics
πŸ”—P u(np); Postconditions: u == nullptr
πŸ”—P u = np;
πŸ”—P(np) Postconditions: P(np) == nullptr
πŸ”—t = np P& Postconditions: t == nullptr
πŸ”—a != b decltype(a != b) models boolean-testable !(a == b)
πŸ”—a == np decltype(a == np) and decltype(np == a) each model boolean-testable a == P()
πŸ”—np == a
πŸ”—a != np decltype(a != np) and decltype(np != a) each model boolean-testable !(a == np)
πŸ”—np != a

Table 37 β€” Cpp17Hash requirements [tab:cpp17.hash]

The value returned shall depend only on the argument k for the duration of the program. [Note 1: Thus all evaluations of the expression h(k) with the same value for k yield the same result for a given execution of the program. β€” _end note_] For two different values t1 and t2, the probability that h(t1) and h(t2) compare equal should be very small, approaching 1.0 / numeric_limits<size_t>​::​max().

Table 38 β€” Zombie names in namespace std [tab:zombie.names.std]

πŸ”— auto_ptr generate_header pointer_to_binary_function
πŸ”— auto_ptr_ref get_pointer_safety pointer_to_unary_function
πŸ”— binary_function get_temporary_buffer ptr_fun
πŸ”— binary_negate get_unexpected random_shuffle
πŸ”— bind1st gets raw_storage_iterator
πŸ”— bind2nd is_literal_type result_of
πŸ”— binder1st is_literal_type_v result_of_t
πŸ”— binder2nd istrstream return_temporary_buffer
πŸ”— codecvt_mode little_endian set_unexpected
πŸ”— codecvt_utf16 mem_fun1_ref_t strstream
πŸ”— codecvt_utf8 mem_fun1_t strstreambuf
πŸ”— codecvt_utf8_utf16 mem_fun_ref_t unary_function
πŸ”— const_mem_fun1_ref_t mem_fun_ref unary_negate
πŸ”— const_mem_fun1_t mem_fun_t uncaught_exception
πŸ”— const_mem_fun_ref_t mem_fun undeclare_no_pointers
πŸ”— const_mem_fun_t not1 undeclare_reachable
πŸ”— consume_header not2 unexpected_handler
πŸ”— declare_no_pointers ostrstream wbuffer_convert
πŸ”— declare_reachable pointer_safety wstring_convert

Table 43 β€” Value of object returned by current [tab:support.srcloc.current]

Line numbers are presumed to be 1-indexed; however, an implementation is encouraged to use 0 when the line number is unknown.
An implementation-defined value denoting some offset from the start of the line denoted by line_. Column numbers are presumed to be 1-indexed; however, an implementation is encouraged to use 0 when the column number is unknown.
A name of the current function such as in __func__ ([dcl.fct.def.general]) if any, an empty string otherwise.

Table 45 β€” Enum evaluation_semantic [tab:support.contract.enum.semantic]

πŸ”—Name Meaning
πŸ”—ignore Ignore evaluation semantic
πŸ”—observe Observe evaluation semantic
πŸ”—enforce Enforce evaluation semantic
πŸ”—quick_enforce Quick-enforce evaluation semantic
πŸ”—

Table 46 β€” Enum detection_mode [tab:support.contract.enum.detection]

The predicate of the contract assertion evaluated to false or would have evaluated to false.
An uncaught exception occurred during evaluation of the contract assertion.

Table 63 β€” Expressions used to perform ratio arithmetic [tab:ratio.arithmetic]

πŸ”—Type Value of X Value of Y
πŸ”—ratio_add<R1, R2> R1​::​num * R2​::​den + R1​::​den * R2​::​den
πŸ”— R2​::​num * R1​::​den
πŸ”—ratio_subtract<R1, R2> R1​::​num * R2​::​den - R1​::​den * R2​::​den
πŸ”— R2​::​num * R1​::​den
πŸ”—ratio_multiply<R1, R2> R1​::​num * R2​::​num R1​::​den * R2​::​den
πŸ”—ratio_divide<R1, R2> R1​::​num * R2​::​den R1​::​den * R2​::​num

Table 65 β€” optional​::​operator=(const optional&) effects [tab:optional.assign.copy]

πŸ”— *this contains a value *this does not contain a value
πŸ”—rhs contains a value assigns *rhs to the contained value direct-non-list-initializes the contained value with *rhs
πŸ”—rhs does not contain a value destroys the contained value by calling val->T​::​~T() no effect

Table 66 β€” optional​::​operator=(optional&&) effects [tab:optional.assign.move]

πŸ”— *this contains a value *this does not contain a value
πŸ”—rhs contains a value assigns std​::​move(*rhs) to the contained value direct-non-list-initializes the contained value with std​::​move(*rhs)
πŸ”—rhs does not contain a value destroys the contained value by calling val->T​::​~T() no effect

Table 67 β€” optional​::​operator=(const optional<U>&) effects [tab:optional.assign.copy.templ]

πŸ”— *this contains a value *this does not contain a value
πŸ”—rhs contains a value assigns *rhs to the contained value direct-non-list-initializes the contained value with *rhs
πŸ”—rhs does not contain a value destroys the contained value by calling val->T​::​~T() no effect

Table 68 β€” optional​::​operator=(optional<U>&&) effects [tab:optional.assign.move.templ]

πŸ”— *this contains a value *this does not contain a value
πŸ”—rhs contains a value assigns std​::​move(*rhs) to the contained value direct-non-list-initializes the contained value with std​::​move(*rhs)
πŸ”—rhs does not contain a value destroys the contained value by calling val->T​::​~T() no effect

Table 69 β€” optional​::​swap(optional&) effects [tab:optional.swap]

πŸ”— *this contains a value *this does not contain a value
πŸ”—rhs contains a value calls swap(*(*this), *rhs) direct-non-list-initializes the contained value of *thiswith std​::​move(*rhs), followed by rhs.val->T​::​~T(); postcondition is that *this contains a value and rhs does not contain a value
πŸ”—rhs does not contain a value direct-non-list-initializes the contained value of rhswith std​::​move(*(*this)), followed by val->T​::​~T(); postcondition is that *this does not contain a value and rhs contains a value no effect

Table 70 β€” swap(expected&) effects [tab:expected.object.swap]

equivalent to: using std​::​swap; swap(val, rhs.val);
equivalent to: using std​::​swap; swap(unex, rhs.unex);

Table 72 β€” Containers library summary [tab:containers.summary]

πŸ”— Subclause Header
πŸ”—[container.requirements] Requirements
πŸ”—[sequences] Sequence containers <array>, <deque>, <forward_list>,<hive>,
πŸ”— <inplace_vector>, <list>, <vector>
πŸ”—[associative] Associative containers <map>, <set>
πŸ”—[unord] Unordered associative containers <unordered_map>, <unordered_set>
πŸ”—[container.adaptors] Container adaptors <queue>, <stack>, <flat_map>, <flat_set>
πŸ”—[views] Views <span>, <mdspan>

Table 73 β€” Container types with compatible nodes [tab:container.node.compat]

πŸ”—map<K, T, C1, A> map<K, T, C2, A>
πŸ”—map<K, T, C1, A> multimap<K, T, C2, A>
πŸ”—set<K, C1, A> set<K, C2, A>
πŸ”—set<K, C1, A> multiset<K, C2, A>
πŸ”—unordered_map<K, T, H1, E1, A> unordered_map<K, T, H2, E2, A>
πŸ”—unordered_map<K, T, H1, E1, A> unordered_multimap<K, T, H2, E2, A>
πŸ”—unordered_set<K, H1, E1, A> unordered_set<K, H2, E2, A>
πŸ”—unordered_set<K, H1, E1, A> unordered_multiset<K, H2, E2, A>

Table 75 β€” Relations among iterator categories [tab:iterators.relations]

πŸ”—Contiguous β†’ Random Access β†’ Bidirectional β†’ Forward β†’ Input
πŸ”— β†’ Output

Table 76 β€” Cpp17Iterator requirements [tab:iterator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—*r unspecified Preconditions: r is dereferenceable.
πŸ”—++r X&

Table 77 β€” Cpp17InputIterator requirements (in addition to Cpp17Iterator) [tab:inputiterator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—a != b decltype(a != b) models boolean-testable !(a == b) Preconditions: (a, b) is in the domain of ==.
πŸ”—*a reference, convertible to T Preconditions: a is dereferenceable. The expression(void)*a, *a is equivalent to *a. If a == b and (a, b) is in the domain of == then *a is equivalent to *b.
πŸ”—a->m (*a).m Preconditions: a is dereferenceable.
πŸ”—++r X& Preconditions: r is dereferenceable. Postconditions: r is dereferenceable or r is past-the-end;any copies of the previous value of r are no longer required to be dereferenceable nor to be in the domain of ==.
πŸ”—(void)r++ equivalent to (void)++r
πŸ”—*r++ convertible to T { T tmp = *r;++r;return tmp; }

Table 78 β€” Cpp17OutputIterator requirements (in addition to Cpp17Iterator) [tab:outputiterator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—*r = o result is not used Remarks: After this operation r is not required to be dereferenceable. Postconditions: r is incrementable.
πŸ”—++r X& addressof(r) == addressof(++r). Remarks: After this operation r is not required to be dereferenceable. Postconditions: r is incrementable.
πŸ”—r++ convertible to const X& { X tmp = r; ++r; return tmp; } Remarks: After this operation r is not required to be dereferenceable. Postconditions: r is incrementable.
πŸ”—*r++ = o result is not used Remarks: After this operation r is not required to be dereferenceable. Postconditions: r is incrementable.

Table 79 β€” Cpp17ForwardIterator requirements (in addition to Cpp17InputIterator) [tab:forwarditerator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—r++ convertible to const X& { X tmp = r; ++r; return tmp; }
πŸ”—*r++ reference

Table 80 β€” Cpp17BidirectionalIterator requirements (in addition to Cpp17ForwardIterator) [tab:bidirectionaliterator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—--r X& Preconditions: there exists s such that r == ++s. Postconditions: r is dereferenceable. --(++r) == r. --r == --s implies r == s. addressof(r) == addressof(--r).
πŸ”—r-- convertible to const X& { X tmp = r; --r; return tmp; }
πŸ”—*r-- reference

Table 81 β€” Cpp17RandomAccessIterator requirements (in addition to Cpp17BidirectionalIterator) [tab:randomaccessiterator]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—r += n X& { difference_type m = n; if (m >= 0) while (m--) ++r; else while (m++) --r; return r; }
πŸ”—a + nn + a X { X tmp = a; return tmp += n; } a + n == n + a.
πŸ”—r -= n X& return r += -n; Preconditions: the absolute value of n is in the range of representable values of difference_type.
πŸ”—a - n X { X tmp = a; return tmp -= n; }
πŸ”—b - a difference_type return n; Preconditions: there exists a value n of type difference_type such that a + n == b. b == a + (b - a).
πŸ”—a[n] convertible to reference *(a + n)
πŸ”—a < b decltype(a < b) models boolean-testable Effects: Equivalent to: return b - a > 0; < is a total ordering relation
πŸ”—a > b decltype(a > b) models boolean-testable b < a > is a total ordering relation opposite to <.
πŸ”—a >= b decltype(a >= b) models boolean-testable !(a < b)
πŸ”—a <= b decltype(a <= b) models boolean-testable !(a > b)

Table 85 β€” Character traits requirements [tab:char.traits.req]

πŸ”—Expression Return type Assertion/note Complexity
πŸ”— pre-/post-condition
πŸ”—X​::​char_type C
πŸ”—X​::​int_type (described in [char.traits.typedefs])
πŸ”—X​::​off_type (described in [iostreams.limits.pos] and [iostream.forward])
πŸ”—X​::​pos_type (described in [iostreams.limits.pos] and [iostream.forward])
πŸ”—X​::​state_type (described in [char.traits.typedefs])
πŸ”—X​::​eq(c,d) bool Returns: whether c is to be treated as equal to d. constant
πŸ”—X​::​lt(c,d) bool Returns: whether c is to be treated as less than d. constant
πŸ”—X​::​compare(p,q,n) int Returns: 0 if for each i in [0, n), X​::​eq(p[i],q[i])is true; else, a negative value if, for some j in [0, n),X​::​lt(p[j],q[j]) is true and for each i in [0, j)X​::​eq(p[i],q[i]) is true; else a positive value. linear
πŸ”—X​::​length(p) size_t Returns: the smallest i such that X​::​eq(p[i],charT()) is true. linear
πŸ”—X​::​find(p,n,c) const X​::​char_type* Returns: the smallest q in [p, p+n) such thatX​::​eq(*q,c) is true, nullptr otherwise. linear
πŸ”—X​::​move(s,p,n) X​::​char_type* for each i in [0, n), performs X​::​assign(s[i],p[i]). Copies correctly even where the ranges [p, p+n) and [s, s+n) overlap. Returns: s. linear
πŸ”—X​::​copy(s,p,n) X​::​char_type* Preconditions: The ranges [p, p+n) and [s, s+n) do not overlap. Returns: s. for each i in [0, n), performs X​::​assign(s[i],p[i]). linear
πŸ”—X​::​assign(r,d) (not used) assigns r=d. constant
πŸ”—X​::​assign(s,n,c) X​::​char_type* for each i in [0, n), performsX​::​assign(s[i],c). Returns: s. linear
πŸ”—X​::​not_eof(e) int_type Returns: e if X​::​eq_int_type(e,X​::​eof()) is false, otherwise a value f such thatX​::​eq_int_type(f,X​::​eof()) is false. constant
πŸ”—X​::​to_char_type(e) X​::​char_type Returns: if for some c, X​::​eq_int_type(e,X​::​to_int_type(c))is true, c; else some unspecified value. constant
πŸ”—X​::​to_int_type(c) X​::​int_type Returns: some value e, constrained by the definitions ofto_char_type and eq_int_type. constant
πŸ”—X​::​eq_int_type(e,f) bool Returns: for all c and d, X​::​eq(c,d) is equal toX​::​eq_int_type(X​::​to_int_type(c), X​::​to_int_type(d)); otherwise, yields trueif e and f are both copies of X​::​eof(); otherwise, yields false if one of e and f is a copy of X​::​eof() and the other is not; otherwise the value is unspecified. constant
πŸ”—X​::​eof() X​::​int_type Returns: a value e such that X​::​eq_int_type(e,X​::​to_int_type(c))is false for all values c. constant

Table 87 β€” Text library summary [tab:text.summary]

πŸ”— Subclause Header
πŸ”—[charconv] Primitive numeric conversions <charconv>
πŸ”—[localization] Localization library <locale>, <clocale>
πŸ”—[format] Formatting <format>
πŸ”—[text.encoding] Text encodings identification <text_encoding>
πŸ”—[re] Regular expressions library <regex>
πŸ”—[text.c.strings] Null-terminated sequence utilities <cctype>, <cstdlib>, <cuchar>, <cwchar>, <cwctype>

Table 89 β€” Locale category facets [tab:locale.category.facets]

πŸ”—Category Includes facets
πŸ”—collate collate<char>, collate<wchar_t>
πŸ”—ctype ctype<char>, ctype<wchar_t>
πŸ”— codecvt<char, char, mbstate_t>
πŸ”— codecvt<wchar_t, char, mbstate_t>
πŸ”—monetary moneypunct<char>, moneypunct<wchar_t>
πŸ”— moneypunct<char, true>, moneypunct<wchar_t, true>
πŸ”— money_get<char>, money_get<wchar_t>
πŸ”— money_put<char>, money_put<wchar_t>
πŸ”—numeric numpunct<char>, numpunct<wchar_t>
πŸ”— num_get<char>, num_get<wchar_t>
πŸ”— num_put<char>, num_put<wchar_t>
πŸ”—time time_get<char>, time_get<wchar_t>
πŸ”— time_put<char>, time_put<wchar_t>
πŸ”—messages messages<char>, messages<wchar_t>

Table 90 β€” Required specializations [tab:locale.spec]

πŸ”—Category Includes facets
πŸ”—collate collate_byname<char>, collate_byname<wchar_t>
πŸ”—ctype ctype_byname<char>, ctype_byname<wchar_t>
πŸ”— codecvt_byname<char, char, mbstate_t>
πŸ”— codecvt_byname<wchar_t, char, mbstate_t>
πŸ”—monetary moneypunct_byname<char, International>
πŸ”— moneypunct_byname<wchar_t, International>
πŸ”— money_get<C, InputIterator>
πŸ”— money_put<C, OutputIterator>
πŸ”—numeric numpunct_byname<char>, numpunct_byname<wchar_t>
πŸ”— num_get<C, InputIterator>, num_put<C, OutputIterator>
πŸ”—time time_get<char, InputIterator>
πŸ”— time_get_byname<char, InputIterator>
πŸ”— time_get<wchar_t, InputIterator>
πŸ”— time_get_byname<wchar_t, InputIterator>
πŸ”— time_put<char, OutputIterator>
πŸ”— time_put_byname<char, OutputIterator>
πŸ”— time_put<wchar_t, OutputIterator>
πŸ”— time_put_byname<wchar_t, OutputIterator>
πŸ”—messages messages_byname<char>, messages_byname<wchar_t>

Table 91 β€” do_in/do_out result values [tab:locale.codecvt.inout]

not all source characters converted
encountered a character in [from, from_end) that cannot be converted
internT and externT are the same type, and input sequence is identical to converted sequence

Table 92 β€” do_unshift result values [tab:locale.codecvt.unshift]

space for more than to_end - to destination elements was needed to terminate a sequence given the value of state
an unspecified error has occurred
no termination is needed for this state_type

Table 93 β€” Integer conversions [tab:facet.num.get.int]

πŸ”—State stdio equivalent
πŸ”—basefield == oct %o
πŸ”—basefield == hex %X
πŸ”—basefield == 0 %i
πŸ”—signed integral type %d
πŸ”—unsigned integral type %u

Table 94 β€” Length modifier [tab:facet.num.get.length]

πŸ”—Type Length modifier
πŸ”—short h
πŸ”—unsigned short h
πŸ”—long l
πŸ”—unsigned long l
πŸ”—long long ll
πŸ”—unsigned long long ll
πŸ”—double l
πŸ”—long double L

Table 95 β€” Integer conversions [tab:facet.num.put.int]

πŸ”—State stdio equivalent
πŸ”—basefield == ios_base​::​oct %o
πŸ”—(basefield == ios_base​::​hex) && !uppercase %x
πŸ”—(basefield == ios_base​::​hex) %X
πŸ”—for a signed integral type %d
πŸ”—for an unsigned integral type %u

Table 96 β€” Floating-point conversions [tab:facet.num.put.fp]

πŸ”—State stdio equivalent
πŸ”—floatfield == ios_base​::​fixed && !uppercase %f
πŸ”—floatfield == ios_base​::​fixed %F
πŸ”—floatfield == ios_base​::​scientific && !uppercase %e
πŸ”—floatfield == ios_base​::​scientific %E
πŸ”—floatfield == (ios_base​::​fixed | ios_base​::​scientific) && !uppercase %a
πŸ”—floatfield == (ios_base​::​fixed | ios_base​::​scientific) %A
πŸ”—!uppercase %g
πŸ”—otherwise %G

Table 97 β€” Length modifier [tab:facet.num.put.length]

πŸ”—Type Length modifier
πŸ”—long l
πŸ”—long long ll
πŸ”—unsigned long l
πŸ”—unsigned long long ll
πŸ”—long double L
πŸ”—otherwise none

Table 98 β€” Numeric conversions [tab:facet.num.put.conv]

πŸ”—Type(s) State stdio equivalent
πŸ”—an integral type showpos +
πŸ”— showbase #
πŸ”—a floating-point type showpos +
πŸ”— showpoint #

Table 99 β€” Fill padding [tab:facet.num.put.fill]

πŸ”—State Location
πŸ”—adjustfield == ios_base​::​left pad after
πŸ”—adjustfield == ios_base​::​right pad before
πŸ”—adjustfield == internal and a sign occurs in the representation pad after the sign
πŸ”—adjustfield == internal and representation after stage 1 began with 0x or 0X pad after x or X
πŸ”—otherwise pad before

Table 101 β€” Potential setlocale data races [tab:setlocale.data.races]

πŸ”—fprintf isprint iswdigit localeconv tolower
πŸ”—fscanf ispunct iswgraph mblen toupper
πŸ”—isalnum isspace iswlower mbstowcs towlower
πŸ”—isalpha isupper iswprint mbtowc towupper
πŸ”—isblank iswalnum iswpunct setlocale wcscoll
πŸ”—iscntrl iswalpha iswspace strcoll wcstod
πŸ”—isdigit iswblank iswupper strerror wcstombs
πŸ”—isgraph iswcntrl iswxdigit strtod wcsxfrm
πŸ”—islower iswctype isxdigit strxfrm wctomb

Table 102 β€” Meaning of align options [tab:format.align]

Forces the formatted argument to be aligned to the start of the field by inserting n fill characters after the formatted argument where n is the padding width. This is the default for non-arithmetic non-pointer types, charT, and bool, unless an integer presentation type is specified.
Forces the formatted argument to be aligned to the end of the field by inserting n fill characters before the formatted argument where n is the padding width. This is the default for arithmetic types other than charT and bool, pointer types, or when an integer presentation type is specified.
Forces the formatted argument to be centered within the field by insertingfill characters before andfill characters after the formatted argument, wheren is the padding width.

Table 103 β€” Meaning of sign options [tab:format.sign]

Indicates that a sign should be used for both non-negative and negative numbers. The + sign is inserted before the output of to_chars for non-negative numbers other than negative zero. [Note 5: For negative numbers and negative zero the output of to_chars will already contain the sign so no additional transformation is performed. β€” _end note_]
Indicates that a sign should be used for negative numbers and negative zero only (this is the default behavior).
Indicates that a leading space should be used for non-negative numbers other than negative zero, and a minus sign for negative numbers and negative zero.

Table 105 β€” Meaning of type options for integer types [tab:format.type.int]

πŸ”—Type Meaning
πŸ”—b to_chars(first, last, value, 2);the base prefix is 0b.
πŸ”—B The same as b, except thatthe base prefix is 0B.
πŸ”—c Copies the character static_cast<charT>(value) to the output. Throws format_error if value is not in the range of representable values for charT.
πŸ”—d to_chars(first, last, value).
πŸ”—o to_chars(first, last, value, 8);the base prefix is 0 if value is nonzero and is empty otherwise.
πŸ”—x to_chars(first, last, value, 16);the base prefix is 0x.
πŸ”—X The same as x, except that it uses uppercase letters for digits above 9 andthe base prefix is 0X.
πŸ”—none The same as d. [Note 8: If the formatting argument type is charT or bool, the default is instead c or s, respectively. β€” _end note_]

Table 106 β€” Meaning of type options for charT [tab:format.type.char]

Copies the character to the output.
As specified in Table 105with value converted to the unsigned version of the underlying type.

Table 107 β€” Meaning of type options for bool [tab:format.type.bool]

Copies textual representation, either true or false, to the output.
As specified in Table 105for the valuestatic_cast<unsigned char>(value).

Table 108 β€” Meaning of type options for floating-point types [tab:format.type.float]

πŸ”—Type Meaning
πŸ”—a If precision is specified, equivalent toto_chars(first, last, value, chars_format::hex, precision) where precision is the specified formatting precision; equivalent toto_chars(first, last, value, chars_format::hex) otherwise.
πŸ”—A The same as a, except that it uses uppercase letters for digits above 9 andP to indicate the exponent.
πŸ”—e Equivalent toto_chars(first, last, value, chars_format::scientific, precision) where precision is the specified formatting precision, or 6 if precision is not specified.
πŸ”—E The same as e, except that it uses E to indicate exponent.
πŸ”—f, F Equivalent toto_chars(first, last, value, chars_format::fixed, precision) where precision is the specified formatting precision, or 6 if precision is not specified.
πŸ”—g Equivalent toto_chars(first, last, value, chars_format::general, precision) where precision is the specified formatting precision, or 6 if precision is not specified.
πŸ”—G The same as g, except that it uses E to indicate exponent.
πŸ”—none If precision is specified, equivalent toto_chars(first, last, value, chars_format::general, precision) where precision is the specified formatting precision; equivalent toto_chars(first, last, value) otherwise.

Table 109 β€” Meaning of type options for pointer types [tab:format.type.ptr]

If uintptr_t is defined,to_chars(first, last, reinterpret_cast<uintptr_t>(value), 16) with the prefix 0x inserted immediately before the output of to_chars; otherwise, implementation-defined.
The same as p, except that it uses uppercase letters for digits above 9 and the base prefix is 0X.

Table 110 β€” BasicFormatter requirements [tab:formatter.basic]

Parses format-spec ([format.string]) for type Tin the range [pc.begin(), pc.end()) until the first unmatched character. Throws format_error unless the whole range is parsed or the unmatched character is }. [Note 1: This allows formatters to emit meaningful error messages. β€” _end note_] Stores the parsed format specifiers in *this and returns an iterator past the end of the parsed range.
Formats u according to the specifiers stored in *this, writes the output to fc.out(), and returns an iterator past the end of the output range. The output shall only depend onu,fc.locale(),fc.arg(n) for any value n of type size_t, and the range [pc.begin(), pc.end()) from the last call to f.parse(pc).

Table 111 β€” Formatter requirements [tab:formatter]

Formats t according to the specifiers stored in *this, writes the output to fc.out(), and returns an iterator past the end of the output range. The output shall only depend ont,fc.locale(),fc.arg(n) for any value n of type size_t, and the range [pc.begin(), pc.end()) from the last call to f.parse(pc).
As above, but does not modify u.

Table 112 β€” Mapping of characters to escape sequences [tab:format.escape.sequences]

πŸ”—Character Escape sequence
πŸ”—U+0009 character tabulation \t
πŸ”—U+000a line feed \n
πŸ”—U+000d carriage return \r
πŸ”—U+0022 quotation mark \"
πŸ”—U+005c reverse solidus \\

Table 113 β€” Meaning of range-type options [tab:formatter.range.type]

πŸ”—Option Requirements Meaning
πŸ”—m T shall be either a specialization of pair or a specialization of tuplesuch that tuple_size_v<T> is 2. Indicates that the opening bracket should be "{", the closing bracket should be "}", the separator should be ", ", and each range element should be formatted as ifm were specified for its tuple-type. [Note 2: If the n option is provided in addition to the m option, both the opening and closing brackets are still empty. β€” _end note_]
πŸ”—s T shall be charT. Indicates that the range should be formatted as a string.
πŸ”—?s T shall be charT. Indicates that the range should be formatted as an escaped string ([format.string.escaped]).

Table 114 β€” Meaning of tuple-type options [tab:formatter.tuple.type]

πŸ”—Option Requirements Meaning
πŸ”—m sizeof...(Ts) == 2 Equivalent to:set_separator(STATICALLY-WIDEN<charT>(": ")); set_brackets({}, {});
πŸ”—n none Equivalent to: set_brackets({}, {});
πŸ”—none none No effects

Table 116 β€” syntax_option_type effects [tab:re.synopt]

πŸ”—Element Effect(s) if set
πŸ”—icase Specifies that matching of regular expressions against a character container sequence shall be performed without regard to case.
πŸ”—nosubs Specifies that no sub-expressions shall be considered to be marked, so that when a regular expression is matched against a character container sequence, no sub-expression matches shall be stored in the supplied match_results object.
πŸ”—optimize Specifies that the regular expression engine should pay more attention to the speed with which regular expressions are matched, and less to the speed with which regular expression objects are constructed. Otherwise it has no detectable effect on the program output.
πŸ”—collate Specifies that character ranges of the form "[a-b]" shall be locale sensitive.
πŸ”—ECMAScript Specifies that the grammar recognized by the regular expression engine shall be that used by ECMAScript in ECMA-262, as modified in [re.grammar]. See also: ECMA-262 15.10
πŸ”—basic Specifies that the grammar recognized by the regular expression engine shall be that used by basic regular expressions in POSIX.See also: POSIX, Base Definitions and Headers, Section 9.3
πŸ”—extended Specifies that the grammar recognized by the regular expression engine shall be that used by extended regular expressions in POSIX.See also: POSIX, Base Definitions and Headers, Section 9.4
πŸ”—awk Specifies that the grammar recognized by the regular expression engine shall be that used by the utility awk in POSIX.
πŸ”—grep Specifies that the grammar recognized by the regular expression engine shall be that used by the utility grep in POSIX.
πŸ”—egrep Specifies that the grammar recognized by the regular expression engine shall be that used by the utility grep when given the -E option in POSIX.
πŸ”—multiline Specifies that ^ shall match the beginning of a line and$ shall match the end of a line, if the ECMAScript engine is selected.

Table 117 β€” regex_constants​::​match_flag_type effects [tab:re.matchflag]

πŸ”—Element Effect(s) if set
πŸ”—match_not_bol The first character in the sequence [first, last) shall be treated as though it is not at the beginning of a line, so the character^ in the regular expression shall not match [first, first).
πŸ”—match_not_eol The last character in the sequence [first, last) shall be treated as though it is not at the end of a line, so the character"$" in the regular expression shall not match [last, last).
πŸ”—match_not_bow The expression "\\b" shall not match the sub-sequence [first, first).
πŸ”—match_not_eow The expression "\\b" shall not match the sub-sequence [last, last).
πŸ”—match_any If more than one match is possible then any match is an acceptable result.
πŸ”—match_not_null The expression shall not match an empty sequence.
πŸ”—match_continuous The expression shall only match a sub-sequence that begins atfirst.
πŸ”—match_prev_avail --first is a valid iterator position. When this flag is set the flags match_not_bol and match_not_bow shall be ignored by the regular expression algorithms ([re.alg]) and iterators ([re.iter]).
πŸ”—format_default When a regular expression match is to be replaced by a new string, the new string shall be constructed using the rules used by the ECMAScript replace function in ECMA-262, part 15.5.4.11 String.prototype.replace. In addition, during search and replace operations all non-overlapping occurrences of the regular expression shall be located and replaced, and sections of the input that did not match the expression shall be copied unchanged to the output string.
πŸ”—format_sed When a regular expression match is to be replaced by a new string, the new string shall be constructed using the rules used by the sed utility in POSIX.
πŸ”—format_no_copy During a search and replace operation, sections of the character container sequence being searched that do not match the regular expression shall not be copied to the output string.
πŸ”—format_first_only When specified during a search and replace operation, only the first occurrence of the regular expression shall be replaced.

Table 118 β€” error_type values in the C locale [tab:re.err]

πŸ”—Value Error condition
πŸ”—error_collate The expression contains an invalid collating element name.
πŸ”—error_ctype The expression contains an invalid character class name.
πŸ”—error_escape The expression contains an invalid escaped character, or a trailing escape.
πŸ”—error_backref The expression contains an invalid back reference.
πŸ”—error_brack The expression contains mismatched [ and ].
πŸ”—error_paren The expression contains mismatched ( and ).
πŸ”—error_brace The expression contains mismatched { and }.
πŸ”—error_badbrace The expression contains an invalid range in a {} expression.
πŸ”—error_range The expression contains an invalid character range, such as[b-a] in most encodings.
πŸ”—error_space There is insufficient memory to convert the expression into a finite state machine.
πŸ”—error_badrepeat One of *?+{ is not preceded by a valid regular expression.
πŸ”—error_complexity The complexity of an attempted match against a regular expression exceeds a pre-set level.
πŸ”—error_stack There is insufficient memory to determine whether the regular expression matches the specified character sequence.

Table 119 β€” Character class names and corresponding ctype masks [tab:re.traits.classnames]

πŸ”—Narrow character name Wide character name Corresponding ctype_base​::​mask value
πŸ”—"alnum" L"alnum" ctype_base​::​alnum
πŸ”—"alpha" L"alpha" ctype_base​::​alpha
πŸ”—"blank" L"blank" ctype_base​::​blank
πŸ”—"cntrl" L"cntrl" ctype_base​::​cntrl
πŸ”—"digit" L"digit" ctype_base​::​digit
πŸ”—"d" L"d" ctype_base​::​digit
πŸ”—"graph" L"graph" ctype_base​::​graph
πŸ”—"lower" L"lower" ctype_base​::​lower
πŸ”—"print" L"print" ctype_base​::​print
πŸ”—"punct" L"punct" ctype_base​::​punct
πŸ”—"space" L"space" ctype_base​::​space
πŸ”—"s" L"s" ctype_base​::​space
πŸ”—"upper" L"upper" ctype_base​::​upper
πŸ”—"w" L"w" ctype_base​::​alnum
πŸ”—"xdigit" L"xdigit" ctype_base​::​xdigit

Table 120 β€” match_results copy/move operation postconditions [tab:re.results.const]

πŸ”—Element Value
πŸ”—ready() m.ready()
πŸ”—size() m.size()
πŸ”—str(n) m.str(n) for all non-negative integers n < m.size()
πŸ”—prefix() m.prefix()
πŸ”—suffix() m.suffix()
πŸ”—(*this)[n] m[n] for all non-negative integers n < m.size()
πŸ”—length(n) m.length(n) for all non-negative integers n < m.size()
πŸ”—position(n) m.position(n) for all non-negative integers n < m.size()

Table 121 β€” Effects of regex_match algorithm [tab:re.alg.match]

πŸ”—Element Value
πŸ”—m.size() 1 + e.mark_count()
πŸ”—m.empty() false
πŸ”—m.prefix().first first
πŸ”—m.prefix().second first
πŸ”—m.prefix().matched false
πŸ”—m.suffix().first last
πŸ”—m.suffix().second last
πŸ”—m.suffix().matched false
πŸ”—m[0].first first
πŸ”—m[0].second last
πŸ”—m[0].matched true
πŸ”—m[n].first For all integers 0 < n < m.size(), the start of the sequence that matched sub-expression n. Alternatively, if sub-expression n did not participate in the match, then last.
πŸ”—m[n].second For all integers 0 < n < m.size(), the end of the sequence that matched sub-expression n. Alternatively, if sub-expression n did not participate in the match, then last.
πŸ”—m[n].matched For all integers 0 < n < m.size(), true if sub-expression n participated in the match, false otherwise.

Table 122 β€” Effects of regex_search algorithm [tab:re.alg.search]

πŸ”—Element Value
πŸ”—m.size() 1 + e.mark_count()
πŸ”—m.empty() false
πŸ”—m.prefix().first first
πŸ”—m.prefix().second m[0].first
πŸ”—m.prefix().matched m.prefix().first != m.prefix().second
πŸ”—m.suffix().first m[0].second
πŸ”—m.suffix().second last
πŸ”—m.suffix().matched m.suffix().first != m.suffix().second
πŸ”—m[0].first The start of the sequence of characters that matched the regular expression
πŸ”—m[0].second The end of the sequence of characters that matched the regular expression
πŸ”—m[0].matched true
πŸ”—m[n].first For all integers 0 < n < m.size(), the start of the sequence that matched sub-expression n. Alternatively, if sub-expression ndid not participate in the match, then last.
πŸ”—m[n].second For all integers 0 < n < m.size(), the end of the sequence that matched sub-expression n. Alternatively, if sub-expression n did not participate in the match, then last.
πŸ”—m[n].matched For all integers 0 < n < m.size(), true if sub-expression nparticipated in the match, false otherwise.

Table 124 β€” Seed sequence requirements [tab:rand.req.seedseq]

πŸ”—Expression Return type Pre/post-condition Complexity
πŸ”—S​::​result_type T T is an unsigned integer type of at least 32 bits.
πŸ”—S() Creates a seed sequence with the same initial state as all other default-constructed seed sequences of type S. constant
πŸ”—S(ib,ie) Creates a seed sequence having internal state that depends on some or all of the bits of the supplied sequence [ib,ie).
πŸ”—S(il) Same as S(il.begin(), il.end()). same as S(il.begin(), il.end())
πŸ”—q.generate(rb,re) void Does nothing if rb == re. Otherwise, fills the supplied sequence [rb,re) with 32-bit quantities that depend on the sequence supplied to the constructor and possibly also depend on the history of generate's previous invocations.
πŸ”—r.size() size_t The number of 32-bit units that would be copied by a call to r.param. constant
πŸ”—r.param(ob) void Copies to the given destination a sequence of 32-bit units that can be provided to the constructor of a second object of type S, and that would reproduce in that second object a state indistinguishable from the state of the first object.

Table 125 β€” Random number engine requirements [tab:rand.req.eng]

πŸ”—Expression Return type Pre/post-condition Complexity
πŸ”—E() Creates an engine with the same initial state as all other default-constructed engines of type E.
πŸ”—E(x) Creates an engine that compares equal to x.
πŸ”—E(s) Creates an engine with initial state determined by s.
πŸ”—E(q)241 Creates an engine with an initial state that depends on a sequence produced by one call to q.generate. same as complexity of q.generate called on a sequence whose length is size of state
πŸ”—e.seed() void Postconditions: e == E(). same as E()
πŸ”—e.seed(s) void Postconditions: e == E(s). same as E(s)
πŸ”—e.seed(q) void Postconditions: e == E(q). same as E(q)
πŸ”—e() T Advances e's state e toe e) and returnsGA(e). per [rand.req.urng]
πŸ”—e.discard(z)242 void Advances e's state e to by any means equivalent to z consecutive calls e(). no worse than the complexity of z consecutive calls e()
πŸ”—x == y bool This operator is an equivalence relation. With and as the infinite sequences of values that would be generated by repeated future calls to x() and y(), respectively, returns true if ; else returns false.
πŸ”—x != y bool !(x == y).

Table 126 β€” Random number distribution requirements [tab:rand.req.dist]

πŸ”—Expression Return type Pre/post-condition Complexity
πŸ”—D​::​result_type T T is an arithmetic type.
πŸ”—D​::​param_type P
πŸ”—D() Creates a distribution whose behavior is indistinguishable from that of any other newly default-constructed distribution of type D. constant
πŸ”—D(p) Creates a distribution whose behavior is indistinguishable from that of a distribution newly constructed directly from the values used to construct p. same as p's construction
πŸ”—d.reset() void Subsequent uses of d do not depend on values produced by any engine prior to invoking reset. constant
πŸ”—x.param() P Returns a valuep such that D(p).param() == p. no worse than the complexity of D(p)
πŸ”—d.param(p) void Postconditions: d.param() == p. no worse than the complexity of D(p)
πŸ”—d(g) T With , the sequence of numbers returned by successive invocations with the same object g is randomly distributed according to the associatedp(z |{p}) or function. amortized constant number of invocations of g
πŸ”—d(g,p) T The sequence of numbers returned by successive invocations with the same objects g and p is randomly distributed according to the associatedp(z |{p}) or function. amortized constant number of invocations of g
πŸ”—x.min() T Returns glb. constant
πŸ”—x.max() T Returns lub. constant
πŸ”—x == y bool This operator is an equivalence relation. Returns true if x.param() == y.param() and , where and are the infinite sequences of values that would be generated, respectively, by repeated future calls to x(g1) and y(g2) whenever g1 == g2. Otherwise returns false. constant
πŸ”—x != y bool !(x == y). same as x == y.

Table 129 β€” Cpp17Clock requirements [tab:time.clock]

πŸ”—Expression Return type Operational semantics
πŸ”—C1​::​rep An arithmetic type or a class emulating an arithmetic type The representation type of C1​::​duration.
πŸ”—C1​::​period a specialization of ratio The tick period of the clock in seconds.
πŸ”—C1​::​duration chrono​::​duration<C1​::​rep, C1​::​period> The duration type of the clock.
πŸ”—C1​::​time_point chrono​::​time_point<C1> or chrono​::​time_point<C2, C1​::​duration> The time_point type of the clock. C1 and C2 shall refer to the same epoch.
πŸ”—C1​::​is_steady const bool true if t1 <= t2 is always true and the time between clock ticks is constant, otherwise false.
πŸ”—C1​::​now() C1​::​time_point Returns a time_point object representing the current point in time.

Table 130 β€” Examples for fractional_width [tab:time.hms.width]

πŸ”—Duration fractional_width Formatted fractional second output
πŸ”—hours, minutes, and seconds 0
πŸ”—milliseconds 3 0.001
πŸ”—microseconds 6 0.000001
πŸ”—nanoseconds 9 0.000000001
πŸ”—duration<int, ratio<1, 2>> 1 0.5
πŸ”—duration<int, ratio<1, 3>> 6 0.333333
πŸ”—duration<int, ratio<1, 4>> 2 0.25
πŸ”—duration<int, ratio<1, 5>> 1 0.2
πŸ”—duration<int, ratio<1, 6>> 6 0.166666
πŸ”—duration<int, ratio<1, 7>> 6 0.142857
πŸ”—duration<int, ratio<1, 8>> 3 0.125
πŸ”—duration<int, ratio<1, 9>> 6 0.111111
πŸ”—duration<int, ratio<1, 10>> 1 0.1
πŸ”—duration<int, ratio<756, 625>> 4 0.2096

Table 131 β€” Meaning of conversion specifiers [tab:time.format.spec]

πŸ”—Specifier Replacement
πŸ”—%a The locale's abbreviated weekday name. If the value does not contain a valid weekday, an exception of type format_error is thrown.
πŸ”—%A The locale's full weekday name. If the value does not contain a valid weekday, an exception of type format_error is thrown.
πŸ”—%b The locale's abbreviated month name. If the value does not contain a valid month, an exception of type format_error is thrown.
πŸ”—%B The locale's full month name. If the value does not contain a valid month, an exception of type format_error is thrown.
πŸ”—%c The locale's date and time representation. The modified command %Ec produces the locale's alternate date and time representation.
πŸ”—%C The year divided by 100 using floored division. If the result is a single decimal digit, it is prefixed with 0. The modified command %EC produces the locale's alternative representation of the century.
πŸ”—%d The day of month as a decimal number. If the result is a single decimal digit, it is prefixed with 0. The modified command %Od produces the locale's alternative representation.
πŸ”—%D Equivalent to %m/%d/%y.
πŸ”—%e The day of month as a decimal number. If the result is a single decimal digit, it is prefixed with a space. The modified command %Oe produces the locale's alternative representation.
πŸ”—%F Equivalent to %Y-%m-%d.
πŸ”—%g The last two decimal digits of the calendar year as specified in ISO 8601-1:2019 for the week calendar. If the result is a single digit it is prefixed by 0.
πŸ”—%G The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits it is left-padded with 0 to four digits.
πŸ”—%h Equivalent to %b.
πŸ”—%H The hour (24-hour clock) as a decimal number. If the result is a single digit, it is prefixed with 0. The modified command %OH produces the locale's alternative representation.
πŸ”—%I The hour (12-hour clock) as a decimal number. If the result is a single digit, it is prefixed with 0. The modified command %OI produces the locale's alternative representation.
πŸ”—%j If the type being formatted is a specialization of duration, the decimal number of days without padding. Otherwise, the day of the year as a decimal number. January 1 is 001. If the result is less than three digits, it is left-padded with 0 to three digits.
πŸ”—%m The month as a decimal number. Jan is 01. If the result is a single digit, it is prefixed with 0. The modified command %Om produces the locale's alternative representation.
πŸ”—%M The minute as a decimal number. If the result is a single digit, it is prefixed with 0. The modified command %OM produces the locale's alternative representation.
πŸ”—%n A new-line character.
πŸ”—%p The locale's equivalent of the AM/PM designations associated with a 12-hour clock.
πŸ”—%q The duration's unit suffix as specified in [time.duration.io].
πŸ”—%Q The duration's numeric value (as if extracted via .count()).
πŸ”—%r The locale's 12-hour clock time.
πŸ”—%R Equivalent to %H:%M.
πŸ”—%S Seconds as a decimal number. If the number of seconds is less than 10, the result is prefixed with 0. If the precision of the input cannot be exactly represented with seconds, then the format is a decimal floating-point number with a fixed format and a precision matching that of the precision of the input (or to a microseconds precision if the conversion to floating-point decimal seconds cannot be made within 18 fractional digits). The character for the decimal point is localized according to the locale. The modified command %OS produces the locale's alternative representation.
πŸ”—%t A horizontal-tab character.
πŸ”—%T Equivalent to %H:%M:%S.
πŸ”—%u The calendar day of week as a decimal number (1-7), as specified in ISO 8601-1:2019, where Monday is 1. The modified command %Ou produces the locale's alternative representation.
πŸ”—%U The week number of the year as a decimal number. The first Sunday of the year is the first day of week 01. Days of the same year prior to that are in week 00. If the result is a single digit, it is prefixed with 0. The modified command %OU produces the locale's alternative representation.
πŸ”—%V The calendar week of year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is a single digit, it is prefixed with 0. The modified command %OV produces the locale's alternative representation.
πŸ”—%w The weekday as a decimal number (0-6), where Sunday is 0. The modified command %Ow produces the locale's alternative representation.
πŸ”—%W The week number of the year as a decimal number. The first Monday of the year is the first day of week 01. Days of the same year prior to that are in week 00. If the result is a single digit, it is prefixed with 0. The modified command %OW produces the locale's alternative representation.
πŸ”—%x The locale's date representation. The modified command %Ex produces the locale's alternate date representation.
πŸ”—%X The locale's time representation. The modified command %EX produces the locale's alternate time representation.
πŸ”—%y The last two decimal digits of the year. If the result is a single digit it is prefixed by 0. The modified command %Oy produces the locale's alternative representation. The modified command %Ey produces the locale's alternative representation of offset from %EC (year only).
πŸ”—%Y The year as a decimal number. If the result is less than four digits it is left-padded with 0 to four digits. The modified command %EY produces the locale's alternative full year representation.
πŸ”—%z The offset from UTC as specified in ISO 8601-1:2019, 5.3.4.1. For example -0430 refers to 4 hours 30 minutes behind UTC. If the offset is zero, +0000 is used. The modified commands %Ez and %Ozinsert a : between the hours and minutes: -04:30. If the offset information is not available, an exception of type format_error is thrown.
πŸ”—%Z The time zone abbreviation. If the time zone abbreviation is not available, an exception of type format_error is thrown.
πŸ”—%% A % character.

Table 132 β€” Meaning of parse flags [tab:time.parse.spec]

πŸ”—Flag Parsed value
πŸ”—%a The locale's full or abbreviated case-insensitive weekday name.
πŸ”—%A Equivalent to %a.
πŸ”—%b The locale's full or abbreviated case-insensitive month name.
πŸ”—%B Equivalent to %b.
πŸ”—%c The locale's date and time representation. The modified command %Ec interprets the locale's alternate date and time representation.
πŸ”—%C The century as a decimal number. The modified command %_N_C specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %EC interprets the locale's alternative representation of the century.
πŸ”—%d The day of the month as a decimal number. The modified command %_N_d specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %Od interprets the locale's alternative representation of the day of the month.
πŸ”—%D Equivalent to %m/%d/%y.
πŸ”—%e Equivalent to %d and can be modified like %d.
πŸ”—%F Equivalent to %Y-%m-%d. If modified with a width N, the width is applied to only %Y.
πŸ”—%g The last two decimal digits of the calendar year, as specified in ISO 8601-1:2019 for the week calendar. The modified command %_N_g specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required.
πŸ”—%G The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. The modified command %_N_G specifies the maximum number of characters to read. If N is not specified, the default is 4. Leading zeroes are permitted but not required.
πŸ”—%h Equivalent to %b.
πŸ”—%H The hour (24-hour clock) as a decimal number. The modified command %_N_H specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %OH interprets the locale's alternative representation.
πŸ”—%I The hour (12-hour clock) as a decimal number. The modified command %_N_I specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %OIinterprets the locale's alternative representation.
πŸ”—%j If the type being parsed is a specialization of duration, a decimal number of days. Otherwise, the day of the year as a decimal number. January 1 is 1. In either case, the modified command %_N_j specifies the maximum number of characters to read. If N is not specified, the default is 3. Leading zeroes are permitted but not required.
πŸ”—%m The month as a decimal number. January is 1. The modified command %_N_m specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %Om interprets the locale's alternative representation.
πŸ”—%M The minutes as a decimal number. The modified command %_N_M specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %OM interprets the locale's alternative representation.
πŸ”—%n Matches one whitespace character. [Note 1: %n, %t, and a space can be combined to match a wide range of whitespace patterns. For example,"%n " matches one or more whitespace characters, and"%n%t%t" matches one to three whitespace characters. β€” _end note_]
πŸ”—%p The locale's equivalent of the AM/PM designations associated with a 12-hour clock.
πŸ”—%r The locale's 12-hour clock time.
πŸ”—%R Equivalent to %H:%M.
πŸ”—%S The seconds as a decimal number. The modified command %_N_S specifies the maximum number of characters to read. If N is not specified, the default is 2 if the input time has a precision convertible to seconds. Otherwise the default width is determined by the decimal precision of the input and the field is interpreted as a long double in a fixed format. If encountered, the locale determines the decimal point character. Leading zeroes are permitted but not required. The modified command %OS interprets the locale's alternative representation.
πŸ”—%t Matches zero or one whitespace characters.
πŸ”—%T Equivalent to %H:%M:%S.
πŸ”—%u The calendar day of week as a decimal number (1-7), as specified in ISO 8601-1:2019, where Monday is 1. The modified command %_N_u specifies the maximum number of characters to read. If N is not specified, the default is 1. Leading zeroes are permitted but not required.
πŸ”—%U The week number of the year as a decimal number. The first Sunday of the year is the first day of week 01. Days of the same year prior to that are in week 00. The modified command %_N_U specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %OU interprets the locale's alternative representation.
πŸ”—%V The calendar week of year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. The modified command %_N_V specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required.
πŸ”—%w The weekday as a decimal number (0-6), where Sunday is 0. The modified command %_N_w specifies the maximum number of characters to read. If N is not specified, the default is 1. Leading zeroes are permitted but not required. The modified command %Ow interprets the locale's alternative representation.
πŸ”—%W The week number of the year as a decimal number. The first Monday of the year is the first day of week 01. Days of the same year prior to that are in week 00. The modified command %_N_W specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified command %OW interprets the locale's alternative representation.
πŸ”—%x The locale's date representation. The modified command %Ex interprets the locale's alternate date representation.
πŸ”—%X The locale's time representation. The modified command %EX interprets the locale's alternate time representation.
πŸ”—%y The last two decimal digits of the year. If the century is not otherwise specified (e.g., with %C), values in the range [69, 99] are presumed to refer to the years 1969 to 1999, and values in the range [00, 68] are presumed to refer to the years 2000 to 2068. The modified command %_N_y specifies the maximum number of characters to read. If N is not specified, the default is 2. Leading zeroes are permitted but not required. The modified commands %Ey and %Oy interpret the locale's alternative representation.
πŸ”—%Y The year as a decimal number. The modified command %_N_Y specifies the maximum number of characters to read. If N is not specified, the default is 4. Leading zeroes are permitted but not required. The modified command %EY interprets the locale's alternative representation.
πŸ”—%z The offset from UTC in the format [+|-]hh[mm]. For example -0430 refers to 4 hours 30 minutes behind UTC, and 04 refers to 4 hours ahead of UTC. The modified commands %Ez and %Ozparse a : between the hours and minutes and render leading zeroes on the hour field optional:[+
πŸ”—%Z The time zone abbreviation or name. A single word is parsed. This word can only contain characters from the basic character set ([lex.charset]) that are alphanumeric, or one of'_', '/', '-', or '+'.
πŸ”—%% A % character is extracted.

Table 134 β€” fmtflags effects [tab:ios.fmtflags]

πŸ”—Element Effect(s) if set
πŸ”—boolalpha insert and extract bool type in alphabetic format
πŸ”—dec converts integer input or generates integer output in decimal base
πŸ”—fixed generate floating-point output in fixed-point notation
πŸ”—hex converts integer input or generates integer output in hexadecimal base
πŸ”—internal adds fill characters at a designated internal point in certain generated output, or identical to right if no such point is designated
πŸ”—left adds fill characters on the right (final positions) of certain generated output
πŸ”—oct converts integer input or generates integer output in octal base
πŸ”—right adds fill characters on the left (initial positions) of certain generated output
πŸ”—scientific generates floating-point output in scientific notation
πŸ”—showbase generates a prefix indicating the numeric base of generated integer output
πŸ”—showpoint generates a decimal-point character unconditionally in generated floating-point output
πŸ”—showpos generates a + sign in non-negative generated numeric output
πŸ”—skipws skips leading whitespace before certain input operations
πŸ”—unitbuf flushes output after each output operation
πŸ”—uppercase replaces certain lowercase letters with their uppercase equivalents in generated output

Table 136 β€” iostate effects [tab:ios.iostate]

indicates a loss of integrity in an input or output sequence (such as an irrecoverable read error from a file);
indicates that an input operation reached the end of an input sequence;
indicates that an input operation failed to read the expected characters, or that an output operation failed to generate the desired characters.

Table 137 β€” openmode effects [tab:ios.openmode]

πŸ”—Element Effect(s) if set
πŸ”—app seek to end before each write
πŸ”—ate open and seek to end immediately after opening
πŸ”—binary perform input and output in binary mode (as opposed to text mode)
πŸ”—in open for input
πŸ”—noreplace open in exclusive mode
πŸ”—out open for output
πŸ”—trunc truncate an existing stream when opening

Table 138 β€” seekdir effects [tab:ios.seekdir]

request a seek (for subsequent input or output) relative to the beginning of the stream
request a seek relative to the current position within the sequence
request a seek relative to the current end of the sequence

Table 139 β€” Position type requirements [tab:fpos.operations]

πŸ”—Expression Return type Operational Assertion/note
πŸ”— semantics pre-/post-condition
πŸ”—P(o) P converts from offset Effects: Value-initializes the state object.
πŸ”—P p(o);P p = o; Effects: Value-initializes the state object. Postconditions: p == P(o) is true.
πŸ”—P() P P(0)
πŸ”—P p; P p(0);
πŸ”—O(p) streamoff converts to offset P(O(p)) == p
πŸ”—p == q bool Remarks: For any two values o and o2, if p is obtained from o converted to P or from a copy of such P value and if q is obtained from o2 converted to P or from a copy of such P value, then p == q is true only if o == o2 is true.
πŸ”—p != q bool !(p == q)
πŸ”—p + o P + offset Remarks: With ql = p + o;, then: ql - o == p
πŸ”—pl += o P& += offset Remarks: With ql = pl; before the +=, then:pl - o == ql
πŸ”—p - o P - offset Remarks: With ql = p - o;, then: ql + o == p
πŸ”—pl -= o P& -= offset Remarks: With ql = pl; before the -=, then:pl + o == ql
πŸ”—o + p convertible to P p + o P(o + p) == p + o
πŸ”—p - q streamoff distance p == q + (p - q)

Table 140 β€” basic_ios​::​init() effects [tab:basic.ios.cons]

πŸ”—Element Value
πŸ”—rdbuf() sb
πŸ”—tie() 0
πŸ”—rdstate() goodbit if sb is not a null pointer, otherwise badbit.
πŸ”—exceptions() goodbit
πŸ”—flags() skipws | dec
πŸ”—width() 0
πŸ”—precision() 6
πŸ”—fill() widen(' ')
πŸ”—getloc() a copy of the value returned by locale()
πŸ”—iarray a null pointer
πŸ”—parray a null pointer

Table 141 β€” basic_ios​::​copyfmt() effects [tab:basic.ios.copyfmt]

πŸ”—Element Value
πŸ”—rdbuf() unchanged
πŸ”—tie() rhs.tie()
πŸ”—rdstate() unchanged
πŸ”—exceptions() rhs.exceptions()
πŸ”—flags() rhs.flags()
πŸ”—width() rhs.width()
πŸ”—precision() rhs.precision()
πŸ”—fill() rhs.fill()
πŸ”—getloc() rhs.getloc()

Table 142 β€” seekoff positioning [tab:stringbuf.seekoff.pos]

ios_base​::​in is set in which positions the input sequence
ios_base​::​out is set in which positions the output sequence
both ios_base​::​in and ios_base​::​out are set in which and eitherway == ios_base​::​beg orway == ios_base​::​end positions both the input and the output sequences
the positioning operation fails.

Table 143 β€” newoff values [tab:stringbuf.seekoff.newoff]

the next pointer minus the beginning pointer (xnext - xbeg).
the high mark pointer minus the beginning pointer (high_mark - xbeg).

Table 144 β€” File open modes [tab:filebuf.open.modes]

πŸ”—ios_base flag combination stdio equivalent
πŸ”—binary in out trunc app noreplace
πŸ”— + "w"
πŸ”— + + "wx"
πŸ”— + + "w"
πŸ”— + + + "wx"
πŸ”— + + "a"
πŸ”— + "a"
πŸ”— + "r"
πŸ”— + + "r+"
πŸ”— + + + "w+"
πŸ”— + + + + "w+x"
πŸ”— + + + "a+"
πŸ”— + + "a+"
πŸ”—+ + "wb"
πŸ”—+ + + "wbx"
πŸ”—+ + + "wb"
πŸ”—+ + + + "wbx"
πŸ”—+ + + "ab"
πŸ”—+ + "ab"
πŸ”—+ + "rb"
πŸ”—+ + + "r+b"
πŸ”—+ + + + "w+b"
πŸ”—+ + + + + "w+bx"
πŸ”—+ + + + "a+b"
πŸ”—+ + + "a+b"

Table 146 β€” Enum path​::​format [tab:fs.enum.path.format]

The native pathname format.
The generic pathname format.
The interpretation of the format of the character sequence isimplementation-defined. The implementation may inspect the content of the character sequence to determine the format.Recommended practice: For POSIX-based systems, native and generic formats are equivalent and the character sequence should always be interpreted in the same way.

Table 147 β€” Enum class file_type [tab:fs.enum.file.type]

πŸ”—Constant Meaning
πŸ”—none The type of the file has not been determined or an error occurred while trying to determine the type.
πŸ”—not_found Pseudo-type indicating the file was not found. [Note 1: The file not being found is not considered an error while determining the type of a file. β€” _end note_]
πŸ”—regular Regular file
πŸ”—directory Directory file
πŸ”—symlink Symbolic link file
πŸ”—block Block special file
πŸ”—character Character special file
πŸ”—fifo FIFO or pipe file
πŸ”—socket Socket file
πŸ”—implementation-defined Implementations that support file systems having file types in addition to the above file_type types shall supplyimplementation-definedfile_type constants to separately identify each of those additional file types
πŸ”—unknown The file exists but the type cannot be determined

Table 148 β€” Enum class copy_options [tab:fs.enum.copy.opts]

πŸ”—Option group controlling copy_file function effects for existing target files
πŸ”—Constant Meaning
πŸ”—none (Default) Error; file already exists.
πŸ”—skip_existing Do not overwrite existing file, do not report an error.
πŸ”—overwrite_existing Overwrite the existing file.
πŸ”—update_existing Overwrite the existing file if it is older than the replacement file.
πŸ”—Option group controlling copy function effects for subdirectories
πŸ”—Constant Meaning
πŸ”—none (Default) Do not copy subdirectories.
πŸ”—recursive Recursively copy subdirectories and their contents.
πŸ”—Option group controlling copy function effects for symbolic links
πŸ”—Constant Meaning
πŸ”—none (Default) Follow symbolic links.
πŸ”—copy_symlinks Copy symbolic links as symbolic links rather than copying the files that they point to.
πŸ”—skip_symlinks Ignore symbolic links.
πŸ”—Option group controlling copy function effects for choosing the form of copying
πŸ”—Constant Meaning
πŸ”—none (Default) Copy content.
πŸ”—directories_only Copy directory structure only, do not copy non-directory files.
πŸ”—create_symlinks Make symbolic links instead of copies of files. The source path shall be an absolute path unless the destination path is in the current directory.
πŸ”—create_hard_links Make hard links instead of copies of files.

Table 149 β€” Enum class perms [tab:fs.enum.perms]

πŸ”—Name Value POSIX Definition or notes
πŸ”— (octal) macro
πŸ”—none 0 There are no permissions set for the file.
πŸ”—owner_read 0400 S_IRUSR Read permission, owner
πŸ”—owner_write 0200 S_IWUSR Write permission, owner
πŸ”—owner_exec 0100 S_IXUSR Execute/search permission, owner
πŸ”—owner_all 0700 S_IRWXU Read, write, execute/search by owner;owner_read | owner_write owner_exec
πŸ”—group_read 040 S_IRGRP Read permission, group
πŸ”—group_write 020 S_IWGRP Write permission, group
πŸ”—group_exec 010 S_IXGRP Execute/search permission, group
πŸ”—group_all 070 S_IRWXG Read, write, execute/search by group;group_read | group_write group_exec
πŸ”—others_read 04 S_IROTH Read permission, others
πŸ”—others_write 02 S_IWOTH Write permission, others
πŸ”—others_exec 01 S_IXOTH Execute/search permission, others
πŸ”—others_all 07 S_IRWXO Read, write, execute/search by others;others_read | others_write others_exec
πŸ”—all 0777 owner_all | group_all others_all
πŸ”—set_uid 04000 S_ISUID Set-user-ID on execution
πŸ”—set_gid 02000 S_ISGID Set-group-ID on execution
πŸ”—sticky_bit 01000 S_ISVTX Operating system dependent.
πŸ”—mask 07777 all | set_uid set_gid sticky_bit
πŸ”—unknown 0xFFFF The permissions are not known, such as when a file_status object is created without specifying the permissions

Table 150 β€” Enum class perm_options [tab:fs.enum.perm.opts]

permissions shall replace the file's permission bits with perm
permissions shall replace the file's permission bits with the bitwise or of perm and the file's current permission bits.
permissions shall replace the file's permission bits with the bitwise and of the complement of perm and the file's current permission bits.
permissions shall change the permissions of a symbolic link itself rather than the permissions of the file the link resolves to.

Table 153 β€” Atomic arithmetic computations [tab:atomic.types.int.comp]

πŸ”—key Op Computation key Op Computation
πŸ”—add + addition and & bitwise and
πŸ”—sub - subtraction or | bitwise inclusive or
πŸ”—max maximum xor ^ bitwise exclusive or
πŸ”—min minimum

Table 156 β€” Types of customization point objects in the execution control library [tab:exec.pos]

πŸ”—Customization point Purpose Examples
πŸ”—object type
πŸ”—core provide core execution functionality, and connection between core components e.g., connect, start
πŸ”—completion functions called by senders to announce the completion of the work (success, error, or cancellation) set_value, set_error, set_stopped
πŸ”—senders allow the specialization of the provided sender algorithms sender factories (e.g., schedule, just, read_env)sender adaptors (e.g., continues_on, then, let_value)sender consumers (e.g., sync_wait)
πŸ”—queries allow querying different properties of objects general queries (e.g., get_allocator, get_stop_token)environment queries (e.g., get_scheduler, get_delegation_scheduler)scheduler queries (e.g., get_forward_progress_guarantee)sender attribute queries (e.g., get_completion_scheduler)