From Jason Turner

[support.c.headers]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpxfk7ohqq/{from.md → to.md} +66 -50
tmp/tmpxfk7ohqq/{from.md → to.md} RENAMED
@@ -4,32 +4,32 @@
4
 
5
  For compatibility with the C standard library, the C++ standard library
6
  provides the *C headers* shown in [[c.headers]]. The intended use of
7
  these headers is for interoperability only. It is possible that C++
8
  source files need to include one of these headers in order to be valid
9
- ISO C. Source files that are not intended to also be valid ISO C should
10
- not use any of the C headers.
11
 
12
  [*Note 1*: The C headers either have no effect, such as `<stdbool.h>`
13
  and `<stdalign.h>`, or otherwise the corresponding header of the form
14
  `<cname>` provides the same facilities and assuredly defines them in
15
  namespace `std`. — *end note*]
16
 
17
  [*Example 1*:
18
 
19
- The following source file is both valid C++ and valid ISO C. Viewed as
20
- C++, it declares a function with C language linkage; viewed as C it
21
- simply declares a function (and provides a prototype).
22
 
23
  ``` cpp
24
- #include <stdbool.h> // for bool in C, no effect in C++{}
25
  #include <stddef.h> // for size_t
26
 
27
  #ifdef __cplusplus // see [cpp.predefined]
28
  extern "C" // see [dcl.link]
29
  #endif
30
- void f(bool b[], size_t n);
31
  ```
32
 
33
  — *end example*]
34
 
35
  ### Header `<complex.h>` synopsis <a id="complex.h.syn">[[complex.h.syn]]</a>
@@ -53,23 +53,20 @@ The C++ header `<iso646.h>` is empty.
53
  [[lex.key]]. — *end note*]
54
 
55
  ### Header `<stdalign.h>` synopsis <a id="stdalign.h.syn">[[stdalign.h.syn]]</a>
56
 
57
  The contents of the C++ header `<stdalign.h>` are the same as the C
58
- standard library header `<stdalign.h>`, with the following changes: The
59
- header `<stdalign.h>` does not define a macro named `alignas`.
60
 
61
  See also: ISO C 7.15
62
 
63
  ### Header `<stdbool.h>` synopsis <a id="stdbool.h.syn">[[stdbool.h.syn]]</a>
64
 
65
  The contents of the C++ header `<stdbool.h>` are the same as the C
66
- standard library header `<stdbool.h>`, with the following changes: The
67
- header `<stdbool.h>` does not define macros named `bool`, `true`, or
68
- `false`.
69
 
70
- See also: ISO C 7.18
71
 
72
  ### Header `<tgmath.h>` synopsis <a id="tgmath.h.syn">[[tgmath.h.syn]]</a>
73
 
