From Jason Turner

[definitions]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp648zem_n/{from.md → to.md} +180 -75
tmp/tmp648zem_n/{from.md → to.md} RENAMED
@@ -1,131 +1,236 @@
1
  ## Definitions <a id="definitions">[[definitions]]</a>
2
 
3
- [*Note 1*: Clause [[intro.defs]] defines additional terms used
4
- elsewhere in this International Standard. — *end note*]
5
 
6
- a stream (described in Clause  [[input.output]]) that can seek to any
7
- integral position within the length of the stream
8
 
9
- [*Note 2*: Every arbitrary-positional stream is also a repositional
10
- stream. *end note*]
11
 
12
- \defncontext{Clauses~ [[strings]], [[localization]], [[input.output]], and~ [[re]]}
13
- any object which, when treated sequentially, can represent text
14
 
15
- [*Note 3*: The term does not mean only `char`, `char16_t`, `char32_t`,
16
- and `wchar_t` objects, but any value that can be represented by a type
17
- that provides the definitions specified in these Clauses. — *end note*]
18
 
19
- a class or a type used to represent a *character*
 
20
 
21
- [*Note 4*: It is used for one of the template parameters of the string,
22
- iostream, and regular expression class templates. A character container
23
- type is a POD ([[basic.types]]) type. *end note*]
 
24
 
25
- an operator function ([[over.oper]]) for any of the equality (
26
- [[expr.eq]]) or relational ([[expr.rel]]) operators
27
 
28
- a group of library entities directly related as members, parameters, or
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  return types
30
 
31
- [*Note 5*: For example, the class template `basic_string` and the
32
- non-member function templates that operate on strings are referred to as
33
- the *string component*. — *end note*]
34
 
35
- an expression whose evaluation as subexpression of a
36
- *conditional-expression* `CE` ([[expr.cond]]) would not prevent `CE`
37
- from being a core constant expression ([[expr.const]])
38
 
39
- one or more threads are unable to continue execution because each is
40
- blocked waiting for one or more of the others to satisfy some condition
 
41
 
42
- any specific behavior provided by the implementation, within the scope
43
- of the *required behavior*
44
 
45
- a description of *replacement function* and *handler function* semantics
 
 
46
 
47
- a direct-initialization ([[dcl.init]]) that is not
48
- list-initialization ([[dcl.init.list]])
49
 
50
- a *non-reserved function* whose definition may be provided by a
51
- C++program
52
 
53
- [*Note 6*: A C++program may designate a handler function at various
54
- points in its execution by supplying a pointer to the function when
55
- calling any of the library functions that install handler functions
56
- (Clause  [[language.support]]). — *end note*]
57
 
58
- templates, defined in Clause  [[input.output]], that take two template
59
- arguments
60
 
61
- [*Note 7*: The arguments are named `charT` and `traits`. The argument
62
- `charT` is a character container class, and the argument `traits` is a
63
- class which defines additional characteristics and functions of the
64
- character type represented by `charT` necessary to implement the
65
- iostream class templates. — *end note*]
66
 
67
- a class member function ([[class.mfct]]) other than a constructor,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  assignment operator, or destructor that alters the state of an object of
69
  the class
70
 
 
 
71
  assignment of an rvalue of some object type to a modifiable lvalue of
72
  the same type
73
 
 
 
74
  direct-initialization of an object of some type with an rvalue of the
75
  same type
76
 
77
- a sequence of values that have *character type* that precede the
78
- terminating null character type value `charT()`
79
 
80
- a class member function ([[class.mfct]]) that accesses the state of an
 
 
 
 
 
81
  object of the class but does not alter that state
82
 
83
- [*Note 8*: Observer functions are specified as `const` member
84
- functions ([[class.this]]). — *end note*]
85
 
86
- an object type, a function type that does not have cv-qualifiers or a
87
- *ref-qualifier*, or a reference type
88
 
89
- [*Note 9*: The term describes a type to which a reference can be
90
- created, including reference types. *end note*]
91
 
92
- a *non-reserved function* whose definition is provided by a C++program
93
 
94
- [*Note 10*: Only one definition for such a function is in effect for
95
- the duration of the program’s execution, as the result of creating the
96
- program ([[lex.phases]]) and resolving the definitions of all
97
- translation units ([[basic.link]]). *end note*]
98
 
