From Jason Turner

[intro.defs]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpl_xn_1yb/{from.md → to.md} +142 -124
tmp/tmpl_xn_1yb/{from.md → to.md} RENAMED
@@ -1,71 +1,68 @@
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`,
@@ -74,147 +71,154 @@ 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
@@ -234,12 +238,13 @@ of the same type
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
@@ -263,13 +268,13 @@ by the parentheses immediately following the macro name
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 expression⟩ set 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
@@ -278,11 +283,12 @@ implementation
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
 
@@ -314,11 +320,12 @@ cv-qualifiers or a *ref-qualifier*, or a reference type
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
@@ -326,33 +333,37 @@ program
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
@@ -364,24 +375,26 @@ and linking. — *end note*]
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),
@@ -389,23 +402,26 @@ 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
@@ -422,45 +438,47 @@ considering execution semantics
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
447
- uses an erroneous construct or erroneous data. Permissible undefined
448
  behavior ranges from ignoring the situation completely with
449
  unpredictable results, to behaving during translation or 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
 
 
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, ISO 80000-2:2019, and the following apply.
 
5
 
6
  ISO and IEC maintain terminology databases for use in standardization at
7
  the following addresses:
8
 
9
  - ISO Online browsing platform: available at <https://www.iso.org/obp>
10
  - IEC Electropedia: available at <https://www.electropedia.org/>
11
 
 
 
 
12
  #### 1 access <a id="defns.access">[[defns.access]]</a>
13
 
14
  ⟨execution-time action⟩ read or modify the value of an object
15
 
16
+ [*Note 1 to entry*: Only glvalues of scalar type
17
+ [[basic.types.general]] can be used to access objects. Reads of scalar
18
+ objects are described in [[conv.lval]] and modifications of scalar
19
+ objects are described in [[expr.assign]], [[expr.post.incr]], and
20
+ [[expr.pre.incr]]. Attempts to read or modify an object of class type
21
+ typically invoke a constructor [[class.ctor]] or assignment operator
22
+ [[class.copy.assign]]; such invocations do not themselves constitute
23
+ accesses, although they may involve accesses of scalar
24
+ subobjects. — *end note*]
25
 
26
+ #### 2 argument <a id="defns.argument">[[defns.argument]]</a>
27
 
28
+ function call expression⟩ expression or *braced-init-list* in the
29
+ comma-separated list bounded by the parentheses
30
 
31
+ #### 3 argument <a id="defns.argument.macro">[[defns.argument.macro]]</a>
 
 
 
 
 
 
 
 
32
 
33
  ⟨function-like macro⟩ sequence of preprocessing tokens in the
34
  comma-separated list bounded by the parentheses
35
 
36
+ #### 4 argument <a id="defns.argument.throw">[[defns.argument.throw]]</a>
37
 
38
  ⟨throw expression⟩ operand of `throw`
39
 
40
+ #### 5 argument <a id="defns.argument.templ">[[defns.argument.templ]]</a>
41
 
42
  ⟨template instantiation⟩ *constant-expression*, *type-id*, or
43
  *id-expression* in the comma-separated list bounded by the angle
44
  brackets
45
 
46
+ #### 6 block <a id="defns.block">[[defns.block]]</a>
47
 
48
  ⟨execution⟩ wait for some condition (other than for the implementation
49
  to execute the execution steps of the thread of execution) to be
50
  satisfied before continuing execution past the blocking operation
51
 
52
+ #### 7 block <a id="defns.block.stmt">[[defns.block.stmt]]</a>
53
 
54
  ⟨statement⟩ compound statement
55
 
56
+ #### 8 C standard library <a id="defns.c.lib">[[defns.c.lib]]</a>
57
+
58
+ library described in ISO/IEC 9899:2018 (C), Clause 7
59
+
60
+ [*Note 1 to entry*: With the qualifications noted in [[support]]
61
+ through [[exec]] and in [[diff.library]], the C standard library is a
62
+ subset of the C++ standard library. — *end note*]
63
+
64
  #### 9 character <a id="defns.character">[[defns.character]]</a>
65
 
66
  ⟨library⟩ object which, when treated sequentially, can represent text
67
 
68
  [*Note 1 to entry*: The term does not mean only `char`, `char8_t`,
 
71
  definitions specified in [[strings]], [[localization]],
72
  [[input.output]], or  [[re]]. — *end note*]
73
 
74
  #### 10 character container type <a id="defns.character.container">[[defns.character.container]]</a>
75
 
76
+ ⟨library⟩ class or a type used to represent a
77
+ \termref{defns.character}{character}
78
 
79
  [*Note 1 to entry*: It is used for one of the template parameters of
80
+ `char_traits` and the class templates which use that, such as the
81
+ string, iostream, and regular expression class templates. — *end note*]
82
 
83
  #### 11 collating element <a id="defns.regex.collating.element">[[defns.regex.collating.element]]</a>
84
 
85
+ sequence of one or more within the current locale that collate as if
86
+ they were a single character
87
 
88
  #### 12 component <a id="defns.component">[[defns.component]]</a>
89
 
90
+ ⟨library⟩ group of library entities directly related as members, , or
91
+ return types
92
 
93
  [*Note 1 to entry*: For example, the class template `basic_string` and
94
  the non-member function templates that operate on strings are referred
95
+ to as the string component. — *end note*]
96
 
97
  #### 13 conditionally-supported <a id="defns.cond.supp">[[defns.cond.supp]]</a>
98
 
99
  program construct that an implementation is not required to support
100
 
101
  [*Note 1 to entry*: Each implementation documents all
102
  conditionally-supported constructs that it does not
103
  support. — *end note*]
104
 
105
+ #### 14 constant evaluation <a id="defns.const.eval">[[defns.const.eval]]</a>
106
+
107
+ evaluation that is performed as part of evaluating an expression as a
108
+ core constant expression [[expr.const]]
109
+
110
+ #### 15 constant subexpression <a id="defns.const.subexpr">[[defns.const.subexpr]]</a>
111
 
112
  expression whose evaluation as subexpression of a
113
  *conditional-expression* `CE` would not prevent `CE` from being a core
114
  constant expression
115
 
116
+ #### 16 deadlock <a id="defns.deadlock">[[defns.deadlock]]</a>
117
 
118
  ⟨library⟩ situation wherein one or more threads are unable to continue
119
+ execution because each is waiting for one or more of the others to
120
+ satisfy some condition
121
 
122
+ #### 17 default behavior <a id="defns.default.behavior.impl">[[defns.default.behavior.impl]]</a>
123
 
124
  ⟨library implementation⟩ specific behavior provided by the
125
+ implementation, within the scope of the
126
+ \termref{defns.required.behavior}{required behavior}
127
 
128
+ #### 18 diagnostic message <a id="defns.diagnostic">[[defns.diagnostic]]</a>
129
 
130
  message belonging to an *implementation-defined* subset of the
131
  implementation’s output messages
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 type is “pointer to
138
+ class `B`” is pointing to a base class subobject of class `B`, whose
139
+ most derived object is of class `D`, derived from `B` [[class.derived]],
140
+ the dynamic type of the expression `*p` is “`D`”. References [[dcl.ref]]
141
+ are treated similarly. — *end example*]
142
 
143
  #### 20 dynamic type <a id="defns.dynamic.type.prvalue">[[defns.dynamic.type.prvalue]]</a>
144
 
145
+ ⟨prvalue⟩ \termref{defns.static.type}{static type} of the prvalue
146
+ expression
147
 
148
+ #### 21 erroneous behavior <a id="defns.erroneous">[[defns.erroneous]]</a>
149
+
150
+ well-defined behavior that the implementation is recommended to diagnose
151
+
152
+ [*Note 1 to entry*: Erroneous behavior is always the consequence of
153
+ incorrect program code. Implementations are allowed, but not required,
154
+ to diagnose it [[intro.compliance.general]]. Evaluation of a constant
155
+ expression [[expr.const]] never exhibits behavior specified as erroneous
156
+ in [[intro]] through [[\lastcorechapter]]. — *end note*]
157
+
158
+ #### 22 expression-equivalent <a id="defns.expression.equivalent">[[defns.expression.equivalent]]</a>
159
 
160
  ⟨library⟩ expressions that all have the same effects, either are all
161
  potentially-throwing or are all not potentially-throwing, and either are
162
+ all or are all not constant subexpressions
163
 
164
  [*Example 1*: For a value `x` of type `int` and a function `f` that
165
  accepts integer arguments, the expressions `f(x + 2)`, `f(2 + x)`, and
166
  `f(1 + x + 1)` are expression-equivalent. — *end example*]
167
 
168
+ #### 23 finite state machine <a id="defns.regex.finite.state.machine">[[defns.regex.finite.state.machine]]</a>
169
 
170
  ⟨regular expression⟩ unspecified data structure that is used to
171
+ represent a
172
+ \termref{defns.regex.regular.expression}{regular expression}, and which
173
+ permits efficient matches against the regular expression to be obtained
174
 
175
+ #### 24 format specifier <a id="defns.regex.format.specifier">[[defns.regex.format.specifier]]</a>
176
 
177
+ ⟨regular expression⟩ sequence of one or more that is expected to be
178
+ replaced with some part of a
179
+ \termref{defns.regex.regular.expression}{regular expression} match
180
 
181
+ #### 25 handler function <a id="defns.handler">[[defns.handler]]</a>
182
 
183
  ⟨library⟩ non-reserved function whose definition may be provided by a
184
  C++ program
185
 
186
  [*Note 1 to entry*: A C++ program may designate a handler function at
187
  various points in its execution by supplying a pointer to the function
188
  when calling any of the library functions that install handler functions
189
+ (see [[support]]). — *end note*]
190
 
191
+ #### 26 ill-formed program <a id="defns.ill.formed">[[defns.ill.formed]]</a>
192
 
193
  program that is not well-formed [[defns.well.formed]]
194
 
195
+ #### 27 implementation-defined behavior <a id="defns.impl.defined">[[defns.impl.defined]]</a>
196
 
197
+ behavior, for a \termref{defns.well.formed}{well-formed program}
198
+ construct and correct data, that depends on the implementation and that
199
+ each implementation documents
200
 
201
+ #### 28 implementation-defined strict total order over pointers <a id="defns.order.ptr">[[defns.order.ptr]]</a>
202
 
203
  ⟨library⟩ *implementation-defined* strict total ordering over all
204
  pointer values such that the ordering is consistent with the partial
205
+ order imposed by the built-in operators `<`, `>`, `<=`, `>=`, and `<=>`
206
 
207
+ #### 29 implementation limit <a id="defns.impl.limits">[[defns.impl.limits]]</a>
208
 
209
+ restriction imposed upon programs by the implementation
 
 
 
 
 
 
 
 
 
 
 
210
 
211
  #### 30 locale-specific behavior <a id="defns.locale.specific">[[defns.locale.specific]]</a>
212
 
213
  behavior that depends on local conventions of nationality, culture, and
214
  language that each implementation documents
215
 
216
  #### 31 matched <a id="defns.regex.matched">[[defns.regex.matched]]</a>
217
 
218
  ⟨regular expression⟩ condition when a sequence of zero or more
219
+ correspond to a sequence of characters defined by the pattern
220
 
221
  #### 32 modifier function <a id="defns.modifier">[[defns.modifier]]</a>
222
 
223
  ⟨library⟩ class member function other than a constructor, assignment
224
  operator, or destructor that alters the state of an object of the class
 
238
  invocation of a library function that, as part of evaluating any
239
  expression `E`, prevents `E` from being a core constant expression
240
 
241
  #### 36 NTCTS <a id="defns.ntcts">[[defns.ntcts]]</a>
242
 
243
+ ⟨library⟩ sequence of values that have
244
+ \termref{defns.character}{character} type that precede the terminating
245
+ null character type value `charT()`
246
 
247
  #### 37 observer function <a id="defns.observer">[[defns.observer]]</a>
248
 
249
  ⟨library⟩ class member function that accesses the state of an object of
250
  the class but does not alter that state
 
268
 
269
  ⟨template⟩ member of a *template-parameter-list*
270
 
271
  #### 41 primary equivalence class <a id="defns.regex.primary.equivalence.class">[[defns.regex.primary.equivalence.class]]</a>
272
 
273
+ ⟨regular expression⟩ set of one or more which share the same primary
274
+ sort key: that is the sort key weighting that depends only upon
275
+ character shape, and not accents, case, or locale-specific tailorings
276
 
277
  #### 42 program-defined specialization <a id="defns.prog.def.spec">[[defns.prog.def.spec]]</a>
278
 
279
  ⟨library⟩ explicit template specialization or partial specialization
280
  that is not part of the C++ standard library and not defined by the
 
283
  #### 43 program-defined type <a id="defns.prog.def.type">[[defns.prog.def.type]]</a>
284
 
285
  ⟨library⟩ non-closure class type or enumeration type that is not part of
286
  the C++ standard library and not defined by the implementation, or a
287
  closure type of a non-implementation-provided lambda expression, or an
288
+ instantiation of a
289
+ \termref{defns.prog.def.spec}{program-defined specialization}
290
 
291
  [*Note 1 to entry*: Types defined by the implementation include
292
  extensions [[intro.compliance]] and internal types used by the
293
  library. — *end note*]
294
 
 
320
  [*Note 1 to entry*: The term describes a type to which a reference can
321
  be created, including reference types. — *end note*]
322
 
323
  #### 46 regular expression <a id="defns.regex.regular.expression">[[defns.regex.regular.expression]]</a>
324
 
325
+ pattern that selects specific strings from a set of
326
+ \termref{defns.character}{character} strings
327
 
328
  #### 47 replacement function <a id="defns.replacement">[[defns.replacement]]</a>
329
 
330
  ⟨library⟩ non-reserved function whose definition is provided by a C++
331
  program
 
333
  [*Note 1 to entry*: Only one definition for such a function is in
334
  effect for the duration of the program’s execution, as the result of
335
  creating the program [[lex.phases]] and resolving the definitions of all
336
  translation units [[basic.link]]. — *end note*]
337
 
338
+ #### 48 required behavior <a id="defns.required.behavior">[[defns.required.behavior]]</a>
339
 
340
+ ⟨library⟩ description of
341
+ \termref{defns.replacement}{replacement function} and
342
+ \termref{defns.handler}{handler function} semantics applicable to both
343
+ the behavior provided by the implementation and the behavior of any such
344
+ function definition in the program
 
 
 
345
 
346
  [*Note 1 to entry*: If such a function defined in a C++ program fails
347
  to meet the required behavior when it executes, the behavior is
348
  undefined. — *end note*]
349
 
350
+ #### 49 reserved function <a id="defns.reserved.function">[[defns.reserved.function]]</a>
351
 
352
  ⟨library⟩ function, specified as part of the C++ standard library, that
353
  is defined by the implementation
354
 
355
  [*Note 1 to entry*: If a C++ program provides a definition for any
356
  reserved function, the results are undefined. — *end note*]
357
 
358
+ #### 50 runtime-undefined behavior <a id="defns.undefined.runtime">[[defns.undefined.runtime]]</a>
359
+
360
+ behavior that is undefined except when it occurs during constant
361
+ evaluation
362
+
363
+ [*Note 1 to entry*: During constant evaluation, — *end note*]
364
+
365
  #### 51 signature <a id="defns.signature">[[defns.signature]]</a>
366
 
367
  ⟨function⟩ name, parameter-type-list, and enclosing namespace
368
 
369
  [*Note 1 to entry*: Signatures are used as a basis for name mangling
 
375
  parameter-type-list, enclosing class, and trailing *requires-clause*
376
 
377
  #### 53 signature <a id="defns.signature.templ">[[defns.signature.templ]]</a>
378
 
379
  ⟨function template⟩ name, parameter-type-list, enclosing namespace,
380
+ return type, \termref{defns.signature.template.head}{signature} of the
381
+ *template-head*, and trailing *requires-clause* (if any)
382
 
383
  #### 54 signature <a id="defns.signature.templ.friend">[[defns.signature.templ.friend]]</a>
384
 
385
  ⟨friend function template with constraint involving enclosing template parameters⟩
386
+ name, parameter-type-list, return type, enclosing class,
387
+ \termref{defns.signature.template.head}{signature} of the
388
+ *template-head*, and trailing *requires-clause* (if any)
389
 
390
  #### 55 signature <a id="defns.signature.spec">[[defns.signature.spec]]</a>
391
 
392
+ ⟨function template specialization⟩
393
+ \termref{defns.signature.templ}{signature} of the template of which it
394
+ is a specialization and its template (whether explicitly specified or
395
+ deduced)
396
 
397
  #### 56 signature <a id="defns.signature.member">[[defns.signature.member]]</a>
398
 
399
  ⟨class member function⟩ name, parameter-type-list, class of which the
400
  function is a member, cv-qualifiers (if any), *ref-qualifier* (if any),
 
402
 
403
  #### 57 signature <a id="defns.signature.member.templ">[[defns.signature.member.templ]]</a>
404
 
405
  ⟨class member function template⟩ name, parameter-type-list, class of
406
  which the function is a member, cv-qualifiers (if any), *ref-qualifier*
407
+ (if any), return type (if any),
408
+ \termref{defns.signature.template.head}{signature} of the
409
+ *template-head*, and trailing *requires-clause* (if any)
410
 
411
  #### 58 signature <a id="defns.signature.member.spec">[[defns.signature.member.spec]]</a>
412
 
413
+ ⟨class member function template specialization⟩
414
+ \termref{defns.signature.member.templ}{signature} of the member function
415
+ template of which it is a specialization and its template arguments
416
+ (whether explicitly specified or deduced)
417
 
418
  #### 59 signature <a id="defns.signature.template.head">[[defns.signature.template.head]]</a>
419
 
420
+ ⟨*template-head*⟩ template \termref{defns.parameter.templ}{parameter}
421
+ list, excluding template parameter names and default , and
422
+ *requires-clause* (if any)
423
 
424
  #### 60 stable algorithm <a id="defns.stable">[[defns.stable]]</a>
425
 
426
  ⟨library⟩ algorithm that preserves, as appropriate to the particular
427
  algorithm, the order of elements
 
438
  the form of the program in which the expression appears, and does not
439
  change while the program is executing. — *end note*]
440
 
441
  #### 62 sub-expression <a id="defns.regex.subexpression">[[defns.regex.subexpression]]</a>
442
 
443
+ ⟨regular expression⟩ subset of a
444
+ \termref{defns.regex.regular.expression}{regular expression} that has
445
+ been marked by parentheses
446
 
447
  #### 63 traits class <a id="defns.traits">[[defns.traits]]</a>
448
 
449
  ⟨library⟩ class that encapsulates a set of types and functions necessary
450
  for class templates and function templates to manipulate objects of
451
  types for which they are instantiated
452
 
453
  #### 64 unblock <a id="defns.unblock">[[defns.unblock]]</a>
454
 
455
+ satisfy a condition that one or more \termref{defns.block}{blocked}
456
+ threads of execution are waiting for
457
 
458
  #### 65 undefined behavior <a id="defns.undefined">[[defns.undefined]]</a>
459
 
460
  behavior for which this document imposes no requirements
461
 
462
  [*Note 1 to entry*: Undefined behavior may be expected when this
463
  document omits any explicit definition of behavior or when a program
464
+ uses an incorrect construct or invalid data. Permissible undefined
465
  behavior ranges from ignoring the situation completely with
466
  unpredictable results, to behaving during translation or program
467
  execution in a documented manner characteristic of the environment (with
468
+ or without the issuance of a
469
+ \termref{defns.diagnostic}{diagnostic message}), to terminating a
470
  translation or execution (with the issuance of a diagnostic message).
471
+ Many incorrect program constructs do not engender undefined behavior;
472
  they are required to be diagnosed. Evaluation of a constant expression
473
  [[expr.const]] never exhibits behavior explicitly specified as undefined
474
+ in [[intro]] through [[\lastcorechapter]]. — *end note*]
475
 
476
  #### 66 unspecified behavior <a id="defns.unspecified">[[defns.unspecified]]</a>
477
 
478
+ behavior, for a \termref{defns.well.formed}{well-formed program}
479
+ construct and correct data, that depends on the implementation
480
 
481
  [*Note 1 to entry*: The implementation is not required to document
482
  which behavior occurs. The range of possible behaviors is usually
483
  delineated by this document. — *end note*]
484