From Jason Turner

[support.c.headers.other]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp187082if/{from.md → to.md} +56 -37
tmp/tmp187082if/{from.md → to.md} RENAMED
@@ -1,37 +1,42 @@
1
  ### Other C headers <a id="support.c.headers.other">[[support.c.headers.other]]</a>
2
 
3
  Every C header other than `<complex.h>`, `<iso646.h>`, `<stdalign.h>`,
4
- `<stdatomic.h>`, `<stdbool.h>`, and `<tgmath.h>`, each of which has a
5
- name of the form `<name.h>`, behaves as if each name placed in the
6
- standard library namespace by the corresponding `<cname>` header is
7
- placed within the global namespace scope, except for the functions
8
- described in [[sf.cmath]], the `std::lerp` function overloads
9
- [[c.math.lerp]], the declaration of `std::byte` [[cstddef.syn]], and the
10
- functions and function templates described in [[support.types.byteops]].
11
- It is unspecified whether these names are first declared or defined
12
- within namespace scope [[basic.scope.namespace]] of the namespace `std`
13
- and are then injected into the global namespace scope by explicit
14
- *using-declaration*s [[namespace.udecl]].
 
15
 
16
  [*Example 1*: The header `<cstdlib>` assuredly provides its
17
  declarations and definitions within the namespace `std`. It may also
18
  provide these names within the global namespace. The header `<stdlib.h>`
19
  assuredly provides the same declarations and definitions within the
20
- global namespace, much as in the C Standard. It may also provide these
21
  names within the namespace `std`. — *end example*]
22
 
23
  <!-- Link reference definitions -->
24
  [alg.c.library]: algorithms.md#alg.c.library
25
  [alloc.errors]: #alloc.errors
 
26
  [atomics]: thread.md#atomics
27
  [bad.alloc]: #bad.alloc
28
  [bad.cast]: #bad.cast
29
  [bad.exception]: #bad.exception
30
  [bad.typeid]: #bad.typeid
31
  [basic.align]: basic.md#basic.align
32
  [basic.compound]: basic.md#basic.compound
 
 
 
33
  [basic.extended.fp]: basic.md#basic.extended.fp
34
  [basic.fundamental]: basic.md#basic.fundamental
35
  [basic.life]: basic.md#basic.life
36
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
37
  [basic.scope.namespace]: basic.md#basic.scope.namespace
@@ -39,18 +44,18 @@ names within the namespace `std`. — *end example*]
39
  [basic.start.term]: basic.md#basic.start.term
40
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
41
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
42
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
43
  [c.headers]: #c.headers
44
- [c.locales]: localization.md#c.locales
45
  [c.malloc]: mem.md#c.malloc
46
  [c.math.abs]: numerics.md#c.math.abs
47
  [c.math.lerp]: numerics.md#c.math.lerp
48
  [c.math.rand]: numerics.md#c.math.rand
49
- [c.mb.wcs]: strings.md#c.mb.wcs
50
  [cfloat.syn]: #cfloat.syn
51
- [class.mem]: class.md#class.mem
52
  [class.prop]: class.md#class.prop
53
  [class.spaceship]: class.md#class.spaceship
54
  [climits.syn]: #climits.syn
55
  [cmp]: #cmp
56
  [cmp.alg]: #cmp.alg
@@ -61,15 +66,17 @@ names within the namespace `std`. — *end example*]
61
  [cmp.partialord]: #cmp.partialord
62
  [cmp.result]: #cmp.result
63
  [cmp.strongord]: #cmp.strongord
64
  [cmp.weakord]: #cmp.weakord
65
  [compare.syn]: #compare.syn
 
66
  [complex]: numerics.md#complex
67
  [complex.h.syn]: #complex.h.syn
68
  [concept.totallyordered]: concepts.md#concept.totallyordered
69
  [concepts.compare.general]: concepts.md#concepts.compare.general
70
  [constraints]: library.md#constraints
 
71
  [conv.prom]: expr.md#conv.prom
72
  [conv.ptr]: expr.md#conv.ptr
