From Jason Turner

[lib.types.movedfrom]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpf0fmvi4v/{from.md → to.md} +64 -70
tmp/tmpf0fmvi4v/{from.md → to.md} RENAMED
@@ -8,18 +8,21 @@ objects shall be placed in a valid but unspecified state.
8
  <!-- Link reference definitions -->
9
  [alg.c.library]: algorithms.md#alg.c.library
10
  [alg.sorting]: algorithms.md#alg.sorting
11
  [algorithm.stable]: #algorithm.stable
12
  [algorithms]: algorithms.md#algorithms
 
13
  [alloc.errors]: language.md#alloc.errors
14
  [allocator.requirements]: #allocator.requirements
 
15
  [allocator.traits]: utilities.md#allocator.traits
16
  [alt.headers]: #alt.headers
17
  [atomics]: atomics.md#atomics
18
  [bad.alloc]: language.md#bad.alloc
19
  [basic.def.odr]: basic.md#basic.def.odr
20
  [basic.fundamental]: basic.md#basic.fundamental
 
21
  [basic.link]: basic.md#basic.link
22
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
23
  [basic.scope.namespace]: basic.md#basic.scope.namespace
24
  [basic.start]: basic.md#basic.start
25
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
@@ -28,10 +31,11 @@ objects shall be placed in a valid but unspecified state.
28
  [bitmask.types]: #bitmask.types
29
  [byte.strings]: #byte.strings
30
  [c.locales]: localization.md#c.locales
31
  [c.strings]: strings.md#c.strings
32
  [character.seq]: #character.seq
 
33
  [class.copy]: special.md#class.copy
34
  [class.ctor]: special.md#class.ctor
35
  [class.dtor]: special.md#class.dtor
36
  [class.mem]: class.md#class.mem
37
  [class.mfct]: class.md#class.mfct
@@ -52,49 +56,50 @@ objects shall be placed in a valid but unspecified state.
52
  [cstdint]: language.md#cstdint
53
  [dcl.array]: dcl.md#dcl.array
54
  [dcl.attr]: dcl.md#dcl.attr
55
  [dcl.constexpr]: dcl.md#dcl.constexpr
56
  [dcl.fct.default]: dcl.md#dcl.fct.default
57
- [dcl.fct.spec]: dcl.md#dcl.fct.spec
58
  [dcl.init]: dcl.md#dcl.init
 
 
59
  [dcl.link]: dcl.md#dcl.link
60
  [definitions]: #definitions
61
- [defns.additional]: #defns.additional
62
  [depr]: future.md#depr
63
  [depr.c.headers]: future.md#depr.c.headers
 
 
64
  [derivation]: #derivation
65
  [derived.classes]: #derived.classes
66
  [description]: #description
67
- [destructible]: #destructible
68
  [diagnostics]: diagnostics.md#diagnostics
69
  [enumerated.types]: #enumerated.types
70
- [equalitycomparable]: #equalitycomparable
71
  [except]: except.md#except
 
 
 
72
  [expr.delete]: expr.md#expr.delete
73
  [expr.eq]: expr.md#expr.eq
74
  [expr.new]: expr.md#expr.new
75
  [expr.rel]: expr.md#expr.rel
76
  [extern.names]: #extern.names
77
  [extern.types]: #extern.types
78
  [function.objects]: utilities.md#function.objects
79
  [functions.within.classes]: #functions.within.classes
80
  [global.functions]: #global.functions
81
- [global.names]: #global.names
82
  [handler.functions]: #handler.functions
83
- [hash]: #hash
84
  [hash.requirements]: #hash.requirements
85
  [headers]: #headers
86
  [input.output]: input.md#input.output
87
  [intro.compliance]: intro.md#intro.compliance
88
  [intro.defs]: intro.md#intro.defs
89
  [intro.multithread]: intro.md#intro.multithread
90
  [intro.refs]: intro.md#intro.refs
