From Jason Turner

[execpol]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpvupv61pe/{from.md → to.md} +547 -0
tmp/tmpvupv61pe/{from.md → to.md} RENAMED
@@ -0,0 +1,547 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Execution policies <a id="execpol">[[execpol]]</a>
2
+
3
+ ### In general <a id="execpol.general">[[execpol.general]]</a>
4
+
5
+ This subclause describes classes that are *execution policy* types. An
6
+ object of an execution policy type indicates the kinds of parallelism
7
+ allowed in the execution of an algorithm and expresses the consequent
8
+ requirements on the element access functions.
9
+
10
+ [*Example 1*:
11
+
12
+ ``` cpp
13
+ using namespace std;
14
+ vector<int> v = ...;
15
+
16
+ // standard sequential sort
17
+ sort(v.begin(), v.end());
18
+
19
+ // explicitly sequential sort
20
+ sort(execution::seq, v.begin(), v.end());
21
+
22
+ // permitting parallel execution
23
+ sort(execution::par, v.begin(), v.end());
24
+
25
+ // permitting vectorization as well
26
+ sort(execution::par_unseq, v.begin(), v.end());
27
+ ```
28
+
29
+ — *end example*]
30
+
31
+ [*Note 1*: Because different parallel architectures may require
32
+ idiosyncratic parameters for efficient execution, implementations may
33
+ provide additional execution policies to those described in this
34
+ standard as extensions. — *end note*]
35
+
36
+ ### Header `<execution>` synopsis <a id="execution.syn">[[execution.syn]]</a>
37
+
38
+ ``` cpp
39
+ namespace std {
40
+ // [execpol.type], execution policy type trait
41
+ template<class T> struct is_execution_policy;
42
+ template<class T> inline constexpr bool is_execution_policy_v = is_execution_policy<T>::value;
43
+ }
44
+
45
+ namespace std::execution {
46
+ // [execpol.seq], sequenced execution policy
47
+ class sequenced_policy;
48
+
49
+ // [execpol.par], parallel execution policy
50
+ class parallel_policy;
51
+
52
+ // [execpol.parunseq], parallel and unsequenced execution policy
53
+ class parallel_unsequenced_policy;
54
+
55
+ // [execpol.objects], execution policy objects
56
+ inline constexpr sequenced_policy seq{ unspecified };
57
+ inline constexpr parallel_policy par{ unspecified };
58
+ inline constexpr parallel_unsequenced_policy par_unseq{ unspecified };
59
+ }
60
+ ```
61
+
62
+ ### Execution policy type trait <a id="execpol.type">[[execpol.type]]</a>
63
+
64
+ ``` cpp
65
+ template<class T> struct is_execution_policy { see below };
66
+ ```
67
+
68
+ `is_execution_policy` can be used to detect execution policies for the
69
+ purpose of excluding function signatures from otherwise ambiguous
70
+ overload resolution participation.
71
+
72
+ `is_execution_policy<T>` shall be a `UnaryTypeTrait` with a base
73
+ characteristic of `true_type` if `T` is the type of a standard or
74
+ *implementation-defined* execution policy, otherwise `false_type`.
75
+
76
+ [*Note 1*: This provision reserves the privilege of creating
77
+ non-standard execution policies to the library
78
+ implementation. — *end note*]
79
+
80
+ The behavior of a program that adds specializations for
81
+ `is_execution_policy` is undefined.
82
+
83
+ ### Sequenced execution policy <a id="execpol.seq">[[execpol.seq]]</a>
84
+
85
+ ``` cpp
86
+ class execution::sequenced_policy { unspecified };
87
+ ```
88
+
89
+ The class `execution::sequenced_policy` is an execution policy type used
90
+ as a unique type to disambiguate parallel algorithm overloading and
91
+ require that a parallel algorithm’s execution may not be parallelized.
92
+
93
+ During the execution of a parallel algorithm with the
94
+ `execution::sequenced_policy` policy, if the invocation of an element
95
+ access function exits via an uncaught exception, `terminate()` shall be
96
+ called.
97
+
98
+ ### Parallel execution policy <a id="execpol.par">[[execpol.par]]</a>
99
+
100
+ ``` cpp
101
+ class execution::parallel_policy { unspecified };
102
+ ```
103
+
104
+ The class `execution::parallel_policy` is an execution policy type used
105
+ as a unique type to disambiguate parallel algorithm overloading and
106
+ indicate that a parallel algorithm’s execution may be parallelized.
107
+
108
+ During the execution of a parallel algorithm with the
109
+ `execution::parallel_policy` policy, if the invocation of an element
110
+ access function exits via an uncaught exception, `terminate()` shall be
111
+ called.
112
+
113
+ ### Parallel and unsequenced execution policy <a id="execpol.parunseq">[[execpol.parunseq]]</a>
114
+
115
+ ``` cpp
116
+ class execution::parallel_unsequenced_policy { unspecified };
117
+ ```
118
+
119
+ The class `execution::parallel_unsequenced_policy` is an execution
120
+ policy type used as a unique type to disambiguate parallel algorithm
121
+ overloading and indicate that a parallel algorithm’s execution may be
122
+ parallelized and vectorized.
123
+
124
+ During the execution of a parallel algorithm with the
125
+ `execution::parallel_unsequenced_policy` policy, if the invocation of an
126
+ element access function exits via an uncaught exception, `terminate()`
127
+ shall be called.
128
+
129
+ ### Execution policy objects <a id="execpol.objects">[[execpol.objects]]</a>
130
+
131
+ ``` cpp
132
+ inline constexpr execution::sequenced_policy execution::seq{ unspecified };
133
+ inline constexpr execution::parallel_policy execution::par{ unspecified };
134
+ inline constexpr execution::parallel_unsequenced_policy execution::par_unseq{ unspecified };
135
+ ```
136
+
137
+ The header `<execution>` declares global objects associated with each
138
+ type of execution policy.
139
+
140
+ <!-- Link reference definitions -->
141
+ [alg.sorting]: algorithms.md#alg.sorting
142
+ [algorithms]: algorithms.md#algorithms
143
+ [algorithms.general]: algorithms.md#algorithms.general
144
+ [allocator.adaptor]: #allocator.adaptor
145
+ [allocator.adaptor.cnstr]: #allocator.adaptor.cnstr
146
+ [allocator.adaptor.members]: #allocator.adaptor.members
147
+ [allocator.adaptor.syn]: #allocator.adaptor.syn
148
+ [allocator.adaptor.types]: #allocator.adaptor.types
149
+ [allocator.globals]: #allocator.globals
150
+ [allocator.members]: #allocator.members
151
+ [allocator.requirements]: library.md#allocator.requirements
152
+ [allocator.requirements.completeness]: library.md#allocator.requirements.completeness
153
+ [allocator.tag]: #allocator.tag
154
+ [allocator.traits]: #allocator.traits
155
+ [allocator.traits.members]: #allocator.traits.members
156
+ [allocator.traits.types]: #allocator.traits.types
157
+ [allocator.uses]: #allocator.uses
158
+ [allocator.uses.construction]: #allocator.uses.construction
159
+ [allocator.uses.trait]: #allocator.uses.trait
160
+ [any]: #any
161
+ [any.assign]: #any.assign
162
+ [any.bad_any_cast]: #any.bad_any_cast
163
+ [any.class]: #any.class
164
+ [any.cons]: #any.cons
165
+ [any.modifiers]: #any.modifiers
166
+ [any.nonmembers]: #any.nonmembers
167
+ [any.observers]: #any.observers
168
+ [any.synop]: #any.synop
169
+ [arithmetic.operations]: #arithmetic.operations
170
+ [arithmetic.operations.divides]: #arithmetic.operations.divides
171
+ [arithmetic.operations.minus]: #arithmetic.operations.minus
172
+ [arithmetic.operations.modulus]: #arithmetic.operations.modulus
173
+ [arithmetic.operations.multiplies]: #arithmetic.operations.multiplies
174
+ [arithmetic.operations.negate]: #arithmetic.operations.negate
175
+ [arithmetic.operations.plus]: #arithmetic.operations.plus
176
+ [array]: containers.md#array
177
+ [associative]: containers.md#associative
178
+ [atomics.order]: atomics.md#atomics.order
179
+ [atomics.types.operations]: atomics.md#atomics.types.operations
180
+ [basic.align]: basic.md#basic.align
181
+ [basic.compound]: basic.md#basic.compound
182
+ [basic.def.odr]: basic.md#basic.def.odr
183
+ [basic.fundamental]: basic.md#basic.fundamental
184
+ [basic.life]: basic.md#basic.life
185
+ [basic.stc.dynamic.deallocation]: basic.md#basic.stc.dynamic.deallocation
186
+ [basic.stc.dynamic.safety]: basic.md#basic.stc.dynamic.safety
187
+ [basic.types]: basic.md#basic.types
188
+ [bitmask.types]: library.md#bitmask.types
189
+ [bitset]: #bitset
190
+ [bitset.cons]: #bitset.cons
191
+ [bitset.hash]: #bitset.hash
192
+ [bitset.members]: #bitset.members
193
+ [bitset.operators]: #bitset.operators
194
+ [bitset.syn]: #bitset.syn
195
+ [bitwise.operations]: #bitwise.operations
196
+ [bitwise.operations.and]: #bitwise.operations.and
197
+ [bitwise.operations.not]: #bitwise.operations.not
198
+ [bitwise.operations.or]: #bitwise.operations.or
199
+ [bitwise.operations.xor]: #bitwise.operations.xor
200
+ [c.malloc]: #c.malloc
201
+ [comparisons]: #comparisons
202
+ [comparisons.equal_to]: #comparisons.equal_to
203
+ [comparisons.greater]: #comparisons.greater
204
+ [comparisons.greater_equal]: #comparisons.greater_equal
205
+ [comparisons.less]: #comparisons.less
206
+ [comparisons.less_equal]: #comparisons.less_equal
207
+ [comparisons.not_equal_to]: #comparisons.not_equal_to
208
+ [conv.array]: conv.md#conv.array
209
+ [conv.func]: conv.md#conv.func
210
+ [conv.lval]: conv.md#conv.lval
211
+ [conv.rank]: conv.md#conv.rank
212
+ [csignal.syn]: language.md#csignal.syn
213
+ [cstdlib.syn]: language.md#cstdlib.syn
214
+ [ctime.syn]: #ctime.syn
215
+ [dcl.array]: dcl.md#dcl.array
216
+ [dcl.constexpr]: dcl.md#dcl.constexpr
217
+ [dcl.ref]: dcl.md#dcl.ref
218
+ [declval]: #declval
219
+ [default.allocator]: #default.allocator
220
+ [defns.const.subexpr]: library.md#defns.const.subexpr
221
+ [defns.referenceable]: library.md#defns.referenceable
222
+ [execpol]: #execpol
223
+ [execpol.general]: #execpol.general
224
+ [execpol.objects]: #execpol.objects
225
+ [execpol.par]: #execpol.par
226
+ [execpol.parunseq]: #execpol.parunseq
227
+ [execpol.seq]: #execpol.seq
228
+ [execpol.type]: #execpol.type
229
+ [execution.syn]: #execution.syn
230
+ [expr]: expr.md#expr
231
+ [expr.add]: expr.md#expr.add
232
+ [expr.alignof]: expr.md#expr.alignof
233
+ [expr.bit.and]: expr.md#expr.bit.and
234
+ [expr.call]: expr.md#expr.call
235
+ [expr.eq]: expr.md#expr.eq
236
+ [expr.log.and]: expr.md#expr.log.and
237
+ [expr.log.or]: expr.md#expr.log.or
238
+ [expr.mul]: expr.md#expr.mul
239
+ [expr.or]: expr.md#expr.or
240
+ [expr.rel]: expr.md#expr.rel
241
+ [expr.unary.op]: expr.md#expr.unary.op
242
+ [expr.xor]: expr.md#expr.xor
243
+ [forward]: #forward
244
+ [forward.iterators]: iterators.md#forward.iterators
245
+ [func.bind]: #func.bind
246
+ [func.bind.bind]: #func.bind.bind
247
+ [func.bind.isbind]: #func.bind.isbind
248
+ [func.bind.isplace]: #func.bind.isplace
249
+ [func.bind.place]: #func.bind.place
250
+ [func.def]: #func.def
251
+ [func.invoke]: #func.invoke
252
+ [func.memfn]: #func.memfn
253
+ [func.not_fn]: #func.not_fn
254
+ [func.require]: #func.require
255
+ [func.search]: #func.search
256
+ [func.search.bm]: #func.search.bm
257
+ [func.search.bmh]: #func.search.bmh
258
+ [func.search.default]: #func.search.default
259
+ [func.wrap]: #func.wrap
260
+ [func.wrap.badcall]: #func.wrap.badcall
261
+ [func.wrap.badcall.const]: #func.wrap.badcall.const
262
+ [func.wrap.func]: #func.wrap.func
263
+ [func.wrap.func.alg]: #func.wrap.func.alg
264
+ [func.wrap.func.cap]: #func.wrap.func.cap
265
+ [func.wrap.func.con]: #func.wrap.func.con
266
+ [func.wrap.func.inv]: #func.wrap.func.inv
267
+ [func.wrap.func.mod]: #func.wrap.func.mod
268
+ [func.wrap.func.nullptr]: #func.wrap.func.nullptr
269
+ [func.wrap.func.targ]: #func.wrap.func.targ
270
+ [function.objects]: #function.objects
271
+ [functional.syn]: #functional.syn
272
+ [hash.requirements]: library.md#hash.requirements
273
+ [input.iterators]: iterators.md#input.iterators
274
+ [intro.multithread]: intro.md#intro.multithread
275
+ [intseq]: #intseq
276
+ [intseq.general]: #intseq.general
277
+ [intseq.intseq]: #intseq.intseq
278
+ [intseq.make]: #intseq.make
279
+ [invalid.argument]: diagnostics.md#invalid.argument
280
+ [iostate.flags]: input.md#iostate.flags
281
+ [istream.formatted]: input.md#istream.formatted
282
+ [locale.codecvt]: localization.md#locale.codecvt
283
+ [logical.operations]: #logical.operations
284
+ [logical.operations.and]: #logical.operations.and
285
+ [logical.operations.not]: #logical.operations.not
286
+ [logical.operations.or]: #logical.operations.or
287
+ [mem.poly.allocator.class]: #mem.poly.allocator.class
288
+ [mem.poly.allocator.ctor]: #mem.poly.allocator.ctor
289
+ [mem.poly.allocator.eq]: #mem.poly.allocator.eq
290
+ [mem.poly.allocator.mem]: #mem.poly.allocator.mem
291
+ [mem.res]: #mem.res
292
+ [mem.res.class]: #mem.res.class
293
+ [mem.res.eq]: #mem.res.eq
294
+ [mem.res.global]: #mem.res.global
295
+ [mem.res.monotonic.buffer]: #mem.res.monotonic.buffer
296
+ [mem.res.monotonic.buffer.ctor]: #mem.res.monotonic.buffer.ctor
297
+ [mem.res.monotonic.buffer.mem]: #mem.res.monotonic.buffer.mem
298
+ [mem.res.pool]: #mem.res.pool
299
+ [mem.res.pool.ctor]: #mem.res.pool.ctor
300
+ [mem.res.pool.mem]: #mem.res.pool.mem
301
+ [mem.res.pool.options]: #mem.res.pool.options
302
+ [mem.res.pool.overview]: #mem.res.pool.overview
303
+ [mem.res.private]: #mem.res.private
304
+ [mem.res.public]: #mem.res.public
305
+ [mem.res.syn]: #mem.res.syn
306
+ [memory]: #memory
307
+ [memory.general]: #memory.general
308
+ [memory.syn]: #memory.syn
309
+ [meta]: #meta
310
+ [meta.help]: #meta.help
311
+ [meta.logical]: #meta.logical
312
+ [meta.rel]: #meta.rel
313
+ [meta.rqmts]: #meta.rqmts
314
+ [meta.trans]: #meta.trans
315
+ [meta.trans.arr]: #meta.trans.arr
316
+ [meta.trans.cv]: #meta.trans.cv
317
+ [meta.trans.other]: #meta.trans.other
318
+ [meta.trans.ptr]: #meta.trans.ptr
319
+ [meta.trans.ref]: #meta.trans.ref
320
+ [meta.trans.sign]: #meta.trans.sign
321
+ [meta.type.synop]: #meta.type.synop
322
+ [meta.unary]: #meta.unary
323
+ [meta.unary.cat]: #meta.unary.cat
324
+ [meta.unary.comp]: #meta.unary.comp
325
+ [meta.unary.prop]: #meta.unary.prop
326
+ [meta.unary.prop.query]: #meta.unary.prop.query
327
+ [multibyte.strings]: library.md#multibyte.strings
328
+ [namespace.std]: library.md#namespace.std
329
+ [new.delete]: language.md#new.delete
330
+ [nullablepointer.requirements]: library.md#nullablepointer.requirements
331
+ [numeric.requirements]: numerics.md#numeric.requirements
332
+ [operators]: #operators
333
+ [optional]: #optional
334
+ [optional.assign]: #optional.assign
335
+ [optional.bad.access]: #optional.bad.access
336
+ [optional.comp_with_t]: #optional.comp_with_t
337
+ [optional.ctor]: #optional.ctor
338
+ [optional.dtor]: #optional.dtor
339
+ [optional.general]: #optional.general
340
+ [optional.hash]: #optional.hash
341
+ [optional.mod]: #optional.mod
342
+ [optional.nullops]: #optional.nullops
343
+ [optional.nullopt]: #optional.nullopt
344
+ [optional.observe]: #optional.observe
345
+ [optional.optional]: #optional.optional
346
+ [optional.relops]: #optional.relops
347
+ [optional.specalg]: #optional.specalg
348
+ [optional.swap]: #optional.swap
349
+ [optional.syn]: #optional.syn
350
+ [ostream.formatted]: input.md#ostream.formatted
351
+ [out.of.range]: diagnostics.md#out.of.range
352
+ [over.match.call]: over.md#over.match.call
353
+ [over.match.class.deduct]: over.md#over.match.class.deduct
354
+ [overflow.error]: diagnostics.md#overflow.error
355
+ [pair.astuple]: #pair.astuple
356
+ [pair.piecewise]: #pair.piecewise
357
+ [pairs]: #pairs
358
+ [pairs.general]: #pairs.general
359
+ [pairs.pair]: #pairs.pair
360
+ [pairs.spec]: #pairs.spec
361
+ [pointer.traits]: #pointer.traits
362
+ [pointer.traits.functions]: #pointer.traits.functions
363
+ [pointer.traits.types]: #pointer.traits.types
364
+ [ptr.align]: #ptr.align
365
+ [ratio]: #ratio
366
+ [ratio.arithmetic]: #ratio.arithmetic
367
+ [ratio.comparison]: #ratio.comparison
368
+ [ratio.general]: #ratio.general
369
+ [ratio.ratio]: #ratio.ratio
370
+ [ratio.si]: #ratio.si
371
+ [ratio.syn]: #ratio.syn
372
+ [refwrap]: #refwrap
373
+ [refwrap.access]: #refwrap.access
374
+ [refwrap.assign]: #refwrap.assign
375
+ [refwrap.const]: #refwrap.const
376
+ [refwrap.helpers]: #refwrap.helpers
377
+ [refwrap.invoke]: #refwrap.invoke
378
+ [res.on.data.races]: library.md#res.on.data.races
379
+ [scoped.adaptor.operators]: #scoped.adaptor.operators
380
+ [smartptr]: #smartptr
381
+ [special]: special.md#special
382
+ [specialized.addressof]: #specialized.addressof
383
+ [specialized.algorithms]: #specialized.algorithms
384
+ [specialized.destroy]: #specialized.destroy
385
+ [stmt.dcl]: stmt.md#stmt.dcl
386
+ [string.classes]: strings.md#string.classes
387
+ [support.dynamic]: language.md#support.dynamic
388
+ [swappable.requirements]: library.md#swappable.requirements
389
+ [tab:copyassignable]: #tab:copyassignable
390
+ [tab:copyconstructible]: #tab:copyconstructible
391
+ [tab:defaultconstructible]: #tab:defaultconstructible
392
+ [tab:destructible]: #tab:destructible
393
+ [tab:equalitycomparable]: #tab:equalitycomparable
394
+ [tab:lessthancomparable]: #tab:lessthancomparable
395
+ [tab:moveassignable]: #tab:moveassignable
396
+ [tab:moveconstructible]: #tab:moveconstructible
397
+ [tab:optional.assign.copy]: #tab:optional.assign.copy
398
+ [tab:optional.assign.copy.templ]: #tab:optional.assign.copy.templ
399
+ [tab:optional.assign.move]: #tab:optional.assign.move
400
+ [tab:optional.assign.move.templ]: #tab:optional.assign.move.templ
401
+ [tab:optional.swap]: #tab:optional.swap
402
+ [tab:ratio.arithmetic]: #tab:ratio.arithmetic
403
+ [tab:time.clock]: #tab:time.clock
404
+ [tab:util.lib.summary]: #tab:util.lib.summary
405
+ [temp.deduct]: temp.md#temp.deduct
406
+ [template.bitset]: #template.bitset
407
+ [time]: #time
408
+ [time.clock]: #time.clock
409
+ [time.clock.hires]: #time.clock.hires
410
+ [time.clock.req]: #time.clock.req
411
+ [time.clock.steady]: #time.clock.steady
412
+ [time.clock.system]: #time.clock.system
413
+ [time.duration]: #time.duration
414
+ [time.duration.alg]: #time.duration.alg
415
+ [time.duration.arithmetic]: #time.duration.arithmetic
416
+ [time.duration.cast]: #time.duration.cast
417
+ [time.duration.comparisons]: #time.duration.comparisons
418
+ [time.duration.cons]: #time.duration.cons
419
+ [time.duration.literals]: #time.duration.literals
420
+ [time.duration.nonmember]: #time.duration.nonmember
421
+ [time.duration.observer]: #time.duration.observer
422
+ [time.duration.special]: #time.duration.special
423
+ [time.general]: #time.general
424
+ [time.point]: #time.point
425
+ [time.point.arithmetic]: #time.point.arithmetic
426
+ [time.point.cast]: #time.point.cast
427
+ [time.point.comparisons]: #time.point.comparisons
428
+ [time.point.cons]: #time.point.cons
429
+ [time.point.nonmember]: #time.point.nonmember
430
+ [time.point.observer]: #time.point.observer
431
+ [time.point.special]: #time.point.special
432
+ [time.syn]: #time.syn
433
+ [time.traits]: #time.traits
434
+ [time.traits.duration_values]: #time.traits.duration_values
435
+ [time.traits.is_fp]: #time.traits.is_fp
436
+ [time.traits.specializations]: #time.traits.specializations
437
+ [tuple]: #tuple
438
+ [tuple.apply]: #tuple.apply
439
+ [tuple.assign]: #tuple.assign
440
+ [tuple.cnstr]: #tuple.cnstr
441
+ [tuple.creation]: #tuple.creation
442
+ [tuple.elem]: #tuple.elem
443
+ [tuple.general]: #tuple.general
444
+ [tuple.helper]: #tuple.helper
445
+ [tuple.rel]: #tuple.rel
446
+ [tuple.special]: #tuple.special
447
+ [tuple.swap]: #tuple.swap
448
+ [tuple.syn]: #tuple.syn
449
+ [tuple.traits]: #tuple.traits
450
+ [tuple.tuple]: #tuple.tuple
451
+ [type.index]: #type.index
452
+ [type.index.hash]: #type.index.hash
453
+ [type.index.members]: #type.index.members
454
+ [type.index.overview]: #type.index.overview
455
+ [type.index.synopsis]: #type.index.synopsis
456
+ [uninitialized.construct.default]: #uninitialized.construct.default
457
+ [uninitialized.construct.value]: #uninitialized.construct.value
458
+ [uninitialized.copy]: #uninitialized.copy
459
+ [uninitialized.fill]: #uninitialized.fill
460
+ [uninitialized.move]: #uninitialized.move
461
+ [unique.ptr]: #unique.ptr
462
+ [unique.ptr.create]: #unique.ptr.create
463
+ [unique.ptr.dltr]: #unique.ptr.dltr
464
+ [unique.ptr.dltr.dflt]: #unique.ptr.dltr.dflt
465
+ [unique.ptr.dltr.dflt1]: #unique.ptr.dltr.dflt1
466
+ [unique.ptr.dltr.general]: #unique.ptr.dltr.general
467
+ [unique.ptr.runtime]: #unique.ptr.runtime
468
+ [unique.ptr.runtime.asgn]: #unique.ptr.runtime.asgn
469
+ [unique.ptr.runtime.ctor]: #unique.ptr.runtime.ctor
470
+ [unique.ptr.runtime.modifiers]: #unique.ptr.runtime.modifiers
471
+ [unique.ptr.runtime.observers]: #unique.ptr.runtime.observers
472
+ [unique.ptr.single]: #unique.ptr.single
473
+ [unique.ptr.single.asgn]: #unique.ptr.single.asgn
474
+ [unique.ptr.single.ctor]: #unique.ptr.single.ctor
475
+ [unique.ptr.single.dtor]: #unique.ptr.single.dtor
476
+ [unique.ptr.single.modifiers]: #unique.ptr.single.modifiers
477
+ [unique.ptr.single.observers]: #unique.ptr.single.observers
478
+ [unique.ptr.special]: #unique.ptr.special
479
+ [unord]: containers.md#unord
480
+ [unord.hash]: #unord.hash
481
+ [util.dynamic.safety]: #util.dynamic.safety
482
+ [util.smartptr]: #util.smartptr
483
+ [util.smartptr.enab]: #util.smartptr.enab
484
+ [util.smartptr.getdeleter]: #util.smartptr.getdeleter
485
+ [util.smartptr.hash]: #util.smartptr.hash
486
+ [util.smartptr.ownerless]: #util.smartptr.ownerless
487
+ [util.smartptr.shared]: #util.smartptr.shared
488
+ [util.smartptr.shared.assign]: #util.smartptr.shared.assign
489
+ [util.smartptr.shared.atomic]: #util.smartptr.shared.atomic
490
+ [util.smartptr.shared.cast]: #util.smartptr.shared.cast
491
+ [util.smartptr.shared.cmp]: #util.smartptr.shared.cmp
492
+ [util.smartptr.shared.const]: #util.smartptr.shared.const
493
+ [util.smartptr.shared.create]: #util.smartptr.shared.create
494
+ [util.smartptr.shared.dest]: #util.smartptr.shared.dest
495
+ [util.smartptr.shared.io]: #util.smartptr.shared.io
496
+ [util.smartptr.shared.mod]: #util.smartptr.shared.mod
497
+ [util.smartptr.shared.obs]: #util.smartptr.shared.obs
498
+ [util.smartptr.shared.spec]: #util.smartptr.shared.spec
499
+ [util.smartptr.weak]: #util.smartptr.weak
500
+ [util.smartptr.weak.assign]: #util.smartptr.weak.assign
501
+ [util.smartptr.weak.bad]: #util.smartptr.weak.bad
502
+ [util.smartptr.weak.const]: #util.smartptr.weak.const
503
+ [util.smartptr.weak.dest]: #util.smartptr.weak.dest
504
+ [util.smartptr.weak.mod]: #util.smartptr.weak.mod
505
+ [util.smartptr.weak.obs]: #util.smartptr.weak.obs
506
+ [util.smartptr.weak.spec]: #util.smartptr.weak.spec
507
+ [utilities]: #utilities
508
+ [utilities.general]: #utilities.general
509
+ [utility]: #utility
510
+ [utility.as_const]: #utility.as_const
511
+ [utility.exchange]: #utility.exchange
512
+ [utility.from.chars]: #utility.from.chars
513
+ [utility.swap]: #utility.swap
514
+ [utility.syn]: #utility.syn
515
+ [utility.to.chars]: #utility.to.chars
516
+ [variant]: #variant
517
+ [variant.assign]: #variant.assign
518
+ [variant.bad.access]: #variant.bad.access
519
+ [variant.ctor]: #variant.ctor
520
+ [variant.dtor]: #variant.dtor
521
+ [variant.general]: #variant.general
522
+ [variant.get]: #variant.get
523
+ [variant.hash]: #variant.hash
524
+ [variant.helper]: #variant.helper
525
+ [variant.mod]: #variant.mod
526
+ [variant.monostate]: #variant.monostate
527
+ [variant.monostate.relops]: #variant.monostate.relops
528
+ [variant.relops]: #variant.relops
529
+ [variant.specalg]: #variant.specalg
530
+ [variant.status]: #variant.status
531
+ [variant.swap]: #variant.swap
532
+ [variant.syn]: #variant.syn
533
+ [variant.traits]: #variant.traits
534
+ [variant.variant]: #variant.variant
535
+ [variant.visit]: #variant.visit
536
+
537
+ [^1]: `pointer_safety::preferred` might be returned to indicate that a
538
+ leak detector is running so that the program can avoid spurious leak
539
+ reports.
540
+
541
+ [^2]: Such a type is a function pointer or a class type which has a
542
+ member `operator()` or a class type which has a conversion to a
543
+ pointer to function.
544
+
545
+ [^3]: `strftime` supports the C conversion specifiers `C`, `D`, `e`,
546
+ `F`, `g`, `G`, `h`, `r`, `R`, `t`, `T`, `u`, `V`, and `z`, and the
547
+ modifiers `E` and `O`.