74
  ``` cpp
75
  #include <cmath>
@@ -88,39 +85,44 @@ overloads. — *end note*]
88
  `<tgmath.h>`. — *end note*]
89
 
90
  ### Other C headers <a id="support.c.headers.other">[[support.c.headers.other]]</a>
91
 
92
  Every C header other than `<complex.h>`, `<iso646.h>`, `<stdalign.h>`,
93
- `<stdatomic.h>`, `<stdbool.h>`, and `<tgmath.h>`, each of which has a
94
- name of the form `<name.h>`, behaves as if each name placed in the
95
- standard library namespace by the corresponding `<cname>` header is
96
- placed within the global namespace scope, except for the functions
97
- described in [[sf.cmath]], the `std::lerp` function overloads
98
- [[c.math.lerp]], the declaration of `std::byte` [[cstddef.syn]], and the
99
- functions and function templates described in [[support.types.byteops]].
100
- It is unspecified whether these names are first declared or defined
101
- within namespace scope [[basic.scope.namespace]] of the namespace `std`
102
- and are then injected into the global namespace scope by explicit
103
- *using-declaration*s [[namespace.udecl]].
 
104
 
105
  [*Example 1*: The header `<cstdlib>` assuredly provides its
106
  declarations and definitions within the namespace `std`. It may also
107
  provide these names within the global namespace. The header `<stdlib.h>`
108
  assuredly provides the same declarations and definitions within the
109
- global namespace, much as in the C Standard. It may also provide these
110
  names within the namespace `std`. — *end example*]
111
 
112
  <!-- Link reference definitions -->
113
  [alg.c.library]: algorithms.md#alg.c.library
114
  [alloc.errors]: #alloc.errors
 
115
  [atomics]: thread.md#atomics
116
  [bad.alloc]: #bad.alloc
117
  [bad.cast]: #bad.cast
118
  [bad.exception]: #bad.exception
119
  [bad.typeid]: #bad.typeid
120
  [basic.align]: basic.md#basic.align
121
  [basic.compound]: basic.md#basic.compound
 
 
 
122
  [basic.extended.fp]: basic.md#basic.extended.fp
123
  [basic.fundamental]: basic.md#basic.fundamental
124
  [basic.life]: basic.md#basic.life
125
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
126
  [basic.scope.namespace]: basic.md#basic.scope.namespace
@@ -128,18 +130,18 @@ names within the namespace `std`. — *end example*]
128
  [basic.start.term]: basic.md#basic.start.term
129
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
130
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
131
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
132
  [c.headers]: #c.headers
133
- [c.locales]: localization.md#c.locales
134
  [c.malloc]: mem.md#c.malloc
135
  [c.math.abs]: numerics.md#c.math.abs
136
  [c.math.lerp]: numerics.md#c.math.lerp
137
  [c.math.rand]: numerics.md#c.math.rand
138
- [c.mb.wcs]: strings.md#c.mb.wcs
139
  [cfloat.syn]: #cfloat.syn
140
- [class.mem]: class.md#class.mem
141
  [class.prop]: class.md#class.prop
142
  [class.spaceship]: class.md#class.spaceship
143
  [climits.syn]: #climits.syn
144
  [cmp]: #cmp
145
  [cmp.alg]: #cmp.alg
@@ -150,15 +152,17 @@ names within the namespace `std`. — *end example*]
150
  [cmp.partialord]: #cmp.partialord
151
  [cmp.result]: #cmp.result
152
  [cmp.strongord]: #cmp.strongord
153
  [cmp.weakord]: #cmp.weakord
154
  [compare.syn]: #compare.syn
 
155
  [complex]: numerics.md#complex
156
  [complex.h.syn]: #complex.h.syn
157
  [concept.totallyordered]: concepts.md#concept.totallyordered
158
  [concepts.compare.general]: concepts.md#concepts.compare.general
159
  [constraints]: library.md#constraints
 
160
  [conv.prom]: expr.md#conv.prom
161
  [conv.ptr]: expr.md#conv.ptr
162
  [conv.qual]: expr.md#conv.qual
163
  [conv.rank]: basic.md#conv.rank
164
  [coroutine.handle]: #coroutine.handle
@@ -169,10 +173,11 @@ names within the namespace `std`. — *end example*]
169
  [coroutine.handle.general]: #coroutine.handle.general
170
  [coroutine.handle.hash]: #coroutine.handle.hash
171
  [coroutine.handle.noop]: #coroutine.handle.noop
172
  [coroutine.handle.noop.address]: #coroutine.handle.noop.address
173
  [coroutine.handle.noop.conv]: #coroutine.handle.noop.conv
 
174
  [coroutine.handle.noop.observers]: #coroutine.handle.noop.observers
175
  [coroutine.handle.noop.promise]: #coroutine.handle.noop.promise
176
  [coroutine.handle.noop.resumption]: #coroutine.handle.noop.resumption
177
  [coroutine.handle.observers]: #coroutine.handle.observers
178
  [coroutine.handle.promise]: #coroutine.handle.promise
@@ -200,37 +205,40 @@ names within the namespace `std`. — *end example*]
200
  [defns.expression.equivalent]: intro.md#defns.expression.equivalent
201
  [except.handle]: except.md#except.handle
202
  [except.nested]: #except.nested
203
  [except.spec]: except.md#except.spec
204
  [except.terminate]: except.md#except.terminate
205
- [except.uncaught]: except.md#except.uncaught
206
  [exception]: #exception
207
  [exception.syn]: #exception.syn
208
  [exception.terminate]: #exception.terminate
209
  [expr.add]: expr.md#expr.add
210
  [expr.await]: expr.md#expr.await
211
  [expr.call]: expr.md#expr.call
 
212
  [expr.context]: expr.md#expr.context
213
  [expr.delete]: expr.md#expr.delete
214
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
215
  [expr.eq]: expr.md#expr.eq
216
  [expr.new]: expr.md#expr.new
217
- [expr.prim.lambda]: expr.md#expr.prim.lambda
218
  [expr.rel]: expr.md#expr.rel
219
  [expr.sizeof]: expr.md#expr.sizeof
220
  [expr.spaceship]: expr.md#expr.spaceship
221
  [expr.typeid]: expr.md#expr.typeid
222
  [get.new.handler]: #get.new.handler
223
  [get.terminate]: #get.terminate
224
  [hardware.interference]: #hardware.interference
225
  [initializer.list.syn]: #initializer.list.syn
226
  [intro.multithread]: basic.md#intro.multithread
227
  [iso646.h.syn]: #iso646.h.syn
 
 
228
  [lex.key]: lex.md#lex.key
229
  [library.c]: library.md#library.c
230
  [limits.syn]: #limits.syn
231
- [locale.codecvt]: localization.md#locale.codecvt
 
232
  [multibyte.strings]: library.md#multibyte.strings
233
  [namespace.udecl]: dcl.md#namespace.udecl
234
  [new.badlength]: #new.badlength
235
  [new.delete]: #new.delete
236
  [new.delete.array]: #new.delete.array
@@ -260,10 +268,14 @@ names within the namespace `std`. — *end example*]
260
  [support]: #support
261
  [support.arith.types]: #support.arith.types
262
  [support.c.headers]: #support.c.headers
263
  [support.c.headers.general]: #support.c.headers.general
264
  [support.c.headers.other]: #support.c.headers.other
 
 
 
 
265
  [support.coroutine]: #support.coroutine
266
  [support.coroutine.general]: #support.coroutine.general
267
  [support.dynamic]: #support.dynamic
268
  [support.dynamic.general]: #support.dynamic.general
269
  [support.exception]: #support.exception
@@ -292,21 +304,27 @@ names within the namespace `std`. — *end example*]
292
  [support.types]: #support.types
293
  [support.types.byteops]: #support.types.byteops
294
  [support.types.layout]: #support.types.layout
295
  [support.types.nullptr]: #support.types.nullptr
296
  [swappable.requirements]: library.md#swappable.requirements
 
 
 
297
  [temp.deduct]: temp.md#temp.deduct
298
  [temp.dep.constexpr]: temp.md#temp.dep.constexpr
299
  [temp.dep.expr]: temp.md#temp.dep.expr
300
- [temp.variadic]: temp.md#temp.variadic
301
  [term.odr.use]: basic.md#term.odr.use
 
302
  [terminate]: #terminate
303
  [terminate.handler]: #terminate.handler
304
  [tgmath.h.syn]: #tgmath.h.syn
 
 
305
  [type.info]: #type.info
306
  [typeinfo.syn]: #typeinfo.syn
307
  [uncaught.exceptions]: #uncaught.exceptions
 
308
  [unord.hash]: utilities.md#unord.hash
309
  [utility.arg.requirements]: library.md#utility.arg.requirements
310
  [version.syn]: #version.syn
311
 
312
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
@@ -330,12 +348,13 @@ names within the namespace `std`. — *end example*]
330
 
331
  [^9]: Distinguishes types with bases other than 2 (e.g., BCD).
332
 
333
  [^10]: Equivalent to `FLT_EPSILON`, `DBL_EPSILON`, `LDBL_EPSILON`.
334
 
335
- [^11]: Rounding error is described in LIA-1 Section 5.2.4 and Annex C
336
- Rationale Section C.5.2.4 — Rounding and rounding constants.
 
337
 
338
  [^12]: Equivalent to `FLT_MIN_EXP`, `DBL_MIN_EXP`, `LDBL_MIN_EXP`.
339
 
340
  [^13]: Equivalent to `FLT_MIN_10_EXP`, `DBL_MIN_10_EXP`,
341
  `LDBL_MIN_10_EXP`.
@@ -343,33 +362,33 @@ names within the namespace `std`. — *end example*]
343
  [^14]: Equivalent to `FLT_MAX_EXP`, `DBL_MAX_EXP`, `LDBL_MAX_EXP`.
344
 
345
  [^15]: Equivalent to `FLT_MAX_10_EXP`, `DBL_MAX_10_EXP`,
346
  `LDBL_MAX_10_EXP`.
347
 
348
- [^16]: Required by LIA-1.
349
 
350
- [^17]: Required by LIA-1.
351
 
352
- [^18]: Required by LIA-1.
353
 
354
- [^19]: Required by LIA-1.
355
 
356
- [^20]: Required by LIA-1.
357
 
358
- [^21]: Required by LIA-1.
359
 
360
- [^22]: ISO/IEC/IEEE 60559:2020 is the same as IEEE 754-2019.
361
 
362
- [^23]: Required by LIA-1.
363
 
364
- [^24]: Required by LIA-1.
365
 
366
- [^25]: Required by LIA-1.
367
 
368
- [^26]: Refer to ISO/IEC/IEEE 60559. Required by LIA-1.
369
 
370
- [^27]: Equivalent to `FLT_ROUNDS`. Required by LIA-1.
371
 
372
  [^28]: A function is called for every time it is registered.
373
 
374
  [^29]: Objects with automatic storage duration are all destroyed in a
375
  program whose `main` function [[basic.start.main]] contains no
@@ -387,10 +406,7 @@ names within the namespace `std`. — *end example*]
387
  however, increase the `size` argument to `operator new[]` to obtain
388
  space to store supplemental information.
389
 
390
  [^32]: That is, `a < b`, `a == b`, and `a > b` might all be `false`.
391
 
392
- [^33]: Note that `va_start` is required to work as specified even if
393
- unary `operator&` is overloaded for the type of `parmN`.
394
-
395
- [^34]: Such initialization can occur because it is the first odr-use
396
  [[term.odr.use]] of that variable.
 
4
 
5
  For compatibility with the C standard library, the C++ standard library
6
  provides the *C headers* shown in [[c.headers]]. The intended use of
7
  these headers is for interoperability only. It is possible that C++
8
  source files need to include one of these headers in order to be valid
9
+ C. Source files that are not intended to also be valid C should not use
10
+ any of the C headers.
11
 
12
  [*Note 1*: The C headers either have no effect, such as `<stdbool.h>`
13
  and `<stdalign.h>`, or otherwise the corresponding header of the form
14
  `<cname>` provides the same facilities and assuredly defines them in
15
  namespace `std`. — *end note*]
16
 
17
  [*Example 1*:
18
 
19
+ The following source file is both valid C++ and valid C. Viewed as C++,
20
+ it declares a function with C language linkage; viewed as C it simply
21
+ declares a function (and provides a prototype).
22
 
23
  ``` cpp