91
  [iterator.requirements]: iterators.md#iterator.requirements
 
92
  [iterators]: iterators.md#iterators
93
  [language.support]: language.md#language.support
94
  [lex]: lex.md#lex
95
- [lex.key]: lex.md#lex.key
96
  [lex.phases]: lex.md#lex.phases
97
  [lib.types.movedfrom]: #lib.types.movedfrom
98
  [library]: #library
99
  [library.c]: #library.c
100
  [library.general]: #library.general
@@ -104,25 +109,27 @@ objects shall be placed in a valid but unspecified state.
104
  [member.functions]: #member.functions
105
  [meta]: utilities.md#meta
106
  [multibyte.strings]: #multibyte.strings
107
  [namespace.constraints]: #namespace.constraints
108
  [namespace.def]: dcl.md#namespace.def
 
109
  [namespace.posix]: #namespace.posix
110
  [namespace.std]: #namespace.std
111
  [namespace.udecl]: dcl.md#namespace.udecl
112
  [new.delete]: language.md#new.delete
113
  [new.handler]: language.md#new.handler
114
- [nullablepointer]: #nullablepointer
115
  [nullablepointer.requirements]: #nullablepointer.requirements
116
  [numeric.requirements]: numerics.md#numeric.requirements
117
  [numerics]: numerics.md#numerics
118
  [objects.within.classes]: #objects.within.classes
119
  [organization]: #organization
120
  [ostream.iterator.ops]: iterators.md#ostream.iterator.ops
 
121
  [over.match]: over.md#over.match
122
  [over.oper]: over.md#over.oper
123
  [protection.within.classes]: #protection.within.classes
 
124
  [re]: re.md#re
125
  [reentrancy]: #reentrancy
126
  [replacement.functions]: #replacement.functions
127
  [requirements]: #requirements
128
  [res.on.arguments]: #res.on.arguments
@@ -153,164 +160,151 @@ objects shall be placed in a valid but unspecified state.
153
  [support.start.term]: language.md#support.start.term
154
  [support.types]: language.md#support.types
155
  [swappable.requirements]: #swappable.requirements
156
  [syserr]: diagnostics.md#syserr
157
  [syserr.errcode.overview]: diagnostics.md#syserr.errcode.overview
 
 
158
  [tab:cpp.c.headers]: #tab:cpp.c.headers
159
  [tab:cpp.headers.freestanding]: #tab:cpp.headers.freestanding
160
  [tab:cpp.library.headers]: #tab:cpp.library.headers
161
  [tab:desc.var.def]: #tab:desc.var.def
 
 
 
162
  [tab:identifiers.special]: lex.md#tab:identifiers.special
163
  [tab:library.categories]: #tab:library.categories
 
 
164
  [tab:utilities.allocator.requirements]: #tab:utilities.allocator.requirements
165
  [temp.deduct.call]: temp.md#temp.deduct.call
166
  [template.bitset]: utilities.md#template.bitset
167
  [terminate.handler]: language.md#terminate.handler
168
  [thread]: thread.md#thread
169
  [type.descriptions]: #type.descriptions
170
  [type.descriptions.general]: #type.descriptions.general
171
- [unexpected.handler]: future.md#unexpected.handler
172
  [using]: #using
173
  [using.headers]: #using.headers
174
  [using.linkage]: #using.linkage
175
  [using.overview]: #using.overview
176
  [usrlit.suffix]: #usrlit.suffix
177
  [utilities]: utilities.md#utilities
178
  [utility]: utilities.md#utility
179
  [utility.arg.requirements]: #utility.arg.requirements
180
  [utility.requirements]: #utility.requirements
181
  [value.error.codes]: #value.error.codes
 
182
 
183
- [^1]: This definition is taken from POSIX.
184
-
185
- [^2]: To save space, items that do not apply to a Clause are omitted.
186
  For example, if a Clause does not specify any requirements, there
187
  will be no “Requirements” subclause.