73
  [conv.qual]: expr.md#conv.qual
74
  [conv.rank]: basic.md#conv.rank
75
  [coroutine.handle]: #coroutine.handle
@@ -80,10 +87,11 @@ names within the namespace `std`. — *end example*]
80
  [coroutine.handle.general]: #coroutine.handle.general
81
  [coroutine.handle.hash]: #coroutine.handle.hash
82
  [coroutine.handle.noop]: #coroutine.handle.noop
83
  [coroutine.handle.noop.address]: #coroutine.handle.noop.address
84
  [coroutine.handle.noop.conv]: #coroutine.handle.noop.conv
 
85
  [coroutine.handle.noop.observers]: #coroutine.handle.noop.observers
86
  [coroutine.handle.noop.promise]: #coroutine.handle.noop.promise
87
  [coroutine.handle.noop.resumption]: #coroutine.handle.noop.resumption
88
  [coroutine.handle.observers]: #coroutine.handle.observers
89
  [coroutine.handle.promise]: #coroutine.handle.promise
@@ -111,37 +119,40 @@ names within the namespace `std`. — *end example*]
111
  [defns.expression.equivalent]: intro.md#defns.expression.equivalent
112
  [except.handle]: except.md#except.handle
113
  [except.nested]: #except.nested
114
  [except.spec]: except.md#except.spec
115
  [except.terminate]: except.md#except.terminate
116
- [except.uncaught]: except.md#except.uncaught
117
  [exception]: #exception
118
  [exception.syn]: #exception.syn
119
  [exception.terminate]: #exception.terminate
120
  [expr.add]: expr.md#expr.add
121
  [expr.await]: expr.md#expr.await
122
  [expr.call]: expr.md#expr.call
 
123
  [expr.context]: expr.md#expr.context
124
  [expr.delete]: expr.md#expr.delete
125
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
126
  [expr.eq]: expr.md#expr.eq
127
  [expr.new]: expr.md#expr.new
128
- [expr.prim.lambda]: expr.md#expr.prim.lambda
129
  [expr.rel]: expr.md#expr.rel
130
  [expr.sizeof]: expr.md#expr.sizeof
131
  [expr.spaceship]: expr.md#expr.spaceship
132
  [expr.typeid]: expr.md#expr.typeid
133
  [get.new.handler]: #get.new.handler
134
  [get.terminate]: #get.terminate
135
  [hardware.interference]: #hardware.interference
136
  [initializer.list.syn]: #initializer.list.syn
137
  [intro.multithread]: basic.md#intro.multithread
138
  [iso646.h.syn]: #iso646.h.syn
 
 
139
  [lex.key]: lex.md#lex.key
140
  [library.c]: library.md#library.c
141
  [limits.syn]: #limits.syn
142
- [locale.codecvt]: localization.md#locale.codecvt
 
143
  [multibyte.strings]: library.md#multibyte.strings
144
  [namespace.udecl]: dcl.md#namespace.udecl
145
  [new.badlength]: #new.badlength
146
  [new.delete]: #new.delete
147
  [new.delete.array]: #new.delete.array
@@ -171,10 +182,14 @@ names within the namespace `std`. — *end example*]
171
  [support]: #support
172
  [support.arith.types]: #support.arith.types
173
  [support.c.headers]: #support.c.headers
174
  [support.c.headers.general]: #support.c.headers.general
175
  [support.c.headers.other]: #support.c.headers.other
 
 
 
 
176
  [support.coroutine]: #support.coroutine
177
  [support.coroutine.general]: #support.coroutine.general
178
  [support.dynamic]: #support.dynamic
179
  [support.dynamic.general]: #support.dynamic.general
180
  [support.exception]: #support.exception
@@ -203,21 +218,27 @@ names within the namespace `std`. — *end example*]
203
  [support.types]: #support.types
204
  [support.types.byteops]: #support.types.byteops
205
  [support.types.layout]: #support.types.layout
206
  [support.types.nullptr]: #support.types.nullptr