24
+ #include <uchar.h> // for char8_t in C, not necessary in C++{}
25
  #include <stddef.h> // for size_t
26
 
27
  #ifdef __cplusplus // see [cpp.predefined]
28
  extern "C" // see [dcl.link]
29
  #endif
30
+ void f(char8_t s[], size_t n);
31
  ```
32
 
33
  — *end example*]
34
 
35
  ### Header `<complex.h>` synopsis <a id="complex.h.syn">[[complex.h.syn]]</a>
 
53
  [[lex.key]]. — *end note*]
54
 
55
  ### Header `<stdalign.h>` synopsis <a id="stdalign.h.syn">[[stdalign.h.syn]]</a>
56
 
57
  The contents of the C++ header `<stdalign.h>` are the same as the C
58
+ standard library header `<stdalign.h>`.
 
59
 
60
  See also: ISO C 7.15
61
 
62
  ### Header `<stdbool.h>` synopsis <a id="stdbool.h.syn">[[stdbool.h.syn]]</a>
63
 
64
  The contents of the C++ header `<stdbool.h>` are the same as the C
65
+ standard library header `<stdbool.h>`.
 
 
66
 
67
+ See also: ISO C 7.19
68
 
69
  ### Header `<tgmath.h>` synopsis <a id="tgmath.h.syn">[[tgmath.h.syn]]</a>
70
 
71
  ``` cpp