188
 
189
- [^3]: Although in some cases the code given is unambiguously the optimum
190
  implementation.
191
 
192
- [^4]: To save space, items that do not apply to a class are omitted. For
193
  example, if a class does not specify any comparison functions, there
194
  will be no “Comparison functions” subclause.
195
 
196
- [^5]: To save space, items that do not apply to a function are omitted.
197
  For example, if a function does not specify any further
198
- preconditions, there will be no Requires paragraph.
199
 
200
- [^6]: This simplifies the presentation of complexity requirements in
201
  some cases.
202
 
203
- [^7]: Examples from  [[utility.requirements]] include:
204
  `EqualityComparable`, `LessThanComparable`, `CopyConstructible`.
205
  Examples from  [[iterator.requirements]] include: `InputIterator`,
206
- `ForwardIterator`, `Function`, `Predicate`.
207
 
208
- [^8]: Such as an integer type, with constant integer values (
209
  [[basic.fundamental]]).
210
 
211
- [^9]: Note that this definition differs from the definition in ISO C
212
- 7.1.1.
213
 
214
- [^10]: declared in `<clocale>` ([[c.locales]]).
215
-
216
- [^11]: Many of the objects manipulated by function signatures declared
217
- in `<cstring>` ([[c.strings]]) are character sequences or NTBSs.
218
- The size of some of these character sequences is limited by a length
219
  value, maintained separately from the character sequence.
220
 
221
- [^12]: A string literal, such as `"abc"`, is a static NTBS.
222
 
223
- [^13]: An NTBSthat contains characters only from the basic execution
224
  character set is also an NTMBS. Each multibyte character then
225
  consists of a single byte.
226
 
227
- [^14]: The C standard library headers (Annex  [[depr.c.headers]]) also
228
  define names within the global namespace, while the C++headers for C
229
  library facilities ([[headers]]) may also define names within the
230
  global namespace.
231
 
232
- [^15]: This gives implementers freedom to use inline namespaces to
233
  support multiple configurations of the library.
234
 
235
- [^16]: A header is not necessarily a source file, nor are the sequences
236
  delimited by `<` and `>` in header names necessarily valid source
237
  file names ([[cpp.include]]).
238
 
239
- [^17]: This disallows the practice, allowed in C, of providing a masking
 
 
 
240
  macro in addition to the function prototype. The only way to achieve
241
  equivalent inline behavior in C++is to provide a definition as an
242
  extern inline function.
243
 
244
- [^18]: In particular, including the standard header `<iso646.h>` or
245
  `<ciso646>` has no effect.
246
 
247
- [^19]: The `".h"` headers dump all their names into the global
248
  namespace, whereas the newer forms keep their names in namespace
249
  `std`. Therefore, the newer forms are the preferred forms for all
250
  uses except for C++programs which are intended to be strictly
251
  compatible with C.
252
 
253
- [^20]: This is the same as the Standard C library.
254
 
255
- [^21]: The only reliable way to declare an object or function signature
256
- from the Standard C library is by including the header that declares
257
  it, notwithstanding the latitude granted in 7.1.4 of the C Standard.
258
 
259
- [^22]: Any library code that instantiates other library templates must
260
  be prepared to work adequately with any user-supplied specialization
261
- that meets the minimum requirements of the Standard.
262
 
263
- [^23]: The list of such reserved names includes `errno`, declared or
264
  defined in `<cerrno>`.
265
 
266
- [^24]: The list of such reserved function signatures with external
267
  linkage includes `setjmp(jmp_buf)`, declared or defined in
268
  `<csetjmp>`, and `va_end(va_list)`, declared or defined in
269
  `<cstdarg>`.
270
 
271
- [^25]: The function signatures declared in `<cuchar>`, `<cwchar>`, and
272
  `<cwctype>` are always reserved, notwithstanding the restrictions
273
  imposed in subclause 4.5.1 of Amendment 1 to the C Standard for
