From Jason Turner

[intro.defs]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp0ghpxrh8/{from.md → to.md} +336 -79
tmp/tmp0ghpxrh8/{from.md → to.md} RENAMED
@@ -1,199 +1,446 @@
1
  # Terms and definitions <a id="intro.defs">[[intro.defs]]</a>
2
 
3
  For the purposes of this document, the terms and definitions given in
4
- ISO/IEC 2382-1:1993, the terms, definitions, and symbols given in ISO
5
  80000-2:2009, and the following apply.
6
 
7
- ISO and IEC maintain terminological databases for use in standardization
8
- at the following addresses:
9
 
10
  - ISO Online browsing platform: available at <https://www.iso.org/obp>
11
- - IEC Electropedia: available at <http://www.electropedia.org/>
12
-
13
- [[definitions]] defines additional terms that are used only in
14
- [[library]] through [[thread]] and [[depr]].
15
 
16
  Terms that are used only in a small portion of this document are defined
17
  where they are used and italicized where they are defined.
18
 
19
  #### 1 access <a id="defns.access">[[defns.access]]</a>
20
 
21
- ⟨execution-time action⟩ read [[conv.lval]] or modify ([[expr.ass]],
22
- [[expr.post.incr]], [[expr.pre.incr]]) the value of an object
23
 
24
- [*Note 1 to entry*: Only objects of scalar type can be accessed.
25
- Attempts to read or modify an object of class type typically invoke a
26
- constructor [[class.ctor]] or assignment operator [[class.copy.assign]];
27
- such invocations do not themselves constitute accesses, although they
28
- may involve accesses of scalar subobjects. *end note*]
 
 
 
29
 
30
- #### 2 argument <a id="defns.argument">[[defns.argument]]</a>
 
 
 
 
 
 
 
 
31
 
32
  ⟨function call expression⟩ expression in the comma-separated list
33
- bounded by the parentheses [[expr.call]]
34
 
35
- #### 3 argument <a id="defns.argument.macro">[[defns.argument.macro]]</a>
36
 
37
  ⟨function-like macro⟩ sequence of preprocessing tokens in the
38
- comma-separated list bounded by the parentheses [[cpp.replace]]
39
 
40
- #### 4 argument <a id="defns.argument.throw">[[defns.argument.throw]]</a>
41
 
42
- ⟨throw expression⟩ operand of `throw` [[expr.throw]]
43
 
44
- #### 5 argument <a id="defns.argument.templ">[[defns.argument.templ]]</a>
45
 
46
  ⟨template instantiation⟩ *constant-expression*, *type-id*, or
47
  *id-expression* in the comma-separated list bounded by the angle
48
- brackets [[temp.arg]]
49
 
50
- #### 6 block <a id="defns.block">[[defns.block]]</a>
51
 
52
  ⟨execution⟩ wait for some condition (other than for the implementation
53
  to execute the execution steps of the thread of execution) to be
54
  satisfied before continuing execution past the blocking operation
55
 
56
- #### 7 block <a id="defns.block.stmt">[[defns.block.stmt]]</a>
57
 
58
- ⟨statement⟩ compound statement [[stmt.block]]
59
 
60
- #### 8 conditionally-supported <a id="defns.cond.supp">[[defns.cond.supp]]</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  program construct that an implementation is not required to support
63
 
64
  [*Note 1 to entry*: Each implementation documents all
65
  conditionally-supported constructs that it does not
66
  support. — *end note*]
67
 
68
- #### 9 diagnostic message <a id="defns.diagnostic">[[defns.diagnostic]]</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  message belonging to an *implementation-defined* subset of the
71
  implementation’s output messages
72
 
73
- #### 10 dynamic type <a id="defns.dynamic.type">[[defns.dynamic.type]]</a>
74
 
75
- ⟨glvalue⟩ type of the most derived object [[intro.object]] to which the
76
- glvalue refers
 
 
 
77
 
78
  [*Example 1*: If a pointer [[dcl.ptr]] `p` whose static type is
79
  “pointer to class `B`” is pointing to an object of class `D`, derived
80
  from `B` [[class.derived]], the dynamic type of the expression `*p` is
81
  “`D`”. References [[dcl.ref]] are treated similarly. — *end example*]
82
 
83
- #### 11 dynamic type <a id="defns.dynamic.type.prvalue">[[defns.dynamic.type.prvalue]]</a>
84
 