207
  [swappable.requirements]: library.md#swappable.requirements
 
 
 
208
  [temp.deduct]: temp.md#temp.deduct
209
  [temp.dep.constexpr]: temp.md#temp.dep.constexpr
210
  [temp.dep.expr]: temp.md#temp.dep.expr
211
- [temp.variadic]: temp.md#temp.variadic
212
  [term.odr.use]: basic.md#term.odr.use
 
213
  [terminate]: #terminate
214
  [terminate.handler]: #terminate.handler
215
  [tgmath.h.syn]: #tgmath.h.syn
 
 
216
  [type.info]: #type.info
217
  [typeinfo.syn]: #typeinfo.syn
218
  [uncaught.exceptions]: #uncaught.exceptions
 
219
  [unord.hash]: utilities.md#unord.hash
220
  [utility.arg.requirements]: library.md#utility.arg.requirements
221
  [version.syn]: #version.syn
222
 
223
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
@@ -241,12 +262,13 @@ names within the namespace `std`. — *end example*]
241
 
242
  [^9]: Distinguishes types with bases other than 2 (e.g., BCD).
243
 
244
  [^10]: Equivalent to `FLT_EPSILON`, `DBL_EPSILON`, `LDBL_EPSILON`.
245
 
246
- [^11]: Rounding error is described in LIA-1 Section 5.2.4 and Annex C
247
- Rationale Section C.5.2.4 — Rounding and rounding constants.
 
248
 
249
  [^12]: Equivalent to `FLT_MIN_EXP`, `DBL_MIN_EXP`, `LDBL_MIN_EXP`.
250
 
251
  [^13]: Equivalent to `FLT_MIN_10_EXP`, `DBL_MIN_10_EXP`,
252
  `LDBL_MIN_10_EXP`.
@@ -254,33 +276,33 @@ names within the namespace `std`. — *end example*]
254
  [^14]: Equivalent to `FLT_MAX_EXP`, `DBL_MAX_EXP`, `LDBL_MAX_EXP`.
255
 
256
  [^15]: Equivalent to `FLT_MAX_10_EXP`, `DBL_MAX_10_EXP`,
257
  `LDBL_MAX_10_EXP`.
258
 
259
- [^16]: Required by LIA-1.
260
 
261
- [^17]: Required by LIA-1.
262
 
263
- [^18]: Required by LIA-1.
264
 
265
- [^19]: Required by LIA-1.
266
 
267
- [^20]: Required by LIA-1.
268
 
269
- [^21]: Required by LIA-1.
270
 
271
- [^22]: ISO/IEC/IEEE 60559:2020 is the same as IEEE 754-2019.
272
 
273
- [^23]: Required by LIA-1.
274
 
275
- [^24]: Required by LIA-1.
276
 
277
- [^25]: Required by LIA-1.
278
 
279
- [^26]: Refer to ISO/IEC/IEEE 60559. Required by LIA-1.
280
 
281
- [^27]: Equivalent to `FLT_ROUNDS`. Required by LIA-1.
282
 
283
  [^28]: A function is called for every time it is registered.
284
 
285
  [^29]: Objects with automatic storage duration are all destroyed in a
286
  program whose `main` function [[basic.start.main]] contains no
@@ -298,10 +320,7 @@ names within the namespace `std`. — *end example*]
298
  however, increase the `size` argument to `operator new[]` to obtain
299
  space to store supplemental information.
300
 
301
  [^32]: That is, `a < b`, `a == b`, and `a > b` might all be `false`.
302
 
303
- [^33]: Note that `va_start` is required to work as specified even if
304
- unary `operator&` is overloaded for the type of `parmN`.
305
-
306
- [^34]: Such initialization can occur because it is the first odr-use
307
  [[term.odr.use]] of that variable.
 
1
  ### Other C headers <a id="support.c.headers.other">[[support.c.headers.other]]</a>
2
 
3
  Every C header other than `<complex.h>`, `<iso646.h>`, `<stdalign.h>`,