274
  these headers.
275
 
276
- [^26]: These types are `clock_t`, `div_t`, `FILE`, `fpos_t`, `lconv`,
277
  `ldiv_t`, `mbstate_t`, `ptrdiff_t`, `sig_atomic_t`, `size_t`,
278
  `time_t`, `tm`, `va_list`, `wctrans_t`, `wctype_t`, and `wint_t`.
279
 
280
- [^27]: A valid C++program always calls the expected library global or
281
- non-member function. An implementation may also define additional
282
- global or non-member functions that would otherwise not be called by
283
- a valid C++program.
284
 
285
- [^28]: Hence, the address of a member function of a class in the
286
- C++standard library has an unspecified type.
287
-
288
- [^29]: A valid C++program always calls the expected library member
289
- function, or one with equivalent behavior. An implementation may
290
- also define additional member functions that would otherwise not be
291
- called by a valid C++program.
292
-
293
- [^30]: There is an implicit exception to this rule for types that are
294
  described as synonyms for basic integral types, such as `size_t` (
295
  [[support.types]]) and `streamoff` ([[stream.types]]).
296
 
297
- [^31]: That is, the C library functions can all be treated as if they
298
  are marked `noexcept`. This allows implementations to make
299
  performance optimizations based on the absence of exceptions at
300
  runtime.
301
 
302
- [^32]: The functions `qsort()` and `bsearch()` ([[alg.c.library]]) meet
303
  this condition.
304
 
305
- [^33]: In particular, they can report a failure to allocate storage by
306
  throwing an exception of type `bad_alloc`, or a class derived from
307
- `bad_alloc` ([[bad.alloc]]). Library implementations should report
308
- errors by throwing exceptions of or derived from the standard
309
- exception classes ([[bad.alloc]], [[support.exception]],
310
- [[std.exceptions]]).
311
-
312
- [^34]: That is, an implementation may provide an explicit
313
- *exception-specification* that defines the subset of “any”
314
- exceptions thrown by that function. This implies that the
315
- implementation may list implementation-defined types in such an
316
- *exception-specification*.
 
8
  <!-- Link reference definitions -->
9
  [alg.c.library]: algorithms.md#alg.c.library
10
  [alg.sorting]: algorithms.md#alg.sorting
11
  [algorithm.stable]: #algorithm.stable
12
  [algorithms]: algorithms.md#algorithms
13
+ [algorithms.requirements]: algorithms.md#algorithms.requirements
14
  [alloc.errors]: language.md#alloc.errors
15
  [allocator.requirements]: #allocator.requirements
16
+ [allocator.requirements.completeness]: #allocator.requirements.completeness
17
  [allocator.traits]: utilities.md#allocator.traits
18
  [alt.headers]: #alt.headers
19
  [atomics]: atomics.md#atomics
20
  [bad.alloc]: language.md#bad.alloc
21
  [basic.def.odr]: basic.md#basic.def.odr
22
  [basic.fundamental]: basic.md#basic.fundamental
23
+ [basic.life]: basic.md#basic.life
24
  [basic.link]: basic.md#basic.link
25
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
26
  [basic.scope.namespace]: basic.md#basic.scope.namespace
27
  [basic.start]: basic.md#basic.start
28
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
 
31
  [bitmask.types]: #bitmask.types
32
  [byte.strings]: #byte.strings
33
  [c.locales]: localization.md#c.locales
34
  [c.strings]: strings.md#c.strings
35
  [character.seq]: #character.seq
36
+ [class.conv.ctor]: special.md#class.conv.ctor
37
  [class.copy]: special.md#class.copy
38
  [class.ctor]: special.md#class.ctor
39
  [class.dtor]: special.md#class.dtor
40
  [class.mem]: class.md#class.mem
41
  [class.mfct]: class.md#class.mfct
 
56
  [cstdint]: language.md#cstdint
57
  [dcl.array]: dcl.md#dcl.array