85
  ⟨prvalue⟩ static type of the prvalue expression
86
 
87
- #### 12 ill-formed program <a id="defns.ill.formed">[[defns.ill.formed]]</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
 
89
  program that is not well-formed [[defns.well.formed]]
90
 
91
- #### 13 implementation-defined behavior <a id="defns.impl.defined">[[defns.impl.defined]]</a>
92
 
93
  behavior, for a well-formed program construct and correct data, that
94
  depends on the implementation and that each implementation documents
95
 
96
- #### 14 implementation limits <a id="defns.impl.limits">[[defns.impl.limits]]</a>
 
 
 
 
 
 
97
 
98
  restrictions imposed upon programs by the implementation
99
 
100
- #### 15 locale-specific behavior <a id="defns.locale.specific">[[defns.locale.specific]]</a>
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  behavior that depends on local conventions of nationality, culture, and
103
  language that each implementation documents
104
 
105
- #### 16 multibyte character <a id="defns.multibyte">[[defns.multibyte]]</a>
106
 
107
- sequence of one or more bytes representing a member of the extended
108
- character set of either the source or the execution environment
109
 
110
- [*Note 1 to entry*: The extended character set is a superset of the
111
- basic character set [[lex.charset]]. — *end note*]
112
 
113
- #### 17 parameter <a id="defns.parameter">[[defns.parameter]]</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  ⟨function or catch clause⟩ object or reference declared as part of a
116
  function declaration or definition or in the catch clause of an
117
  exception handler that acquires a value on entry to the function or
118
  handler
119
 
120
- #### 18 parameter <a id="defns.parameter.macro">[[defns.parameter.macro]]</a>
121
 
122
  ⟨function-like macro⟩ identifier from the comma-separated list bounded
123
  by the parentheses immediately following the macro name
124
 
125
- #### 19 parameter <a id="defns.parameter.templ">[[defns.parameter.templ]]</a>
126
 
127
  ⟨template⟩ member of a *template-parameter-list*
128
 
129
- #### 20 signature <a id="defns.signature">[[defns.signature]]</a>
130
 
131
- functionname, parameter-type-list [[dcl.fct]], and enclosing
132
- namespace (if any)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
 
134
  [*Note 1 to entry*: Signatures are used as a basis for name mangling
135
  and linking. — *end note*]
136
 
137
- #### 21 signature <a id="defns.signature.friend">[[defns.signature.friend]]</a>
138
 
139
  ⟨non-template friend function with trailing *requires-clause*⟩ name,
140
- parameter-type-list [[dcl.fct]], enclosing class, and trailing
141
- *requires-clause* [[dcl.decl]]
142
 
143
- #### 22 signature <a id="defns.signature.templ">[[defns.signature.templ]]</a>
144
 
145
- ⟨function template⟩ name, parameter-type-list [[dcl.fct]], enclosing
146
- namespace (if any), return type, *template-head*, and trailing
147
- *requires-clause* [[dcl.decl]] (if any)
148
 
149
- #### 23 signature <a id="defns.signature.templ.friend">[[defns.signature.templ.friend]]</a>
150
 
151
  ⟨friend function template with constraint involving enclosing template parameters⟩
152
- name, parameter-type-list [[dcl.fct]], return type, enclosing class,
153
- *template-head*, and trailing *requires-clause* [[dcl.decl]] (if any)
154
 
155
- #### 24 signature <a id="defns.signature.spec">[[defns.signature.spec]]</a>
156
 
157
  ⟨function template specialization⟩ signature of the template of which it
158
  is a specialization and its template arguments (whether explicitly
159
  specified or deduced)
160
 
161
- #### 25 signature <a id="defns.signature.member">[[defns.signature.member]]</a>
162
 
163
- ⟨class member function⟩ name, parameter-type-list [[dcl.fct]], class of
 
 
 
 
 
 
164
  which the function is a member, cv-qualifiers (if any), *ref-qualifier*
165
- (if any), and trailing *requires-clause* [[dcl.decl]] (if any)
 
166
 