99
- a stream (described in Clause  [[input.output]]) that can seek to a
100
- position that was previously encountered
 
101
 
102
- a description of *replacement function* and *handler function* semantics
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  applicable to both the behavior provided by the implementation and the
104
  behavior of any such function definition in the program
105
 
106
- [*Note 11*: If such a function defined in a C++program fails to meet
107
- the required behavior when it executes, the behavior is undefined.
108
- — *end note*]
109
 
110
- a function, specified as part of the C++standard library, that must be
111
- defined by the implementation
112
 
113
- [*Note 12*: If a C++program provides a definition for any reserved
114
- function, the results are undefined. — *end note*]
115
 
116
- an algorithm that preserves, as appropriate to the particular algorithm,
 
 
 
 
 
117
  the order of elements
118
 
119
- [*Note 13*: Requirements for stable algorithms are given in 
120
  [[algorithm.stable]]. — *end note*]
121
 
122
- a class that encapsulates a set of types and functions necessary for
123
- class templates and function templates to manipulate objects of types
124
- for which they are instantiated
125
 
126
- a value of an object that is not specified except that the object’s
 
 
 
 
 
 
127
  invariants are met and operations on the object behave as specified for
128
  its type
129
 
130
  [*Example 1*: If an object `x` of type `std::vector<int>` is in a valid
131
  but unspecified state, `x.empty()` can be called unconditionally, and
 
1
  ## Definitions <a id="definitions">[[definitions]]</a>
2
 
3
+ [*Note 1*: [[intro.defs]] defines additional terms used elsewhere in
4
+ this document. — *end note*]
5
 
6
+ #### 1 arbitrary-positional stream <a id="defns.arbitrary.stream">[[defns.arbitrary.stream]]</a>
 
7
 
8
+ stream (described in [[input.output]]) that can seek to any integral
9
+ position within the length of the stream
10
 
11
+ [*Note 1 to entry*: Every arbitrary-positional stream is also a
12
+ repositional stream. *end note*]
13
 
14
+ #### 2 character <a id="defns.character">[[defns.character]]</a>
 
 
15
 
16
+ ⟨[[strings]], [[localization]], [[input.output]], and~ [[re]]⟩
17
+ object which, when treated sequentially, can represent text
18
 
19
+ [*Note 1 to entry*: The term does not mean only `char`, `char8_t`,
20
+ `char16_t`, `char32_t`, and `wchar_t` objects, but any value that can be
21
+ represented by a type that provides the definitions specified in these
22
+ Clauses. — *end note*]
23
 
24
+ #### 3 character container type <a id="defns.character.container">[[defns.character.container]]</a>
 
25
 
26
+ class or a type used to represent a character
27
+
28
+ [*Note 1 to entry*: It is used for one of the template parameters of
29
+ the string, iostream, and regular expression class
30
+ templates. — *end note*]
31
+
32
+ #### 4 comparison function <a id="defns.comparison">[[defns.comparison]]</a>
33
+
34
+ operator function [[over.oper]] for any of the equality [[expr.eq]],
35
+ relational [[expr.rel]], or three-way comparison [[expr.spaceship]]
36
+ operators
37
+
38
+ #### 5 component <a id="defns.component">[[defns.component]]</a>
39
+
40
+ group of library entities directly related as members, parameters, or
41
  return types
42
 
43
+ [*Note 1 to entry*: For example, the class template `basic_string` and
44
+ the non-member function templates that operate on strings are referred
45
+ to as the *string component*. — *end note*]
46
 
47
+ #### 6 constant subexpression <a id="defns.const.subexpr">[[defns.const.subexpr]]</a>
 
 
48
 
49
+ expression whose evaluation as subexpression of a
50
+ *conditional-expression* `CE` [[expr.cond]] would not prevent `CE` from
51
+ being a core constant expression [[expr.const]]
52
 
53
+ #### 7 deadlock <a id="defns.deadlock">[[defns.deadlock]]</a>
 
54
 
55
+ situation wherein one or more threads are unable to continue execution
56
+ because each is blocked waiting for one or more of the others to satisfy
57
+ some condition
58
 
59
+ #### 8 default behavior <a id="defns.default.behavior.impl">[[defns.default.behavior.impl]]</a>
 
60
 
61
+ ⟨implementation⟩ specific behavior provided by the implementation,
62
+ within the scope of the required behavior
63
 
64
+ #### 9 default behavior <a id="defns.default.behavior.func">[[defns.default.behavior.func]]</a>
 
 
 
65
 
66
+ ⟨specification⟩ description of replacement function and handler function
67
+ semantics
68
 
69
+ #### 10 direct-non-list-initialization <a id="defns.direct-non-list-init">[[defns.direct-non-list-init]]</a>
 
 
 
 
70
 
71
+ direct-initialization [[dcl.init]] that is not list-initialization
72
+ [[dcl.init.list]]
73
+
74
+ #### 11 expression-equivalent <a id="defns.expression-equivalent">[[defns.expression-equivalent]]</a>
75
+
76
+ expressions that all have the same effects, either are all
77
+ potentially-throwing [[except.spec]] or are all not
78
+ potentially-throwing, and either are all constant subexpressions or are
79
+ all not constant subexpressions
80
+
81
+ [*Example 1*: For a value `x` of type `int` and a function `f` that
82
+ accepts integer arguments, the expressions `f(x + 2)`, `f(2 + x)`, and
83
+ `f(1 + x + 1)` are expression-equivalent. — *end example*]
84
+
85
+ #### 12 handler function <a id="defns.handler">[[defns.handler]]</a>
86
+
87
+ non-reserved function whose definition may be provided by a C++ program
88
+
89
+ [*Note 1 to entry*: A C++ program may designate a handler function at
90
+ various points in its execution by supplying a pointer to the function
91
+ when calling any of the library functions that install handler functions
92
+ [[support]]. — *end note*]
93
+
94
+ #### 13 implementation-defined strict total order over pointers <a id="defns.order.ptr">[[defns.order.ptr]]</a>
95
+
96
+ *implementation-defined* strict total ordering over all pointer values
97
+ such that the ordering is consistent with the partial order imposed by
98
+ the builtin operators `<`, `>`, `<=`, `>=`, and `<=>`
99
+
100
+ #### 14 iostream class templates <a id="defns.iostream.templates">[[defns.iostream.templates]]</a>
101
+
102
+ templates, defined in [[input.output]], that take two template arguments
103
+
104
+ [*Note 1 to entry*: The arguments are named `charT` and `traits`. The
105
+ argument `charT` is a character container class, and the argument
106
+ `traits` is a class which defines additional characteristics and
107
+ functions of the character type represented by `charT` necessary to
108
+ implement the iostream class templates. — *end note*]
109
+
110
+ #### 15 modifier function <a id="defns.modifier">[[defns.modifier]]</a>
111
+
112
+ class member function [[class.mfct]] other than a constructor,
113
  assignment operator, or destructor that alters the state of an object of
114
  the class
115
 
116
+ #### 16 move assignment <a id="defns.move.assign">[[defns.move.assign]]</a>
117
+
118
  assignment of an rvalue of some object type to a modifiable lvalue of
119
  the same type
120
 
121
+ #### 17 move construction <a id="defns.move.constr">[[defns.move.constr]]</a>
122
+
123
  direct-initialization of an object of some type with an rvalue of the
124
  same type
125
 
126
+ #### 18 NTCTS <a id="defns.ntcts">[[defns.ntcts]]</a>
 
127
 
128
+ sequence of values that have character type that precede the terminating
129
+ null character type value `charT()`
130
+
131
+ #### 19 observer function <a id="defns.observer">[[defns.observer]]</a>
132
+
133
+ class member function [[class.mfct]] that accesses the state of an
134
  object of the class but does not alter that state
135
 
136
+ [*Note 1 to entry*: Observer functions are specified as `const` member
137
+ functions [[class.this]]. — *end note*]
138
 
139
+ #### 20 program-defined specialization <a id="defns.prog.def.spec">[[defns.prog.def.spec]]</a>
 
140
 
141
+ explicit template specialization or partial specialization that is not
142
+ part of the C++ standard library and not defined by the implementation
143
 
144
+ #### 21 program-defined type <a id="defns.prog.def.type">[[defns.prog.def.type]]</a>
145
 
146
+ non-closure class type or enumeration type that is not part of the C++
147
+ standard library and not defined by the implementation, or a closure
148
+ type of a non-implementation-provided lambda expression, or an
149
+ instantiation of a program-defined specialization
150
 
151
+ [*Note 1 to entry*: Types defined by the implementation include
152
+ extensions [[intro.compliance]] and internal types used by the
153
+ library. — *end note*]
154
 
155
+ #### 22 projection <a id="defns.projection">[[defns.projection]]</a>
156
+
157
+ ⟨function object argument⟩ transformation that an algorithm applies
158
+ before inspecting the values of elements
159
+
160
+ [*Example 1*:
161
+
162
+ ``` cpp
163
+ std::pair<int, std::string_view> pairs[] = {{2, "foo"}, {1, "bar"}, {0, "baz"}};
164
+ std::ranges::sort(pairs, std::ranges::less{}, [](auto const& p) { return p.first; });
165
+ ```
166
+
167
+ sorts the pairs in increasing order of their `first` members:
168
+
169
+ ``` cpp
170
+ {{0, "baz"}, {1, "bar"}, {2, "foo"}}
171
+ ```
172
+
173
+ — *end example*]
174
+
175
+ #### 23 referenceable type <a id="defns.referenceable">[[defns.referenceable]]</a>
176
+
177
+ type that is either an object type, a function type that does not have
178
+ cv-qualifiers or a *ref-qualifier*, or a reference type
179
+
180
+ [*Note 1 to entry*: The term describes a type to which a reference can
181
+ be created, including reference types. — *end note*]
182
+
183
+ #### 24 replacement function <a id="defns.replacement">[[defns.replacement]]</a>
184
+
185
+ non-reserved function whose definition is provided by a C++ program
186
+
187
+ [*Note 1 to entry*: Only one definition for such a function is in
188
+ effect for the duration of the program’s execution, as the result of
189
+ creating the program [[lex.phases]] and resolving the definitions of all
190
+ translation units [[basic.link]]. — *end note*]
191
+
192
+ #### 25 repositional stream <a id="defns.repositional.stream">[[defns.repositional.stream]]</a>
193
+
194
+ stream (described in [[input.output]]) that can seek to a position that
195
+ was previously encountered
196
+
197
+ #### 26 required behavior <a id="defns.required.behavior">[[defns.required.behavior]]</a>
198
+
199
+ description of replacement function and handler function semantics
200
  applicable to both the behavior provided by the implementation and the
201
  behavior of any such function definition in the program
202
 
203
+ [*Note 1 to entry*: If such a function defined in a C++ program fails
204
+ to meet the required behavior when it executes, the behavior is
205
+ undefined. — *end note*]
206
 
207
+ #### 27 reserved function <a id="defns.reserved.function">[[defns.reserved.function]]</a>
 
208
 
209
+ function, specified as part of the C++ standard library, that is defined
210
+ by the implementation
211
 
212
+ [*Note 1 to entry*: If a C++ program provides a definition for any
213
+ reserved function, the results are undefined. — *end note*]
214
+
215
+ #### 28 stable algorithm <a id="defns.stable">[[defns.stable]]</a>
216
+
217
+ algorithm that preserves, as appropriate to the particular algorithm,
218
  the order of elements
219
 
220
+ [*Note 1 to entry*: Requirements for stable algorithms are given in
221
  [[algorithm.stable]]. — *end note*]
222
 
223
+ #### 29 traits class <a id="defns.traits">[[defns.traits]]</a>
 
 
224
 
225
+ class that encapsulates a set of types and functions necessary for class
226
+ templates and function templates to manipulate objects of types for
227
+ which they are instantiated
228
+
229
+ #### 30 valid but unspecified state <a id="defns.valid">[[defns.valid]]</a>
230
+
231
+ value of an object that is not specified except that the object’s
232
  invariants are met and operations on the object behave as specified for
233
  its type
234
 
235
  [*Example 1*: If an object `x` of type `std::vector<int>` is in a valid
236
  but unspecified state, `x.empty()` can be called unconditionally, and