58
  [dcl.attr]: dcl.md#dcl.attr
59
  [dcl.constexpr]: dcl.md#dcl.constexpr
60
  [dcl.fct.default]: dcl.md#dcl.fct.default
 
61
  [dcl.init]: dcl.md#dcl.init
62
+ [dcl.init.list]: dcl.md#dcl.init.list
63
+ [dcl.inline]: dcl.md#dcl.inline
64
  [dcl.link]: dcl.md#dcl.link
65
  [definitions]: #definitions
 
66
  [depr]: future.md#depr
67
  [depr.c.headers]: future.md#depr.c.headers
68
+ [depr.cstdalign.syn]: future.md#depr.cstdalign.syn
69
+ [depr.cstdbool.syn]: future.md#depr.cstdbool.syn
70
  [derivation]: #derivation
71
  [derived.classes]: #derived.classes
72
  [description]: #description
 
73
  [diagnostics]: diagnostics.md#diagnostics
74
  [enumerated.types]: #enumerated.types
 
75
  [except]: except.md#except
76
+ [expos.only.types]: #expos.only.types
77
+ [expr.cond]: expr.md#expr.cond
78
+ [expr.const]: expr.md#expr.const
79
  [expr.delete]: expr.md#expr.delete
80
  [expr.eq]: expr.md#expr.eq
81
  [expr.new]: expr.md#expr.new
82
  [expr.rel]: expr.md#expr.rel
83
  [extern.names]: #extern.names
84
  [extern.types]: #extern.types
85
  [function.objects]: utilities.md#function.objects
86
  [functions.within.classes]: #functions.within.classes
87
  [global.functions]: #global.functions
 
88
  [handler.functions]: #handler.functions
 
89
  [hash.requirements]: #hash.requirements
90
  [headers]: #headers
91
  [input.output]: input.md#input.output
92
  [intro.compliance]: intro.md#intro.compliance
93
  [intro.defs]: intro.md#intro.defs
94
  [intro.multithread]: intro.md#intro.multithread
95
  [intro.refs]: intro.md#intro.refs
96
  [iterator.requirements]: iterators.md#iterator.requirements
97
+ [iterator.requirements.general]: iterators.md#iterator.requirements.general
98
  [iterators]: iterators.md#iterators
99
  [language.support]: language.md#language.support
100
  [lex]: lex.md#lex
 
101
  [lex.phases]: lex.md#lex.phases
102
  [lib.types.movedfrom]: #lib.types.movedfrom
103
  [library]: #library
104
  [library.c]: #library.c
105
  [library.general]: #library.general
 
109
  [member.functions]: #member.functions
110
  [meta]: utilities.md#meta
111
  [multibyte.strings]: #multibyte.strings
112
  [namespace.constraints]: #namespace.constraints
113
  [namespace.def]: dcl.md#namespace.def
114
+ [namespace.future]: #namespace.future
115
  [namespace.posix]: #namespace.posix
116
  [namespace.std]: #namespace.std
117
  [namespace.udecl]: dcl.md#namespace.udecl
118
  [new.delete]: language.md#new.delete
119
  [new.handler]: language.md#new.handler
 
120
  [nullablepointer.requirements]: #nullablepointer.requirements
121
  [numeric.requirements]: numerics.md#numeric.requirements
122
  [numerics]: numerics.md#numerics
123
  [objects.within.classes]: #objects.within.classes
124
  [organization]: #organization
125
  [ostream.iterator.ops]: iterators.md#ostream.iterator.ops
126
+ [over.literal]: over.md#over.literal
127
  [over.match]: over.md#over.match
128
  [over.oper]: over.md#over.oper
129
  [protection.within.classes]: #protection.within.classes
130
+ [random.access.iterators]: iterators.md#random.access.iterators
131
  [re]: re.md#re
132
  [reentrancy]: #reentrancy
133
  [replacement.functions]: #replacement.functions