167
- #### 26 signature <a id="defns.signature.member.templ">[[defns.signature.member.templ]]</a>
168
-
169
- ⟨class member function template⟩ name, parameter-type-list [[dcl.fct]],
170
- class of which the function is a member, cv-qualifiers (if any),
171
- *ref-qualifier* (if any), return type (if any), *template-head*, and
172
- trailing *requires-clause* [[dcl.decl]] (if any)
173
-
174
- #### 27 signature <a id="defns.signature.member.spec">[[defns.signature.member.spec]]</a>
175
 
176
  ⟨class member function template specialization⟩ signature of the member
177
  function template of which it is a specialization and its template
178
  arguments (whether explicitly specified or deduced)
179
 
180
- #### 28 static type <a id="defns.static.type">[[defns.static.type]]</a>
181
 
182
- type of an expression [[basic.types]] resulting from analysis of the
183
- program without considering execution semantics
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  [*Note 1 to entry*: The static type of an expression depends only on
186
  the form of the program in which the expression appears, and does not
187
  change while the program is executing. — *end note*]
188
 
189
- #### 29 unblock <a id="defns.unblock">[[defns.unblock]]</a>
 
 
 
 
 
 
 
 
 
 
 
190
 
191
  satisfy a condition that one or more blocked threads of execution are
192
  waiting for
193
 
194
- #### 30 undefined behavior <a id="defns.undefined">[[defns.undefined]]</a>
195
 
196
  behavior for which this document imposes no requirements
197
 
198
  [*Note 1 to entry*: Undefined behavior may be expected when this
199
  document omits any explicit definition of behavior or when a program
@@ -203,22 +450,32 @@ unpredictable results, to behaving during translation or program
203
  execution in a documented manner characteristic of the environment (with
204
  or without the issuance of a diagnostic message), to terminating a
205
  translation or execution (with the issuance of a diagnostic message).
206
  Many erroneous program constructs do not engender undefined behavior;
207
  they are required to be diagnosed. Evaluation of a constant expression
208
- never exhibits behavior explicitly specified as undefined in [[intro]]
209
- through [[cpp]] of this document [[expr.const]]. — *end note*]
210
 
211
- #### 31 unspecified behavior <a id="defns.unspecified">[[defns.unspecified]]</a>
212
 
213
  behavior, for a well-formed program construct and correct data, that
214
  depends on the implementation
215
 
216
  [*Note 1 to entry*: The implementation is not required to document
217
  which behavior occurs. The range of possible behaviors is usually
218
  delineated by this document. — *end note*]
219
 
220
- #### 32 well-formed program <a id="defns.well.formed">[[defns.well.formed]]</a>
221
 
222
- C++ program constructed according to the syntax rules, diagnosable
223
- semantic rules, and the one-definition rule [[basic.def.odr]]
 
 
 
 
 
 
 
 
 
 
224
 
 
1
  # Terms and definitions <a id="intro.defs">[[intro.defs]]</a>
2
 
3
  For the purposes of this document, the terms and definitions given in
4
+ ISO/IEC 2382, the terms, definitions, and symbols given in ISO
5
  80000-2:2009, and the following apply.
6
 
7
+ ISO and IEC maintain terminology databases for use in standardization at
8
+ the following addresses:
9
 
10
  - ISO Online browsing platform: available at <https://www.iso.org/obp>
11
+ - IEC Electropedia: available at <https://www.electropedia.org/>
 
 
 
12
 
13
  Terms that are used only in a small portion of this document are defined
14
  where they are used and italicized where they are defined.
15
 
16
  #### 1 access <a id="defns.access">[[defns.access]]</a>
17
 
18
+ ⟨execution-time action⟩ read or modify the value of an object
 
19
 
20
+ [*Note 1 to entry*: Only glvalues of scalar type can be used to access
21
+ objects. Reads of scalar objects are described in [[conv.lval]] and
22
+ modifications of scalar objects are described in [[expr.ass]],
23
+ [[expr.post.incr]], and [[expr.pre.incr]]. Attempts to read or modify an
24
+ object of class type typically invoke a constructor [[class.ctor]] or
25
+ assignment operator [[class.copy.assign]]; such invocations do not
26
+ themselves constitute accesses, although they may involve accesses of
27
+ scalar subobjects. — *end note*]
28
 