4
+ `<stdatomic.h>`, `<stdbit.h>`, `<stdbool.h>`, `<stdckdint.h>`, and
5
+ `<tgmath.h>`, each of which has a name of the form `<name.h>`, behaves
6
+ as if each name placed in the standard library namespace by the
7
+ corresponding `<cname>` header is placed within the global namespace
8
+ scope, except for the functions described in [[sf.cmath]], the
9
+ `std::lerp` function overloads [[c.math.lerp]], the declaration of
10
+ `std::byte` [[cstddef.syn]], and the functions and function templates
11
+ described in [[support.types.byteops]]. It is unspecified whether these
12
+ names are first declared or defined within namespace scope
13
+ [[basic.scope.namespace]] of the namespace `std` and are then injected
14
+ into the global namespace scope by explicit *using-declaration*s
15
+ [[namespace.udecl]].
16
 
17
  [*Example 1*: The header `<cstdlib>` assuredly provides its
18
  declarations and definitions within the namespace `std`. It may also
19
  provide these names within the global namespace. The header `<stdlib.h>`
20
  assuredly provides the same declarations and definitions within the
21
+ global namespace, much as in \IsoCUndated. It may also provide these
22
  names within the namespace `std`. — *end example*]
23
 
24
  <!-- Link reference definitions -->
25
  [alg.c.library]: algorithms.md#alg.c.library
26
  [alloc.errors]: #alloc.errors
27
+ [associative]: containers.md#associative
28
  [atomics]: thread.md#atomics
29
  [bad.alloc]: #bad.alloc
30
  [bad.cast]: #bad.cast
31
  [bad.exception]: #bad.exception
32
  [bad.typeid]: #bad.typeid
33
  [basic.align]: basic.md#basic.align
34
  [basic.compound]: basic.md#basic.compound
35
+ [basic.contract.eval]: basic.md#basic.contract.eval
36
+ [basic.contract.general]: basic.md#basic.contract.general
37
+ [basic.contract.handler]: basic.md#basic.contract.handler
38
  [basic.extended.fp]: basic.md#basic.extended.fp
39
  [basic.fundamental]: basic.md#basic.fundamental
40
  [basic.life]: basic.md#basic.life
41
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
42
  [basic.scope.namespace]: basic.md#basic.scope.namespace
 
44
  [basic.start.term]: basic.md#basic.start.term
45
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
46
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
47
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
48
  [c.headers]: #c.headers
49
+ [c.locales]: text.md#c.locales
50
  [c.malloc]: mem.md#c.malloc
51
  [c.math.abs]: numerics.md#c.math.abs
52
  [c.math.lerp]: numerics.md#c.math.lerp
53
  [c.math.rand]: numerics.md#c.math.rand
54
+ [c.mb.wcs]: text.md#c.mb.wcs
55
  [cfloat.syn]: #cfloat.syn
56
+ [class.mem.general]: class.md#class.mem.general
57
  [class.prop]: class.md#class.prop
58
  [class.spaceship]: class.md#class.spaceship
59
  [climits.syn]: #climits.syn
60
  [cmp]: #cmp
61
  [cmp.alg]: #cmp.alg
 
66
  [cmp.partialord]: #cmp.partialord
67
  [cmp.result]: #cmp.result
68
  [cmp.strongord]: #cmp.strongord
69
  [cmp.weakord]: #cmp.weakord
70
  [compare.syn]: #compare.syn
71
+ [compare.type]: #compare.type
72
  [complex]: numerics.md#complex
73
  [complex.h.syn]: #complex.h.syn
74
  [concept.totallyordered]: concepts.md#concept.totallyordered
75
  [concepts.compare.general]: concepts.md#concepts.compare.general
76
  [constraints]: library.md#constraints
77
+ [contracts.syn]: #contracts.syn
78
  [conv.prom]: expr.md#conv.prom
79
  [conv.ptr]: expr.md#conv.ptr
80
  [conv.qual]: expr.md#conv.qual
81
  [conv.rank]: basic.md#conv.rank
82
  [coroutine.handle]: #coroutine.handle
 