72
  #include <cmath>
 
85
  `<tgmath.h>`. — *end note*]
86
 
87
  ### Other C headers <a id="support.c.headers.other">[[support.c.headers.other]]</a>
88
 
89
  Every C header other than `<complex.h>`, `<iso646.h>`, `<stdalign.h>`,
90
+ `<stdatomic.h>`, `<stdbit.h>`, `<stdbool.h>`, `<stdckdint.h>`, and
91
+ `<tgmath.h>`, each of which has a name of the form `<name.h>`, behaves
92
+ as if each name placed in the standard library namespace by the
93
+ corresponding `<cname>` header is placed within the global namespace
94
+ scope, except for the functions described in [[sf.cmath]], the
95
+ `std::lerp` function overloads [[c.math.lerp]], the declaration of
96
+ `std::byte` [[cstddef.syn]], and the functions and function templates
97
+ described in [[support.types.byteops]]. It is unspecified whether these
98
+ names are first declared or defined within namespace scope
99
+ [[basic.scope.namespace]] of the namespace `std` and are then injected
100
+ into the global namespace scope by explicit *using-declaration*s
101
+ [[namespace.udecl]].
102
 
103
  [*Example 1*: The header `<cstdlib>` assuredly provides its
104
  declarations and definitions within the namespace `std`. It may also
105
  provide these names within the global namespace. The header `<stdlib.h>`
106
  assuredly provides the same declarations and definitions within the
107
+ global namespace, much as in \IsoCUndated. It may also provide these
108
  names within the namespace `std`. — *end example*]