29
+ #### 2 arbitrary-positional stream <a id="defns.arbitrary.stream">[[defns.arbitrary.stream]]</a>
30
+
31
+ ⟨library⟩ stream that can seek to any integral position within the
32
+ length of the stream
33
+
34
+ [*Note 1 to entry*: Every arbitrary-positional stream is also a
35
+ repositional stream [[defns.repositional.stream]]. — *end note*]
36
+
37
+ #### 3 argument <a id="defns.argument">[[defns.argument]]</a>
38
 
39
  ⟨function call expression⟩ expression in the comma-separated list
40
+ bounded by the parentheses
41
 
42
+ #### 4 argument <a id="defns.argument.macro">[[defns.argument.macro]]</a>
43
 
44
  ⟨function-like macro⟩ sequence of preprocessing tokens in the
45
+ comma-separated list bounded by the parentheses
46
 
47
+ #### 5 argument <a id="defns.argument.throw">[[defns.argument.throw]]</a>
48
 
49
+ ⟨throw expression⟩ operand of `throw`
50
 
51
+ #### 6 argument <a id="defns.argument.templ">[[defns.argument.templ]]</a>
52
 
53
  ⟨template instantiation⟩ *constant-expression*, *type-id*, or
54
  *id-expression* in the comma-separated list bounded by the angle
55
+ brackets
56
 
57
+ #### 7 block <a id="defns.block">[[defns.block]]</a>
58
 
59
  ⟨execution⟩ wait for some condition (other than for the implementation
60
  to execute the execution steps of the thread of execution) to be
61
  satisfied before continuing execution past the blocking operation
62
 
63
+ #### 8 block <a id="defns.block.stmt">[[defns.block.stmt]]</a>
64
 
65
+ ⟨statement⟩ compound statement
66
 
67
+ #### 9 character <a id="defns.character">[[defns.character]]</a>
68
+
69
+ ⟨library⟩ object which, when treated sequentially, can represent text
70
+
71
+ [*Note 1 to entry*: The term does not mean only `char`, `char8_t`,
72
+ `char16_t`, `char32_t`, and `wchar_t` objects [[basic.fundamental]], but
73
+ any value that can be represented by a type that provides the
74
+ definitions specified in [[strings]], [[localization]],
75
+ [[input.output]], or  [[re]]. — *end note*]
76
+
77
+ #### 10 character container type <a id="defns.character.container">[[defns.character.container]]</a>
78
+
79
+ ⟨library⟩ class or a type used to represent a character
80
+
81
+ [*Note 1 to entry*: It is used for one of the template parameters of
82
+ the string, iostream, and regular expression class
83
+ templates. — *end note*]
84
+
85
+ #### 11 collating element <a id="defns.regex.collating.element">[[defns.regex.collating.element]]</a>
86
+
87
+ sequence of one or more characters within the current locale that
88
+ collate as if they were a single character
89
+
90
+ #### 12 component <a id="defns.component">[[defns.component]]</a>
91
+
92
+ ⟨library⟩ group of library entities directly related as members,
93
+ parameters, or return types
94
+
95
+ [*Note 1 to entry*: For example, the class template `basic_string` and
96
+ the non-member function templates that operate on strings are referred
97
+ to as the *string component*. — *end note*]
98
+
99
+ #### 13 conditionally-supported <a id="defns.cond.supp">[[defns.cond.supp]]</a>
100
 
101
  program construct that an implementation is not required to support
102
 
103
  [*Note 1 to entry*: Each implementation documents all
104
  conditionally-supported constructs that it does not
105
  support. — *end note*]
106
 
107
+ #### 14 constant subexpression <a id="defns.const.subexpr">[[defns.const.subexpr]]</a>
108
+
109
+ expression whose evaluation as subexpression of a
110
+ *conditional-expression* `CE` would not prevent `CE` from being a core
111
+ constant expression
112
+
113
+ #### 15 deadlock <a id="defns.deadlock">[[defns.deadlock]]</a>
114
+
115
+ ⟨library⟩ situation wherein one or more threads are unable to continue
116
+ execution because each is blocked waiting for one or more of the others
117
+ to satisfy some condition
118
+
119
+ #### 16 default behavior <a id="defns.default.behavior.impl">[[defns.default.behavior.impl]]</a>
120
+
121
+ ⟨library implementation⟩ specific behavior provided by the
122
+ implementation, within the scope of the required behavior
123
+
124
+ #### 17 diagnostic message <a id="defns.diagnostic">[[defns.diagnostic]]</a>
125
 
