From Jason Turner

[support.runtime]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpsy37ik79/{from.md → to.md} +102 -45
tmp/tmpsy37ik79/{from.md → to.md} RENAMED
@@ -1,19 +1,19 @@
1
  ## Other runtime support <a id="support.runtime">[[support.runtime]]</a>
2
 
3
  Headers `<csetjmp>` (nonlocal jumps), `<csignal>` (signal handling),
4
  `<cstdarg>` (variable arguments), and `<cstdlib>` (runtime environment
5
- `getenv, system`), provide further compatibility with C code.
6
 
7
- Calls to the function `getenv` ([[cstdlib.syn]]) shall not introduce a
8
- data race ([[res.on.data.races]]) provided that nothing modifies the
9
  environment.
10
 
11
  [*Note 1*: Calls to the POSIX functions `setenv` and `putenv` modify
12
  the environment. — *end note*]
13
 
14
- A call to the `setlocale` function ([[c.locales]]) may introduce a data
15
  race with other calls to the `setlocale` function or with calls to
16
  functions that are affected by the current C locale. The implementation
17
  shall behave as if no library function other than `locale::global` calls
18
  the `setlocale` function.
19
 
@@ -31,21 +31,21 @@ namespace std {
31
  ```
32
 
33
  The contents of the header `<cstdarg>` are the same as the C standard
34
  library header `<stdarg.h>`, with the following changes: The
35
  restrictions that ISO C places on the second parameter to the `va_start`
36
- macro in header `<stdarg.h>` are different in this International
37
- Standard. The parameter `parmN` is the rightmost parameter in the
38
- variable parameter list of the function definition (the one just before
39
- the `...`).[^34] If the parameter `parmN` is a pack expansion (
40
- [[temp.variadic]]) or an entity resulting from a lambda capture (
41
- [[expr.prim.lambda]]), the program is ill-formed, no diagnostic
42
- required. If the parameter `parmN` is of a reference type, or of a type
43
- that is not compatible with the type that results when passing an
44
- argument for which there is no parameter, the behavior is undefined.
45
 
46
- ISO C 7.16.1.1.
47
 
48
  ### Header `<csetjmp>` synopsis <a id="csetjmp.syn">[[csetjmp.syn]]</a>
49
 
50
  ``` cpp
51
  namespace std {
@@ -58,16 +58,18 @@ namespace std {
58
 
59
  The contents of the header `<csetjmp>` are the same as the C standard
60
  library header `<setjmp.h>`.
61
 
62
  The function signature `longjmp(jmp_buf jbuf, int val)` has more
63
- restricted behavior in this International Standard. A `setjmp`/`longjmp`
64
- call pair has undefined behavior if replacing the `setjmp` and `longjmp`
65
- by `catch` and `throw` would invoke any non-trivial destructors for any
66
- automatic objects.
 
 
67
 
68
- ISO C 7.13.
69
 
70
  ### Header `<csignal>` synopsis <a id="csignal.syn">[[csignal.syn]]</a>
71
 
72
  ``` cpp
73
  namespace std {
@@ -98,11 +100,11 @@ library header `<signal.h>`.
98
 
99
  A call to the function `signal` synchronizes with any resulting
100
  invocation of the signal handler so installed.
101
 
102
  A *plain lock-free atomic operation* is an invocation of a function `f`
103
- from Clause  [[atomics]], such that:
104
 
105
  - `f` is the function `atomic_is_lock_free()`, or
106
  - `f` is the member function `is_lock_free()`, or
107
  - `f` is a non-static member function invoked on an object `A`, such
108
  that `A.is_lock_free()` yields `true`, or
@@ -110,32 +112,32 @@ from Clause  [[atomics]], such that:
110
  `A` passed to `f`, `atomic_is_lock_free(A)` yields `true`.
111
 
112
  An evaluation is *signal-safe* unless it includes one of the following:
113
 
114
  - a call to any standard library function, except for plain lock-free
115
- atomic operations and functions explicitly identified as signal-safe.
116
  \[*Note 1*: This implicitly excludes the use of `new` and `delete`
117
  expressions that rely on a library-provided memory
118
  allocator. — *end note*]
119
  - an access to an object with thread storage duration;
120
  - a `dynamic_cast` expression;
121
  - throwing of an exception;
122
  - control entering a *try-block* or *function-try-block*;
123
  - initialization of a variable with static storage duration requiring
124
- dynamic initialization ([[basic.start.dynamic]], [[stmt.dcl]]) [^35];
125
  or
126
  - waiting for the completion of the initialization of a variable with
127
- static storage duration ([[stmt.dcl]]).
128
 
129
  A signal handler invocation has undefined behavior if it includes an
130
  evaluation that is not signal-safe.
131
 
132
  The function `signal` is signal-safe if it is invoked with the first
133
  argument equal to the signal number corresponding to the signal that
134
  caused the invocation of the handler.
135
 
136
- ISO C 7.14.
137
 
138
  <!-- Link reference definitions -->
139
  [alg.c.library]: algorithms.md#alg.c.library
140
  [alloc.errors]: #alloc.errors
141
  [atomics]: atomics.md#atomics
@@ -145,11 +147,10 @@ ISO C 7.14.
145
  [bad.typeid]: #bad.typeid
146
  [basic.align]: basic.md#basic.align
147
  [basic.def.odr]: basic.md#basic.def.odr
148
  [basic.fundamental]: basic.md#basic.fundamental
149
  [basic.life]: basic.md#basic.life
150
- [basic.start]: basic.md#basic.start
151
  [basic.start.dynamic]: basic.md#basic.start.dynamic
152
  [basic.start.term]: basic.md#basic.start.term
153
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
154
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
155
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
@@ -158,75 +159,119 @@ ISO C 7.14.
158
  [c.malloc]: utilities.md#c.malloc
159
  [c.math.abs]: numerics.md#c.math.abs
160
  [c.math.rand]: numerics.md#c.math.rand
161
  [c.mb.wcs]: strings.md#c.mb.wcs
162
  [cfloat.syn]: #cfloat.syn
163
- [class]: class.md#class
164
- [class.free]: special.md#class.free
 
165
  [climits.syn]: #climits.syn
 
 
 
 
 
 
 
 
 
 
 
166
  [complex]: numerics.md#complex
 
167
  [constraints]: library.md#constraints
168
- [conv.ptr]: conv.md#conv.ptr
169
- [conv.qual]: conv.md#conv.qual
170
- [conv.rank]: conv.md#conv.rank
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  [csetjmp.syn]: #csetjmp.syn
172
  [csignal.syn]: #csignal.syn
173
  [cstdarg.syn]: #cstdarg.syn
174
  [cstddef.syn]: #cstddef.syn
175
  [cstdint]: #cstdint
176
  [cstdint.syn]: #cstdint.syn
177
  [cstdlib.syn]: #cstdlib.syn
 
 
 
178
  [dcl.init.list]: dcl.md#dcl.init.list
 
179
  [denorm.style]: #denorm.style
180
  [except.handle]: except.md#except.handle
181
  [except.nested]: #except.nested
182
- [except.special]: except.md#except.special
183
  [except.terminate]: except.md#except.terminate
184
  [except.uncaught]: except.md#except.uncaught
185
  [exception]: #exception
186
  [exception.syn]: #exception.syn
187
  [exception.terminate]: #exception.terminate
188
  [expr.add]: expr.md#expr.add
 
 
 
189
  [expr.delete]: expr.md#expr.delete
190
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
 
191
  [expr.new]: expr.md#expr.new
192
  [expr.prim.lambda]: expr.md#expr.prim.lambda
 
193
  [expr.sizeof]: expr.md#expr.sizeof
 
194
  [expr.typeid]: expr.md#expr.typeid
195
  [fp.style]: #fp.style
196
  [get.new.handler]: #get.new.handler
197
  [get.terminate]: #get.terminate
198
  [hardware.interference]: #hardware.interference
199
- [initializer_list.syn]: #initializer_list.syn
200
- [intro.memory]: intro.md#intro.memory
201
- [intro.multithread]: intro.md#intro.multithread
202
- [language.support]: #language.support
203
  [library.c]: library.md#library.c
204
  [limits.syn]: #limits.syn
205
  [locale.codecvt]: localization.md#locale.codecvt
206
- [memory]: utilities.md#memory
207
  [multibyte.strings]: library.md#multibyte.strings
208
  [new.badlength]: #new.badlength
209
  [new.delete]: #new.delete
210
  [new.delete.array]: #new.delete.array
211
  [new.delete.dataraces]: #new.delete.dataraces
212
  [new.delete.placement]: #new.delete.placement
213
  [new.delete.single]: #new.delete.single
214
  [new.handler]: #new.handler
215
  [new.syn]: #new.syn
216
- [nullablepointer.requirements]: library.md#nullablepointer.requirements
217
  [numeric.limits]: #numeric.limits
218
  [numeric.limits.members]: #numeric.limits.members
219
  [numeric.special]: #numeric.special
220
  [propagation]: #propagation
221
  [ptr.launder]: #ptr.launder
222
  [res.on.data.races]: library.md#res.on.data.races
223
  [round.style]: #round.style
224
  [set.new.handler]: #set.new.handler
225
  [set.terminate]: #set.terminate
 
226
  [stmt.dcl]: stmt.md#stmt.dcl
227
  [string.classes]: strings.md#string.classes
 
 
228
  [support.dynamic]: #support.dynamic
229
  [support.exception]: #support.exception
230
  [support.general]: #support.general
231
  [support.initlist]: #support.initlist
232
  [support.initlist.access]: #support.initlist.access
@@ -235,24 +280,34 @@ ISO C 7.14.
235
  [support.limits]: #support.limits
236
  [support.limits.general]: #support.limits.general
237
  [support.rtti]: #support.rtti
238
  [support.runtime]: #support.runtime
239
  [support.signal]: #support.signal
 
 
 
 
 
240
  [support.start.term]: #support.start.term
 
241
  [support.types]: #support.types
242
  [support.types.byteops]: #support.types.byteops
243
  [support.types.layout]: #support.types.layout
244
  [support.types.nullptr]: #support.types.nullptr
245
- [tab:lang.sup.lib.summary]: #tab:lang.sup.lib.summary
 
246
  [temp.dep.constexpr]: temp.md#temp.dep.constexpr
247
  [temp.dep.expr]: temp.md#temp.dep.expr
248
  [temp.variadic]: temp.md#temp.variadic
249
  [terminate]: #terminate
250
  [terminate.handler]: #terminate.handler
251
  [type.info]: #type.info
252
  [typeinfo.syn]: #typeinfo.syn
253
  [uncaught.exceptions]: #uncaught.exceptions
 
 
 
254
 
255
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
256
 
257
  [^2]: Note that `offsetof` is required to work as specified even if
258
  unary `operator&` is overloaded for any of the types involved.
@@ -317,14 +372,14 @@ ISO C 7.14.
317
  [^29]: Equivalent to `FLT_ROUNDS`. Required by LIA-1.
318
 
319
  [^30]: A function is called for every time it is registered.
320
 
321
  [^31]: Objects with automatic storage duration are all destroyed in a
322
- program whose `main` function ([[basic.start.main]]) contains no
323
- automatic objects and executes the call to `exit()`. Control can be
324
- transferred directly to such a `main` function by throwing an
325
- exception that is caught in `main`.
326
 
327
  [^32]: The macros `EXIT_FAILURE` and `EXIT_SUCCESS` are defined in
328
  `<cstdlib>`.
329
 
330
  [^33]: It is not the direct responsibility of `operator new[]` or
@@ -332,10 +387,12 @@ ISO C 7.14.
332
  the array. Those operations are performed elsewhere in the array
333
  `new` and `delete` expressions. The array `new` expression, may,
334
  however, increase the `size` argument to `operator new[]` to obtain
335
  space to store supplemental information.
336
 
337
- [^34]: Note that `va_start` is required to work as specified even if
 
 
338
  unary `operator&` is overloaded for the type of `parmN`.
339
 
340
- [^35]: Such initialization might occur because it is the first odr-use (
341
- [[basic.def.odr]]) of that variable.
 
1
  ## Other runtime support <a id="support.runtime">[[support.runtime]]</a>
2
 
3
  Headers `<csetjmp>` (nonlocal jumps), `<csignal>` (signal handling),
4
  `<cstdarg>` (variable arguments), and `<cstdlib>` (runtime environment
5
+ `getenv`, `system`), provide further compatibility with C code.
6
 
7
+ Calls to the function `getenv` [[cstdlib.syn]] shall not introduce a
8
+ data race [[res.on.data.races]] provided that nothing modifies the
9
  environment.
10
 
11
  [*Note 1*: Calls to the POSIX functions `setenv` and `putenv` modify
12
  the environment. — *end note*]
13
 
14
+ A call to the `setlocale` function [[c.locales]] may introduce a data
15
  race with other calls to the `setlocale` function or with calls to
16
  functions that are affected by the current C locale. The implementation
17
  shall behave as if no library function other than `locale::global` calls
18
  the `setlocale` function.
19
 
 
31
  ```
32
 
33
  The contents of the header `<cstdarg>` are the same as the C standard
34
  library header `<stdarg.h>`, with the following changes: The
35
  restrictions that ISO C places on the second parameter to the `va_start`
36
+ macro in header `<stdarg.h>` are different in this document. The
37
+ parameter `parmN` is the rightmost parameter in the variable parameter
38
+ list of the function definition (the one just before the `...`).[^35] If
39
+ the parameter `parmN` is a pack expansion [[temp.variadic]] or an entity
40
+ resulting from a lambda capture [[expr.prim.lambda]], the program is
41
+ ill-formed, no diagnostic required. If the parameter `parmN` is of a
42
+ reference type, or of a type that is not compatible with the type that
43
+ results when passing an argument for which there is no parameter, the
44
+ behavior is undefined.
45
 
46
+ See also: ISO C 7.16.1.1
47
 
48
  ### Header `<csetjmp>` synopsis <a id="csetjmp.syn">[[csetjmp.syn]]</a>
49
 
50
  ``` cpp
51
  namespace std {
 
58
 
59
  The contents of the header `<csetjmp>` are the same as the C standard
60
  library header `<setjmp.h>`.
61
 
62
  The function signature `longjmp(jmp_buf jbuf, int val)` has more
63
+ restricted behavior in this document. A `setjmp`/`longjmp` call pair has
64
+ undefined behavior if replacing the `setjmp` and `longjmp` by `catch`
65
+ and `throw` would invoke any non-trivial destructors for any objects
66
+ with automatic storage duration. A call to `setjmp` or `longjmp` has
67
+ undefined behavior if invoked in a suspension context of a coroutine
68
+ [[expr.await]].
69
 
70
+ See also: ISO C 7.13
71
 
72
  ### Header `<csignal>` synopsis <a id="csignal.syn">[[csignal.syn]]</a>
73
 
74
  ``` cpp
75
  namespace std {
 
100
 
101
  A call to the function `signal` synchronizes with any resulting
102
  invocation of the signal handler so installed.
103
 
104
  A *plain lock-free atomic operation* is an invocation of a function `f`
105
+ from [[atomics]], such that:
106
 
107
  - `f` is the function `atomic_is_lock_free()`, or
108
  - `f` is the member function `is_lock_free()`, or
109
  - `f` is a non-static member function invoked on an object `A`, such
110
  that `A.is_lock_free()` yields `true`, or
 
112
  `A` passed to `f`, `atomic_is_lock_free(A)` yields `true`.
113
 
114
  An evaluation is *signal-safe* unless it includes one of the following:
115
 
116
  - a call to any standard library function, except for plain lock-free
117
+ atomic operations and functions explicitly identified as signal-safe;
118
  \[*Note 1*: This implicitly excludes the use of `new` and `delete`
119
  expressions that rely on a library-provided memory
120
  allocator. — *end note*]
121
  - an access to an object with thread storage duration;
122
  - a `dynamic_cast` expression;
123
  - throwing of an exception;
124
  - control entering a *try-block* or *function-try-block*;
125
  - initialization of a variable with static storage duration requiring
126
+ dynamic initialization ([[basic.start.dynamic]], [[stmt.dcl]]) [^36];
127
  or
128
  - waiting for the completion of the initialization of a variable with
129
+ static storage duration [[stmt.dcl]].
130
 
131
  A signal handler invocation has undefined behavior if it includes an
132
  evaluation that is not signal-safe.
133
 
134
  The function `signal` is signal-safe if it is invoked with the first
135
  argument equal to the signal number corresponding to the signal that
136
  caused the invocation of the handler.
137
 
138
+ See also: ISO C 7.14
139
 
140
  <!-- Link reference definitions -->
141
  [alg.c.library]: algorithms.md#alg.c.library
142
  [alloc.errors]: #alloc.errors
143
  [atomics]: atomics.md#atomics
 
147
  [bad.typeid]: #bad.typeid
148
  [basic.align]: basic.md#basic.align
149
  [basic.def.odr]: basic.md#basic.def.odr
150
  [basic.fundamental]: basic.md#basic.fundamental
151
  [basic.life]: basic.md#basic.life
 
152
  [basic.start.dynamic]: basic.md#basic.start.dynamic
153
  [basic.start.term]: basic.md#basic.start.term
154
  [basic.stc.dynamic]: basic.md#basic.stc.dynamic
155
  [basic.stc.dynamic.allocation]: basic.md#basic.stc.dynamic.allocation
156
  [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
 
159
  [c.malloc]: utilities.md#c.malloc
160
  [c.math.abs]: numerics.md#c.math.abs
161
  [c.math.rand]: numerics.md#c.math.rand
162
  [c.mb.wcs]: strings.md#c.mb.wcs
163
  [cfloat.syn]: #cfloat.syn
164
+ [class.mem]: class.md#class.mem
165
+ [class.prop]: class.md#class.prop
166
+ [class.spaceship]: class.md#class.spaceship
167
  [climits.syn]: #climits.syn
168
+ [cmp]: #cmp
169
+ [cmp.alg]: #cmp.alg
170
+ [cmp.categories]: #cmp.categories
171
+ [cmp.categories.pre]: #cmp.categories.pre
172
+ [cmp.common]: #cmp.common
173
+ [cmp.concept]: #cmp.concept
174
+ [cmp.partialord]: #cmp.partialord
175
+ [cmp.result]: #cmp.result
176
+ [cmp.strongord]: #cmp.strongord
177
+ [cmp.weakord]: #cmp.weakord
178
+ [compare.syn]: #compare.syn
179
  [complex]: numerics.md#complex
180
+ [concept.totallyordered]: concepts.md#concept.totallyordered
181
  [constraints]: library.md#constraints
182
+ [conv.ptr]: expr.md#conv.ptr
183
+ [conv.qual]: expr.md#conv.qual
184
+ [conv.rank]: basic.md#conv.rank
185
+ [coroutine.handle]: #coroutine.handle
186
+ [coroutine.handle.compare]: #coroutine.handle.compare
187
+ [coroutine.handle.con]: #coroutine.handle.con
188
+ [coroutine.handle.export.import]: #coroutine.handle.export.import
189
+ [coroutine.handle.hash]: #coroutine.handle.hash
190
+ [coroutine.handle.noop]: #coroutine.handle.noop
191
+ [coroutine.handle.noop.address]: #coroutine.handle.noop.address
192
+ [coroutine.handle.noop.observers]: #coroutine.handle.noop.observers
193
+ [coroutine.handle.noop.promise]: #coroutine.handle.noop.promise
194
+ [coroutine.handle.noop.resumption]: #coroutine.handle.noop.resumption
195
+ [coroutine.handle.observers]: #coroutine.handle.observers
196
+ [coroutine.handle.promise]: #coroutine.handle.promise
197
+ [coroutine.handle.resumption]: #coroutine.handle.resumption
198
+ [coroutine.noop]: #coroutine.noop
199
+ [coroutine.noop.coroutine]: #coroutine.noop.coroutine
200
+ [coroutine.promise.noop]: #coroutine.promise.noop
201
+ [coroutine.syn]: #coroutine.syn
202
+ [coroutine.traits]: #coroutine.traits
203
+ [coroutine.traits.primary]: #coroutine.traits.primary
204
+ [coroutine.trivial.awaitables]: #coroutine.trivial.awaitables
205
+ [cpp.line]: cpp.md#cpp.line
206
+ [cpp17.nullablepointer]: #cpp17.nullablepointer
207
  [csetjmp.syn]: #csetjmp.syn
208
  [csignal.syn]: #csignal.syn
209
  [cstdarg.syn]: #cstdarg.syn
210
  [cstddef.syn]: #cstddef.syn
211
  [cstdint]: #cstdint
212
  [cstdint.syn]: #cstdint.syn
213
  [cstdlib.syn]: #cstdlib.syn
214
+ [customization.point.object]: library.md#customization.point.object
215
+ [dcl.fct.def.coroutine]: dcl.md#dcl.fct.def.coroutine
216
+ [dcl.fct.default]: dcl.md#dcl.fct.default
217
  [dcl.init.list]: dcl.md#dcl.init.list
218
+ [defns.expression-equivalent]: library.md#defns.expression-equivalent
219
  [denorm.style]: #denorm.style
220
  [except.handle]: except.md#except.handle
221
  [except.nested]: #except.nested
222
+ [except.spec]: except.md#except.spec
223
  [except.terminate]: except.md#except.terminate
224
  [except.uncaught]: except.md#except.uncaught
225
  [exception]: #exception
226
  [exception.syn]: #exception.syn
227
  [exception.terminate]: #exception.terminate
228
  [expr.add]: expr.md#expr.add
229
+ [expr.await]: expr.md#expr.await
230
+ [expr.call]: expr.md#expr.call
231
+ [expr.context]: expr.md#expr.context
232
  [expr.delete]: expr.md#expr.delete
233
  [expr.dynamic.cast]: expr.md#expr.dynamic.cast
234
+ [expr.eq]: expr.md#expr.eq
235
  [expr.new]: expr.md#expr.new
236
  [expr.prim.lambda]: expr.md#expr.prim.lambda
237
+ [expr.rel]: expr.md#expr.rel
238
  [expr.sizeof]: expr.md#expr.sizeof
239
+ [expr.spaceship]: expr.md#expr.spaceship
240
  [expr.typeid]: expr.md#expr.typeid
241
  [fp.style]: #fp.style
242
  [get.new.handler]: #get.new.handler
243
  [get.terminate]: #get.terminate
244
  [hardware.interference]: #hardware.interference
245
+ [initializer.list.syn]: #initializer.list.syn
246
+ [intro.multithread]: basic.md#intro.multithread
 
 
247
  [library.c]: library.md#library.c
248
  [limits.syn]: #limits.syn
249
  [locale.codecvt]: localization.md#locale.codecvt
 
250
  [multibyte.strings]: library.md#multibyte.strings
251
  [new.badlength]: #new.badlength
252
  [new.delete]: #new.delete
253
  [new.delete.array]: #new.delete.array
254
  [new.delete.dataraces]: #new.delete.dataraces
255
  [new.delete.placement]: #new.delete.placement
256
  [new.delete.single]: #new.delete.single
257
  [new.handler]: #new.handler
258
  [new.syn]: #new.syn
 
259
  [numeric.limits]: #numeric.limits
260
  [numeric.limits.members]: #numeric.limits.members
261
  [numeric.special]: #numeric.special
262
  [propagation]: #propagation
263
  [ptr.launder]: #ptr.launder
264
  [res.on.data.races]: library.md#res.on.data.races
265
  [round.style]: #round.style
266
  [set.new.handler]: #set.new.handler
267
  [set.terminate]: #set.terminate
268
+ [source.location.syn]: #source.location.syn
269
  [stmt.dcl]: stmt.md#stmt.dcl
270
  [string.classes]: strings.md#string.classes
271
+ [support]: #support
272
+ [support.coroutine]: #support.coroutine
273
  [support.dynamic]: #support.dynamic
274
  [support.exception]: #support.exception
275
  [support.general]: #support.general
276
  [support.initlist]: #support.initlist
277
  [support.initlist.access]: #support.initlist.access
 
280
  [support.limits]: #support.limits
281
  [support.limits.general]: #support.limits.general
282
  [support.rtti]: #support.rtti
283
  [support.runtime]: #support.runtime
284
  [support.signal]: #support.signal
285
+ [support.srcloc]: #support.srcloc
286
+ [support.srcloc.class]: #support.srcloc.class
287
+ [support.srcloc.cons]: #support.srcloc.cons
288
+ [support.srcloc.current]: #support.srcloc.current
289
+ [support.srcloc.obs]: #support.srcloc.obs
290
  [support.start.term]: #support.start.term
291
+ [support.summary]: #support.summary
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
  [terminate]: #terminate
302
  [terminate.handler]: #terminate.handler
303
  [type.info]: #type.info
304
  [typeinfo.syn]: #typeinfo.syn
305
  [uncaught.exceptions]: #uncaught.exceptions
306
+ [unord.hash]: utilities.md#unord.hash
307
+ [utility.arg.requirements]: library.md#utility.arg.requirements
308
+ [version.syn]: #version.syn
309
 
310
  [^1]: Possible definitions include `0` and `0L`, but not `(void*)0`.
311
 
312
  [^2]: Note that `offsetof` is required to work as specified even if
313
  unary `operator&` is overloaded for any of the types involved.
 
372
  [^29]: Equivalent to `FLT_ROUNDS`. Required by LIA-1.
373
 
374
  [^30]: A function is called for every time it is registered.
375
 
376
  [^31]: Objects with automatic storage duration are all destroyed in a
377
+ program whose `main` function [[basic.start.main]] contains no
378
+ objects with automatic storage duration and executes the call to
379
+ `exit()`. Control can be transferred directly to such a `main`
380
+ function by throwing an exception that is caught in `main`.
381
 
382
  [^32]: The macros `EXIT_FAILURE` and `EXIT_SUCCESS` are defined in
383
  `<cstdlib>`.
384
 
385
  [^33]: It is not the direct responsibility of `operator new[]` or
 
387
  the array. Those operations are performed elsewhere in the array
388
  `new` and `delete` expressions. The array `new` expression, may,
389
  however, increase the `size` argument to `operator new[]` to obtain
390
  space to store supplemental information.
391
 
392
+ [^34]: That is, `a < b`, `a == b`, and `a > b` might all be `false`.
393
+
394
+ [^35]: Note that `va_start` is required to work as specified even if
395
  unary `operator&` is overloaded for the type of `parmN`.
396
 
397
+ [^36]: Such initialization might occur because it is the first odr-use
398
+ [[basic.def.odr]] of that variable.