109
 
110
  <!-- Link reference definitions -->
111
  [alg.c.library]: algorithms.md#alg.c.library
112
  [alloc.errors]: #alloc.errors
113
+ [associative]: containers.md#associative
114
  [atomics]: thread.md#atomics
115
  [bad.alloc]: #bad.alloc
116
  [bad.cast]: #bad.cast
117
  [bad.exception]: #bad.exception
118
  [bad.typeid]: #bad.typeid
119
  [basic.align]: basic.md#basic.align
120
  [basic.compound]: basic.md#basic.compound
121
+ [basic.contract.eval]: basic.md#basic.contract.eval
122
+ [basic.contract.general]: basic.md#basic.contract.general
123
+ [basic.contract.handler]: basic.md#basic.contract.handler
124
  [basic.extended.fp]: basic.md#basic.extended.fp
125
  [basic.fundamental]: basic.md#basic.fundamental
126
  [basic.life]: basic.md#basic.life
127
  [basic.lookup.argdep]: basic.md#basic.lookup.argdep
128
  [basic.scope.namespace]: basic.md#basic.scope.namespace
 
130
  [basic.start.term]: basic.md#basic.start.term
131
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
132
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
133
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
134
  [c.headers]: #c.headers
135
+ [c.locales]: text.md#c.locales
136
  [c.malloc]: mem.md#c.malloc
137
  [c.math.abs]: numerics.md#c.math.abs
138
  [c.math.lerp]: numerics.md#c.math.lerp
139
  [c.math.rand]: numerics.md#c.math.rand
140
+ [c.mb.wcs]: text.md#c.mb.wcs
141
  [cfloat.syn]: #cfloat.syn
142
+ [class.mem.general]: class.md#class.mem.general
143
  [class.prop]: class.md#class.prop
144
  [class.spaceship]: class.md#class.spaceship
145
  [climits.syn]: #climits.syn
146
  [cmp]: #cmp
147
  [cmp.alg]: #cmp.alg
 
152
  [cmp.partialord]: #cmp.partialord
153
  [cmp.result]: #cmp.result
154
  [cmp.strongord]: #cmp.strongord
155
  [cmp.weakord]: #cmp.weakord
156
  [compare.syn]: #compare.syn
157
+ [compare.type]: #compare.type
158
  [complex]: numerics.md#complex
159
  [complex.h.syn]: #complex.h.syn
160
  [concept.totallyordered]: concepts.md#concept.totallyordered
161
  [concepts.compare.general]: concepts.md#concepts.compare.general
162
  [constraints]: library.md#constraints