126
  message belonging to an *implementation-defined* subset of the
127
  implementation’s output messages
128
 
129
+ #### 18 direct-non-list-initialization <a id="defns.direct.non.list.init">[[defns.direct.non.list.init]]</a>
130
 
131
+ direct-initialization that is not list-initialization
132
+
133
+ #### 19 dynamic type <a id="defns.dynamic.type">[[defns.dynamic.type]]</a>
134
+
135
+ ⟨glvalue⟩ type of the most derived object to which the glvalue refers
136
 
137
  [*Example 1*: If a pointer [[dcl.ptr]] `p` whose static type is
138
  “pointer to class `B`” is pointing to an object of class `D`, derived
139
  from `B` [[class.derived]], the dynamic type of the expression `*p` is
140
  “`D`”. References [[dcl.ref]] are treated similarly. — *end example*]
141
 
142
+ #### 20 dynamic type <a id="defns.dynamic.type.prvalue">[[defns.dynamic.type.prvalue]]</a>
143
 
144
  ⟨prvalue⟩ static type of the prvalue expression
145
 
146
+ #### 21 expression-equivalent <a id="defns.expression.equivalent">[[defns.expression.equivalent]]</a>
147
+
148
+ ⟨library⟩ expressions that all have the same effects, either are all
149
+ potentially-throwing or are all not potentially-throwing, and either are
150
+ all constant subexpressions or are all not constant subexpressions
151
+
152
+ [*Example 1*: For a value `x` of type `int` and a function `f` that
153
+ accepts integer arguments, the expressions `f(x + 2)`, `f(2 + x)`, and
154
+ `f(1 + x + 1)` are expression-equivalent. — *end example*]
155
+
156
+ #### 22 finite state machine <a id="defns.regex.finite.state.machine">[[defns.regex.finite.state.machine]]</a>
157
+
158
+ ⟨regular expression⟩ unspecified data structure that is used to
159
+ represent a regular expression, and which permits efficient matches
160
+ against the regular expression to be obtained
161
+
162
+ #### 23 format specifier <a id="defns.regex.format.specifier">[[defns.regex.format.specifier]]</a>
163
+
164
+ ⟨regular expression⟩ sequence of one or more characters that is to be
165
+ replaced with some part of a regular expression match
166
+
167
+ #### 24 handler function <a id="defns.handler">[[defns.handler]]</a>
168
+
169
+ ⟨library⟩ non-reserved function whose definition may be provided by a
170
+ C++ program
171
+
172
+ [*Note 1 to entry*: A C++ program may designate a handler function at
173
+ various points in its execution by supplying a pointer to the function
174
+ when calling any of the library functions that install handler functions
175
+ [[support]]. — *end note*]
176
+
177
+ #### 25 ill-formed program <a id="defns.ill.formed">[[defns.ill.formed]]</a>
178
 
179
  program that is not well-formed [[defns.well.formed]]
180
 
181
+ #### 26 implementation-defined behavior <a id="defns.impl.defined">[[defns.impl.defined]]</a>
182
 
183
  behavior, for a well-formed program construct and correct data, that
184
  depends on the implementation and that each implementation documents
185
 
186
+ #### 27 implementation-defined strict total order over pointers <a id="defns.order.ptr">[[defns.order.ptr]]</a>
187
+
188
+ ⟨library⟩ *implementation-defined* strict total ordering over all
189
+ pointer values such that the ordering is consistent with the partial
190
+ order imposed by the builtin operators `<`, `>`, `<=`, `>=`, and `<=>`
191
+
192
+ #### 28 implementation limits <a id="defns.impl.limits">[[defns.impl.limits]]</a>
193
 
194
  restrictions imposed upon programs by the implementation
195
 
196
+ #### 29 iostream class templates <a id="defns.iostream.templates">[[defns.iostream.templates]]</a>
197
+
198
+ ⟨library⟩ templates that are declared in header `<iosfwd>` and take two
199
+ template arguments
200
+
201
+ [*Note 1 to entry*: The arguments are named `charT` and `traits`. The
202
+ argument `charT` is a character container class, and the argument
203
+ `traits` is a class which defines additional characteristics and
204
+ functions of the character type represented by `charT` necessary to
205
+ implement the iostream class templates. — *end note*]
206
+
207
+ #### 30 locale-specific behavior <a id="defns.locale.specific">[[defns.locale.specific]]</a>
208
 