87
  [coroutine.handle.general]: #coroutine.handle.general
88
  [coroutine.handle.hash]: #coroutine.handle.hash
89
  [coroutine.handle.noop]: #coroutine.handle.noop
90
  [coroutine.handle.noop.address]: #coroutine.handle.noop.address
91
  [coroutine.handle.noop.conv]: #coroutine.handle.noop.conv
92
+ [coroutine.handle.noop.general]: #coroutine.handle.noop.general
93
  [coroutine.handle.noop.observers]: #coroutine.handle.noop.observers
94
  [coroutine.handle.noop.promise]: #coroutine.handle.noop.promise
95
  [coroutine.handle.noop.resumption]: #coroutine.handle.noop.resumption
96
  [coroutine.handle.observers]: #coroutine.handle.observers
97
  [coroutine.handle.promise]: #coroutine.handle.promise
 
119
  [defns.expression.equivalent]: intro.md#defns.expression.equivalent
120
  [except.handle]: except.md#except.handle
121
  [except.nested]: #except.nested
122
  [except.spec]: except.md#except.spec
123
  [except.terminate]: except.md#except.terminate
124
+ [except.throw]: except.md#except.throw
125
  [exception]: #exception
126
  [exception.syn]: #exception.syn
127
  [exception.terminate]: #exception.terminate
128
  [expr.add]: expr.md#expr.add
129
  [expr.await]: expr.md#expr.await
130
  [expr.call]: expr.md#expr.call
131
+ [expr.const]: expr.md#expr.const
132
  [expr.context]: expr.md#expr.context
133
  [expr.delete]: expr.md#expr.delete
134
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
135
  [expr.eq]: expr.md#expr.eq
136
  [expr.new]: expr.md#expr.new
 
137
  [expr.rel]: expr.md#expr.rel
138
  [expr.sizeof]: expr.md#expr.sizeof
139
  [expr.spaceship]: expr.md#expr.spaceship
140
  [expr.typeid]: expr.md#expr.typeid
141
  [get.new.handler]: #get.new.handler
142
  [get.terminate]: #get.terminate
143
  [hardware.interference]: #hardware.interference
144
  [initializer.list.syn]: #initializer.list.syn
145
  [intro.multithread]: basic.md#intro.multithread
146
  [iso646.h.syn]: #iso646.h.syn
147
+ [lex.ccon]: lex.md#lex.ccon
148
+ [lex.charset]: lex.md#lex.charset
149
  [lex.key]: lex.md#lex.key
150
  [library.c]: library.md#library.c
151
  [limits.syn]: #limits.syn
152
+ [locale.codecvt]: text.md#locale.codecvt
153
+ [meta.rqmts]: meta.md#meta.rqmts
154
  [multibyte.strings]: library.md#multibyte.strings
155
  [namespace.udecl]: dcl.md#namespace.udecl
156
  [new.badlength]: #new.badlength
157
  [new.delete]: #new.delete
158
  [new.delete.array]: #new.delete.array
 
182
  [support]: #support
183
  [support.arith.types]: #support.arith.types
184
  [support.c.headers]: #support.c.headers
185
  [support.c.headers.general]: #support.c.headers.general
186
  [support.c.headers.other]: #support.c.headers.other
187
+ [support.contract]: #support.contract
188
+ [support.contract.enum]: #support.contract.enum
189
+ [support.contract.invoke]: #support.contract.invoke
190
+ [support.contract.violation]: #support.contract.violation
191
  [support.coroutine]: #support.coroutine
192
  [support.coroutine.general]: #support.coroutine.general
193
  [support.dynamic]: #support.dynamic
194
  [support.dynamic.general]: #support.dynamic.general
195
  [support.exception]: #support.exception
 
218
  [support.types]: #support.types
219
  [support.types.byteops]: #support.types.byteops
220
  [support.types.layout]: #support.types.layout
221
  [support.types.nullptr]: #support.types.nullptr
222
  [swappable.requirements]: library.md#swappable.requirements