163
+ [contracts.syn]: #contracts.syn
164
  [conv.prom]: expr.md#conv.prom
165
  [conv.ptr]: expr.md#conv.ptr
166
  [conv.qual]: expr.md#conv.qual
167
  [conv.rank]: basic.md#conv.rank
168
  [coroutine.handle]: #coroutine.handle
 
173
  [coroutine.handle.general]: #coroutine.handle.general
174
  [coroutine.handle.hash]: #coroutine.handle.hash
175
  [coroutine.handle.noop]: #coroutine.handle.noop
176
  [coroutine.handle.noop.address]: #coroutine.handle.noop.address
177
  [coroutine.handle.noop.conv]: #coroutine.handle.noop.conv
178
+ [coroutine.handle.noop.general]: #coroutine.handle.noop.general
179
  [coroutine.handle.noop.observers]: #coroutine.handle.noop.observers
180
  [coroutine.handle.noop.promise]: #coroutine.handle.noop.promise
181
  [coroutine.handle.noop.resumption]: #coroutine.handle.noop.resumption
182
  [coroutine.handle.observers]: #coroutine.handle.observers
183
  [coroutine.handle.promise]: #coroutine.handle.promise
 
205
  [defns.expression.equivalent]: intro.md#defns.expression.equivalent
206
  [except.handle]: except.md#except.handle
207
  [except.nested]: #except.nested
208
  [except.spec]: except.md#except.spec
209
  [except.terminate]: except.md#except.terminate
210
+ [except.throw]: except.md#except.throw
211
  [exception]: #exception
212
  [exception.syn]: #exception.syn
213
  [exception.terminate]: #exception.terminate
214
  [expr.add]: expr.md#expr.add
215
  [expr.await]: expr.md#expr.await
216
  [expr.call]: expr.md#expr.call
217
+ [expr.const]: expr.md#expr.const
218
  [expr.context]: expr.md#expr.context
219
  [expr.delete]: expr.md#expr.delete
220
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
221
  [expr.eq]: expr.md#expr.eq
222
  [expr.new]: expr.md#expr.new
 
223
  [expr.rel]: expr.md#expr.rel
224
  [expr.sizeof]: expr.md#expr.sizeof
225
  [expr.spaceship]: expr.md#expr.spaceship
226
  [expr.typeid]: expr.md#expr.typeid
227
  [get.new.handler]: #get.new.handler
228
  [get.terminate]: #get.terminate
229
  [hardware.interference]: #hardware.interference
230
  [initializer.list.syn]: #initializer.list.syn
231
  [intro.multithread]: basic.md#intro.multithread
232
  [iso646.h.syn]: #iso646.h.syn
233
+ [lex.ccon]: lex.md#lex.ccon
234
+ [lex.charset]: lex.md#lex.charset
235
  [lex.key]: lex.md#lex.key
236
  [library.c]: library.md#library.c
237
  [limits.syn]: #limits.syn
238
+ [locale.codecvt]: text.md#locale.codecvt
239
+ [meta.rqmts]: meta.md#meta.rqmts
240
  [multibyte.strings]: library.md#multibyte.strings
241
  [namespace.udecl]: dcl.md#namespace.udecl
242
  [new.badlength]: #new.badlength
243
  [new.delete]: #new.delete
244
  [new.delete.array]: #new.delete.array
 
268
  [support]: #support
269
  [support.arith.types]: #support.arith.types
270
  [support.c.headers]: #support.c.headers
271
  [support.c.headers.general]: #support.c.headers.general
272
  [support.c.headers.other]: #support.c.headers.other
273
+ [support.contract]: #support.contract
274
+ [support.contract.enum]: #support.contract.enum
275
+ [support.contract.invoke]: #support.contract.invoke
276
+ [support.contract.violation]: #support.contract.violation
277
  [support.coroutine]: #support.coroutine
278
  [support.coroutine.general]: #support.coroutine.general
279
  [support.dynamic]: #support.dynamic
280
  [support.dynamic.general]: #support.dynamic.general
281
  [support.exception]: #support.exception
 
304
  [support.types]: #support.types
305
  [support.types.byteops]: #support.types.byteops
306
  [support.types.layout]: #support.types.layout