209
  behavior that depends on local conventions of nationality, culture, and
210
  language that each implementation documents
211
 
212
+ #### 31 matched <a id="defns.regex.matched">[[defns.regex.matched]]</a>
213
 
214
+ ⟨regular expression⟩ condition when a sequence of zero or more
215
+ characters correspond to a sequence of characters defined by the pattern
216
 
217
+ #### 32 modifier function <a id="defns.modifier">[[defns.modifier]]</a>
 
218
 
219
+ ⟨library⟩ class member function other than a constructor, assignment
220
+ operator, or destructor that alters the state of an object of the class
221
+
222
+ #### 33 move assignment <a id="defns.move.assign">[[defns.move.assign]]</a>
223
+
224
+ ⟨library⟩ assignment of an rvalue of some object type to a modifiable
225
+ lvalue of the same type
226
+
227
+ #### 34 move construction <a id="defns.move.constr">[[defns.move.constr]]</a>
228
+
229
+ ⟨library⟩ direct-initialization of an object of some type with an rvalue
230
+ of the same type
231
+
232
+ #### 35 non-constant library call <a id="defns.nonconst.libcall">[[defns.nonconst.libcall]]</a>
233
+
234
+ invocation of a library function that, as part of evaluating any
235
+ expression `E`, prevents `E` from being a core constant expression
236
+
237
+ #### 36 NTCTS <a id="defns.ntcts">[[defns.ntcts]]</a>
238
+
239
+ ⟨library⟩ sequence of values that have character type that precede the
240
+ terminating null character type value `charT()`
241
+
242
+ #### 37 observer function <a id="defns.observer">[[defns.observer]]</a>
243
+
244
+ ⟨library⟩ class member function that accesses the state of an object of
245
+ the class but does not alter that state
246
+
247
+ [*Note 1 to entry*: Observer functions are specified as `const` member
248
+ functions. — *end note*]
249
+
250
+ #### 38 parameter <a id="defns.parameter">[[defns.parameter]]</a>
251
 
252
  ⟨function or catch clause⟩ object or reference declared as part of a
253
  function declaration or definition or in the catch clause of an
254
  exception handler that acquires a value on entry to the function or
255
  handler
256
 
257
+ #### 39 parameter <a id="defns.parameter.macro">[[defns.parameter.macro]]</a>
258
 
259
  ⟨function-like macro⟩ identifier from the comma-separated list bounded
260
  by the parentheses immediately following the macro name
261
 
262
+ #### 40 parameter <a id="defns.parameter.templ">[[defns.parameter.templ]]</a>
263
 
264
  ⟨template⟩ member of a *template-parameter-list*
265
 
266
+ #### 41 primary equivalence class <a id="defns.regex.primary.equivalence.class">[[defns.regex.primary.equivalence.class]]</a>
267
 