134
  [requirements]: #requirements
135
  [res.on.arguments]: #res.on.arguments
 
160
  [support.start.term]: language.md#support.start.term
161
  [support.types]: language.md#support.types
162
  [swappable.requirements]: #swappable.requirements
163
  [syserr]: diagnostics.md#syserr
164
  [syserr.errcode.overview]: diagnostics.md#syserr.errcode.overview
165
+ [tab:c.annex.k.names]: #tab:c.annex.k.names
166
+ [tab:copyassignable]: #tab:copyassignable
167
  [tab:cpp.c.headers]: #tab:cpp.c.headers
168
  [tab:cpp.headers.freestanding]: #tab:cpp.headers.freestanding
169
  [tab:cpp.library.headers]: #tab:cpp.library.headers
170
  [tab:desc.var.def]: #tab:desc.var.def
171
+ [tab:destructible]: #tab:destructible
172
+ [tab:equalitycomparable]: #tab:equalitycomparable
173
+ [tab:hash]: #tab:hash
174
  [tab:identifiers.special]: lex.md#tab:identifiers.special
175
  [tab:library.categories]: #tab:library.categories
176
+ [tab:moveassignable]: #tab:moveassignable
177
+ [tab:nullablepointer]: #tab:nullablepointer
178
  [tab:utilities.allocator.requirements]: #tab:utilities.allocator.requirements
179
  [temp.deduct.call]: temp.md#temp.deduct.call
180
  [template.bitset]: utilities.md#template.bitset
181
  [terminate.handler]: language.md#terminate.handler
182
  [thread]: thread.md#thread
183
  [type.descriptions]: #type.descriptions
184
  [type.descriptions.general]: #type.descriptions.general
 
185
  [using]: #using
186
  [using.headers]: #using.headers
187
  [using.linkage]: #using.linkage
188
  [using.overview]: #using.overview
189
  [usrlit.suffix]: #usrlit.suffix
190
  [utilities]: utilities.md#utilities
191
  [utility]: utilities.md#utility
192
  [utility.arg.requirements]: #utility.arg.requirements
193
  [utility.requirements]: #utility.requirements
194
  [value.error.codes]: #value.error.codes
195
+ [zombie.names]: #zombie.names
196
 
197
+ [^1]: To save space, items that do not apply to a Clause are omitted.
 
 
198
  For example, if a Clause does not specify any requirements, there
199
  will be no “Requirements” subclause.
200
 
201
+ [^2]: Although in some cases the code given is unambiguously the optimum
202
  implementation.
203
 
204
+ [^3]: To save space, items that do not apply to a class are omitted. For
205
  example, if a class does not specify any comparison functions, there
206
  will be no “Comparison functions” subclause.
207
 
208
+ [^4]: To save space, items that do not apply to a function are omitted.
209
  For example, if a function does not specify any further
210
+ preconditions, there will be no *Requires:* paragraph.
211
 
212
+ [^5]: This simplifies the presentation of complexity requirements in
213
  some cases.
214
 
215
+ [^6]: Examples from  [[utility.requirements]] include:
216
  `EqualityComparable`, `LessThanComparable`, `CopyConstructible`.
217
  Examples from  [[iterator.requirements]] include: `InputIterator`,
218
+ `ForwardIterator`.
219
 
220
+ [^7]: Such as an integer type, with constant integer values (
221
  [[basic.fundamental]]).
222
 
223
+ [^8]: declared in `<clocale>` ([[c.locales]]).
 
224
 
225
+ [^9]: Many of the objects manipulated by function signatures declared in
226
+ `<cstring>` ([[c.strings]]) are character sequences or NTBSs. The
227
+ size of some of these character sequences is limited by a length
 
 
228
  value, maintained separately from the character sequence.
229
 
230
+ [^10]: A string literal, such as `"abc"`, is a static NTBS.
231
 
232
+ [^11]: An NTBSthat contains characters only from the basic execution
233
  character set is also an NTMBS. Each multibyte character then