223
+ [tab:support.contract.enum.detection]: #tab:support.contract.enum.detection
224
+ [tab:support.contract.enum.kind]: #tab:support.contract.enum.kind
225
+ [tab:support.contract.enum.semantic]: #tab:support.contract.enum.semantic
226
  [temp.deduct]: temp.md#temp.deduct
227
  [temp.dep.constexpr]: temp.md#temp.dep.constexpr
228
  [temp.dep.expr]: temp.md#temp.dep.expr
 
229
  [term.odr.use]: basic.md#term.odr.use
230
+ [term.replaceable.function]: dcl.md#term.replaceable.function
231
  [terminate]: #terminate
232
  [terminate.handler]: #terminate.handler
233
  [tgmath.h.syn]: #tgmath.h.syn
234
+ [type.index]: #type.index
235
+ [type.index.synopsis]: #type.index.synopsis
236
  [type.info]: #type.info
237
  [typeinfo.syn]: #typeinfo.syn
238
  [uncaught.exceptions]: #uncaught.exceptions
239
+ [unord]: containers.md#unord
240
  [unord.hash]: utilities.md#unord.hash
241
  [utility.arg.requirements]: library.md#utility.arg.requirements
242
  [version.syn]: #version.syn
243
 
244
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
 
262
 
263
  [^9]: Distinguishes types with bases other than 2 (e.g., BCD).
264
 
265
  [^10]: Equivalent to `FLT_EPSILON`, `DBL_EPSILON`, `LDBL_EPSILON`.
266
 
267
+ [^11]: Rounding error is described in ISO/IEC 10967-1:2012 Section 5.2.4
268
+ and Annex C Rationale Section C.5.2.4 — Rounding and rounding
269
+ constants.
270
 
271
  [^12]: Equivalent to `FLT_MIN_EXP`, `DBL_MIN_EXP`, `LDBL_MIN_EXP`.
272
 
273
  [^13]: Equivalent to `FLT_MIN_10_EXP`, `DBL_MIN_10_EXP`,
274
  `LDBL_MIN_10_EXP`.
 
276
  [^14]: Equivalent to `FLT_MAX_EXP`, `DBL_MAX_EXP`, `LDBL_MAX_EXP`.
277
 
278
  [^15]: Equivalent to `FLT_MAX_10_EXP`, `DBL_MAX_10_EXP`,
279
  `LDBL_MAX_10_EXP`.
280
 
281
+ [^16]: Required by ISO/IEC 10967-1:2012.
282
 
283
+ [^17]: Required by ISO/IEC 10967-1:2012.
284
 
285
+ [^18]: Required by ISO/IEC 10967-1:2012.
286
 
287
+ [^19]: Required by ISO/IEC 10967-1:2012.
288
 
289
+ [^20]: Required by ISO/IEC 10967-1:2012.
290
 
291
+ [^21]: Required by ISO/IEC 10967-1:2012.
292
 
293
+ [^22]: ISO/IEC 60559:2020 is the same as IEEE 754-2019.
294
 
295
+ [^23]: Required by ISO/IEC 10967-1:2012.
296
 
297
+ [^24]: Required by ISO/IEC 10967-1:2012.
298
 
299
+ [^25]: Required by ISO/IEC 10967-1:2012.
300
 
301
+ [^26]: Refer to ISO/IEC 60559. Required by ISO/IEC 10967-1:2012.
302
 
303
+ [^27]: Equivalent to `FLT_ROUNDS`. Required by ISO/IEC 10967-1:2012.
304
 
305
  [^28]: A function is called for every time it is registered.
306
 
307
  [^29]: Objects with automatic storage duration are all destroyed in a
308
  program whose `main` function [[basic.start.main]] contains no
 
320
  however, increase the `size` argument to `operator new[]` to obtain
321
  space to store supplemental information.
322
 
323
  [^32]: That is, `a < b`, `a == b`, and `a > b` might all be `false`.
324
 
325
+ [^33]: Such initialization can occur because it is the first odr-use
 
 
 
326
  [[term.odr.use]] of that variable.