268
+ regular expressionset of one or more characters which share the same
269
+ primary sort key: that is the sort key weighting that depends only upon
270
+ character shape, and not accents, case, or locale specific tailorings
271
+
272
+ #### 42 program-defined specialization <a id="defns.prog.def.spec">[[defns.prog.def.spec]]</a>
273
+
274
+ ⟨library⟩ explicit template specialization or partial specialization
275
+ that is not part of the C++ standard library and not defined by the
276
+ implementation
277
+
278
+ #### 43 program-defined type <a id="defns.prog.def.type">[[defns.prog.def.type]]</a>
279
+
280
+ ⟨library⟩ non-closure class type or enumeration type that is not part of
281
+ the C++ standard library and not defined by the implementation, or a
282
+ closure type of a non-implementation-provided lambda expression, or an
283
+ instantiation of a program-defined specialization
284
+
285
+ [*Note 1 to entry*: Types defined by the implementation include
286
+ extensions [[intro.compliance]] and internal types used by the
287
+ library. — *end note*]
288
+
289
+ #### 44 projection <a id="defns.projection">[[defns.projection]]</a>
290
+
291
+ ⟨library⟩ transformation that an algorithm applies before inspecting the
292
+ values of elements
293
+
294
+ [*Example 1*:
295
+
296
+ ``` cpp
297
+ std::pair<int, std::string_view> pairs[] = {{2, "foo"}, {1, "bar"}, {0, "baz"}};
298
+ std::ranges::sort(pairs, std::ranges::less{}, [](auto const& p) { return p.first; });
299
+ ```
300
+
301
+ sorts the pairs in increasing order of their `first` members:
302
+
303
+ ``` cpp
304
+ {{0, "baz"}, {1, "bar"}, {2, "foo"}}
305
+ ```
306
+
307
+ — *end example*]
308
+
309
+ #### 45 referenceable type <a id="defns.referenceable">[[defns.referenceable]]</a>
310
+
311
+ type that is either an object type, a function type that does not have
312
+ cv-qualifiers or a *ref-qualifier*, or a reference type
313
+
314
+ [*Note 1 to entry*: The term describes a type to which a reference can
315
+ be created, including reference types. — *end note*]
316
+
317
+ #### 46 regular expression <a id="defns.regex.regular.expression">[[defns.regex.regular.expression]]</a>
318
+
319
+ pattern that selects specific strings from a set of character strings
320
+
321
+ #### 47 replacement function <a id="defns.replacement">[[defns.replacement]]</a>
322
+
323
+ ⟨library⟩ non-reserved function whose definition is provided by a C++
324
+ program
325
+
326
+ [*Note 1 to entry*: Only one definition for such a function is in
327
+ effect for the duration of the program’s execution, as the result of
328
+ creating the program [[lex.phases]] and resolving the definitions of all
329
+ translation units [[basic.link]]. — *end note*]
330
+
331
+ #### 48 repositional stream <a id="defns.repositional.stream">[[defns.repositional.stream]]</a>
332
+
333
+ ⟨library⟩ stream that can seek to a position that was previously
334
+ encountered
335
+
336
+ #### 49 required behavior <a id="defns.required.behavior">[[defns.required.behavior]]</a>
337
+
338
+ ⟨library⟩ description of replacement function and handler function
339
+ semantics applicable to both the behavior provided by the implementation
340
+ and the behavior of any such function definition in the program
341
+
342
+ [*Note 1 to entry*: If such a function defined in a C++ program fails
343
+ to meet the required behavior when it executes, the behavior is
344
+ undefined. — *end note*]
345
+
346
+ #### 50 reserved function <a id="defns.reserved.function">[[defns.reserved.function]]</a>
347
+
348
+ ⟨library⟩ function, specified as part of the C++ standard library, that
349
+ is defined by the implementation
350
+
351
+ [*Note 1 to entry*: If a C++ program provides a definition for any
352
+ reserved function, the results are undefined. — *end note*]
353
+
354
+ #### 51 signature <a id="defns.signature">[[defns.signature]]</a>
355
+
356
+ ⟨function⟩ name, parameter-type-list, and enclosing namespace
357
 
358
  [*Note 1 to entry*: Signatures are used as a basis for name mangling
359
  and linking. — *end note*]
360
 
361
+ #### 52 signature <a id="defns.signature.friend">[[defns.signature.friend]]</a>
362
 
363
  ⟨non-template friend function with trailing *requires-clause*⟩ name,
364
+ parameter-type-list, enclosing class, and trailing *requires-clause*
 
365
 
366
+ #### 53 signature <a id="defns.signature.templ">[[defns.signature.templ]]</a>
367
 
368
+ ⟨function template⟩ name, parameter-type-list, enclosing namespace,
369
+ return type, signature of the *template-head*, and trailing
370
+ *requires-clause* (if any)
371
 
372
+ #### 54 signature <a id="defns.signature.templ.friend">[[defns.signature.templ.friend]]</a>
373
 
374
  ⟨friend function template with constraint involving enclosing template parameters⟩
375
+ name, parameter-type-list, return type, enclosing class, signature of
376
+ the *template-head*, and trailing *requires-clause* (if any)
377
 
378
+ #### 55 signature <a id="defns.signature.spec">[[defns.signature.spec]]</a>
379
 
380
  ⟨function template specialization⟩ signature of the template of which it
381
  is a specialization and its template arguments (whether explicitly
382
  specified or deduced)
383
 
384
+ #### 56 signature <a id="defns.signature.member">[[defns.signature.member]]</a>
385
 