307
  [support.types.nullptr]: #support.types.nullptr
308
  [swappable.requirements]: library.md#swappable.requirements
309
+ [tab:support.contract.enum.detection]: #tab:support.contract.enum.detection
310
+ [tab:support.contract.enum.kind]: #tab:support.contract.enum.kind
311
+ [tab:support.contract.enum.semantic]: #tab:support.contract.enum.semantic
312
  [temp.deduct]: temp.md#temp.deduct
313
  [temp.dep.constexpr]: temp.md#temp.dep.constexpr
314
  [temp.dep.expr]: temp.md#temp.dep.expr
 
315
  [term.odr.use]: basic.md#term.odr.use
316
+ [term.replaceable.function]: dcl.md#term.replaceable.function
317
  [terminate]: #terminate
318
  [terminate.handler]: #terminate.handler
319
  [tgmath.h.syn]: #tgmath.h.syn
320
+ [type.index]: #type.index
321
+ [type.index.synopsis]: #type.index.synopsis
322
  [type.info]: #type.info
323
  [typeinfo.syn]: #typeinfo.syn
324
  [uncaught.exceptions]: #uncaught.exceptions
325
+ [unord]: containers.md#unord
326
  [unord.hash]: utilities.md#unord.hash
327
  [utility.arg.requirements]: library.md#utility.arg.requirements
328
  [version.syn]: #version.syn
329
 
330
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
 
348
 
349
  [^9]: Distinguishes types with bases other than 2 (e.g., BCD).
350
 
351
  [^10]: Equivalent to `FLT_EPSILON`, `DBL_EPSILON`, `LDBL_EPSILON`.
352
 
353
+ [^11]: Rounding error is described in ISO/IEC 10967-1:2012 Section 5.2.4
354
+ and Annex C Rationale Section C.5.2.4 — Rounding and rounding
355
+ constants.
356
 
357
  [^12]: Equivalent to `FLT_MIN_EXP`, `DBL_MIN_EXP`, `LDBL_MIN_EXP`.
358
 
359
  [^13]: Equivalent to `FLT_MIN_10_EXP`, `DBL_MIN_10_EXP`,
360
  `LDBL_MIN_10_EXP`.
 
362
  [^14]: Equivalent to `FLT_MAX_EXP`, `DBL_MAX_EXP`, `LDBL_MAX_EXP`.
363
 
364
  [^15]: Equivalent to `FLT_MAX_10_EXP`, `DBL_MAX_10_EXP`,
365
  `LDBL_MAX_10_EXP`.
366
 
367
+ [^16]: Required by ISO/IEC 10967-1:2012.
368
 
369
+ [^17]: Required by ISO/IEC 10967-1:2012.
370
 
371
+ [^18]: Required by ISO/IEC 10967-1:2012.
372
 
373
+ [^19]: Required by ISO/IEC 10967-1:2012.
374
 
375
+ [^20]: Required by ISO/IEC 10967-1:2012.
376
 
377
+ [^21]: Required by ISO/IEC 10967-1:2012.
378
 
379
+ [^22]: ISO/IEC 60559:2020 is the same as IEEE 754-2019.
380
 
381
+ [^23]: Required by ISO/IEC 10967-1:2012.
382
 
383
+ [^24]: Required by ISO/IEC 10967-1:2012.
384
 
385
+ [^25]: Required by ISO/IEC 10967-1:2012.
386
 
387
+ [^26]: Refer to ISO/IEC 60559. Required by ISO/IEC 10967-1:2012.
388
 
389
+ [^27]: Equivalent to `FLT_ROUNDS`. Required by ISO/IEC 10967-1:2012.
390
 
391
  [^28]: A function is called for every time it is registered.
392
 
393
  [^29]: Objects with automatic storage duration are all destroyed in a
394
  program whose `main` function [[basic.start.main]] contains no
 
406
  however, increase the `size` argument to `operator new[]` to obtain
407
  space to store supplemental information.
408
 
409
  [^32]: That is, `a < b`, `a == b`, and `a > b` might all be `false`.
410
 
411
+ [^33]: Such initialization can occur because it is the first odr-use
 
 
 
412
  [[term.odr.use]] of that variable.