234
  consists of a single byte.
235
 
236
+ [^12]: The C standard library headers (Annex  [[depr.c.headers]]) also
237
  define names within the global namespace, while the C++headers for C
238
  library facilities ([[headers]]) may also define names within the
239
  global namespace.
240
 
241
+ [^13]: This gives implementers freedom to use inline namespaces to
242
  support multiple configurations of the library.
243
 
244
+ [^14]: A header is not necessarily a source file, nor are the sequences
245
  delimited by `<` and `>` in header names necessarily valid source
246
  file names ([[cpp.include]]).
247
 
248
+ [^15]: It is intentional that there is no C++header for any of these C
249
+ headers: `<stdatomic.h>`, `<stdnoreturn.h>`, `<threads.h>`.
250
+
251
+ [^16]: This disallows the practice, allowed in C, of providing a masking
252
  macro in addition to the function prototype. The only way to achieve
253
  equivalent inline behavior in C++is to provide a definition as an
254
  extern inline function.
255
 
256
+ [^17]: In particular, including the standard header `<iso646.h>` or
257
  `<ciso646>` has no effect.
258
 
259
+ [^18]: The `".h"` headers dump all their names into the global
260
  namespace, whereas the newer forms keep their names in namespace
261
  `std`. Therefore, the newer forms are the preferred forms for all
262
  uses except for C++programs which are intended to be strictly
263
  compatible with C.
264
 
265
+ [^19]: This is the same as the C standard library.
266
 
267
+ [^20]: The only reliable way to declare an object or function signature
268
+ from the C standard library is by including the header that declares
269
  it, notwithstanding the latitude granted in 7.1.4 of the C Standard.
270
 
271
+ [^21]: Any library code that instantiates other library templates must
272
  be prepared to work adequately with any user-supplied specialization
273
+ that meets the minimum requirements of this International Standard.
274
 
275
+ [^22]: The list of such reserved names includes `errno`, declared or
276
  defined in `<cerrno>`.
277
 
278
+ [^23]: The list of such reserved function signatures with external
279
  linkage includes `setjmp(jmp_buf)`, declared or defined in
280
  `<csetjmp>`, and `va_end(va_list)`, declared or defined in
281
  `<cstdarg>`.
282
 
283
+ [^24]: The function signatures declared in `<cuchar>`, `<cwchar>`, and
284
  `<cwctype>` are always reserved, notwithstanding the restrictions
285
  imposed in subclause 4.5.1 of Amendment 1 to the C Standard for
286
  these headers.
287
 
288
+ [^25]: These types are `clock_t`, `div_t`, `FILE`, `fpos_t`, `lconv`,
289
  `ldiv_t`, `mbstate_t`, `ptrdiff_t`, `sig_atomic_t`, `size_t`,
290
  `time_t`, `tm`, `va_list`, `wctrans_t`, `wctype_t`, and `wint_t`.
291
 
292
+ [^26]: A valid C++program always calls the expected library non-member
293
+ function. An implementation may also define additional non-member
294
+ functions that would otherwise not be called by a valid C++program.
 
295
 
296
+ [^27]: There is an implicit exception to this rule for types that are
 
 
 
 
 
 
 
 
297
  described as synonyms for basic integral types, such as `size_t` (
298
  [[support.types]]) and `streamoff` ([[stream.types]]).
299
 
300
+ [^28]: That is, the C library functions can all be treated as if they
301
  are marked `noexcept`. This allows implementations to make
302
  performance optimizations based on the absence of exceptions at
303
  runtime.
304
 
305
+ [^29]: The functions `qsort()` and `bsearch()` ([[alg.c.library]]) meet
306
  this condition.
307
 
308
+ [^30]: In particular, they can report a failure to allocate storage by
309
  throwing an exception of type `bad_alloc`, or a class derived from
310
+ `bad_alloc` ([[bad.alloc]]).