386
+ ⟨class member function⟩ name, parameter-type-list, class of which the
387
+ function is a member, cv-qualifiers (if any), *ref-qualifier* (if any),
388
+ and trailing *requires-clause* (if any)
389
+
390
+ #### 57 signature <a id="defns.signature.member.templ">[[defns.signature.member.templ]]</a>
391
+
392
+ ⟨class member function template⟩ name, parameter-type-list, class of
393
  which the function is a member, cv-qualifiers (if any), *ref-qualifier*
394
+ (if any), return type (if any), signature of the *template-head*, and
395
+ trailing *requires-clause* (if any)
396
 
397
+ #### 58 signature <a id="defns.signature.member.spec">[[defns.signature.member.spec]]</a>
 
 
 
 
 
 
 
398
 
399
  ⟨class member function template specialization⟩ signature of the member
400
  function template of which it is a specialization and its template
401
  arguments (whether explicitly specified or deduced)
402
 
403
+ #### 59 signature <a id="defns.signature.template.head">[[defns.signature.template.head]]</a>
404
 
405
+ ⟨*template-head*⟩ template parameter list, excluding template parameter
406
+ names and default arguments, and *requires-clause* (if any)
407
+
408
+ #### 60 stable algorithm <a id="defns.stable">[[defns.stable]]</a>
409
+
410
+ ⟨library⟩ algorithm that preserves, as appropriate to the particular
411
+ algorithm, the order of elements
412
+
413
+ [*Note 1 to entry*: Requirements for stable algorithms are given in
414
+ [[algorithm.stable]]. — *end note*]
415
+
416
+ #### 61 static type <a id="defns.static.type">[[defns.static.type]]</a>
417
+
418
+ type of an expression resulting from analysis of the program without
419
+ considering execution semantics
420
 
421
  [*Note 1 to entry*: The static type of an expression depends only on
422
  the form of the program in which the expression appears, and does not
423
  change while the program is executing. — *end note*]
424
 
425
+ #### 62 sub-expression <a id="defns.regex.subexpression">[[defns.regex.subexpression]]</a>
426
+
427
+ ⟨regular expression⟩ subset of a regular expression that has been marked
428
+ by parentheses
429
+
430
+ #### 63 traits class <a id="defns.traits">[[defns.traits]]</a>
431
+
432
+ ⟨library⟩ class that encapsulates a set of types and functions necessary
433
+ for class templates and function templates to manipulate objects of
434
+ types for which they are instantiated
435
+
436
+ #### 64 unblock <a id="defns.unblock">[[defns.unblock]]</a>
437
 
438
  satisfy a condition that one or more blocked threads of execution are
439
  waiting for
440
 
441
+ #### 65 undefined behavior <a id="defns.undefined">[[defns.undefined]]</a>
442
 
443
  behavior for which this document imposes no requirements
444
 
445
  [*Note 1 to entry*: Undefined behavior may be expected when this
446
  document omits any explicit definition of behavior or when a program
 
450
  execution in a documented manner characteristic of the environment (with
451
  or without the issuance of a diagnostic message), to terminating a
452
  translation or execution (with the issuance of a diagnostic message).
453
  Many erroneous program constructs do not engender undefined behavior;
454
  they are required to be diagnosed. Evaluation of a constant expression
455
+ [[expr.const]] never exhibits behavior explicitly specified as undefined
456
+ in [[intro]] through [[cpp]]. — *end note*]
457
 
458
+ #### 66 unspecified behavior <a id="defns.unspecified">[[defns.unspecified]]</a>
459
 
460
  behavior, for a well-formed program construct and correct data, that
461
  depends on the implementation
462
 
463
  [*Note 1 to entry*: The implementation is not required to document
464
  which behavior occurs. The range of possible behaviors is usually
465
  delineated by this document. — *end note*]
466
 
467
+ #### 67 valid but unspecified state <a id="defns.valid">[[defns.valid]]</a>
468
 
469
+ ⟨library⟩ value of an object that is not specified except that the
470
+ object’s invariants are met and operations on the object behave as
471
+ specified for its type
472
+
473
+ [*Example 1*: If an object `x` of type `std::vector<int>` is in a valid
474
+ but unspecified state, `x.empty()` can be called unconditionally, and
475
+ `x.front()` can be called only if `x.empty()` returns
476
+ `false`. — *end example*]
477
+
478
+ #### 68 well-formed program <a id="defns.well.formed">[[defns.well.formed]]</a>
479
+
480
+ C++ program constructed according to the syntax and semantic rules
481