From Jason Turner

[mdspan.sub.sub]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpxx7p8p4k/{from.md → to.md} +427 -0
tmp/tmpxx7p8p4k/{from.md → to.md} RENAMED
@@ -0,0 +1,427 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##### `submdspan` function template <a id="mdspan.sub.sub">[[mdspan.sub.sub]]</a>
2
+
3
+ ``` cpp
4
+ template<class ElementType, class Extents, class LayoutPolicy,
5
+ class AccessorPolicy, class... SliceSpecifiers>
6
+ constexpr auto submdspan(
7
+ const mdspan<ElementType, Extents, LayoutPolicy, AccessorPolicy>& src,
8
+ SliceSpecifiers... slices) -> see below;
9
+ ```
10
+
11
+ Let `index_type` be `typename Extents::index_type`.
12
+
13
+ Let `sub_map_offset` be the result of
14
+ `submdspan_mapping(src.mapping(), slices...)`.
15
+
16
+ [*Note 1*: This invocation of `submdspan_mapping` selects a function
17
+ call via overload resolution on a candidate set that includes the lookup
18
+ set found by argument-dependent
19
+ lookup [[basic.lookup.argdep]]. — *end note*]
20
+
21
+ *Constraints:*
22
+
23
+ - `sizeof...(slices)` equals `Extents::rank()`, and
24
+ - the expression `submdspan_mapping(src.mapping(), slices...)` is
25
+ well-formed when treated as an unevaluated operand.
26
+
27
+ *Mandates:*
28
+
29
+ - `decltype(submdspan_mapping(src.mapping(), slices...))` is a
30
+ specialization of `submd-span_mapping_result`.
31
+ - `is_same_v<remove_cvref_t<decltype(sub_map_offset.mapping.extents())>,`
32
+ `decltype(submdspan_extents(src.mapping(), slices...))>` is `true`.
33
+ - For each rank index k of `src.extents()`, exactly one of the following
34
+ is true:
35
+ - Sₖ models `convertible_to<index_type>`,
36
+ - Sₖ models `index-pair-like<index_type>`,
37
+ - `is_convertible_v<`Sₖ`, full_extent_t>` is `true`, or
38
+ - Sₖ is a specialization of `strided_slice`.
39
+
40
+ *Preconditions:*
41
+
42
+ - For each rank index k of `src.extents()`, all of the following are
43
+ `true`:
44
+ - if Sₖ is a specialization of `strided_slice`
45
+ - `$s_k$.extent` = 0, or
46
+ - `$s_k$.stride` > 0
47
+ - $0 \le \texttt{\textit{first_}<index_type, $k$>(slices...)}$
48
+ $\le \texttt{\textit{last_}<$k$>(src.extents(), slices...)}$
49
+ ≤ `{}src.extent($k$)`
50
+ - `sub_map_offset.mapping.extents() == submdspan_extents(src.mapping(), slices...)`
51
+ is `true`; and
52
+ - for each integer pack `I` which is a multidimensional index in
53
+ `sub_map_offset.mapping.extents()`,
54
+ ``` cpp
55
+ sub_map_offset.mapping(I...) + sub_map_offset.offset ==
56
+ src.mapping()(src-indices(array{I...}, slices...))
57
+ ```
58
+
59
+ is `true`.
60
+
61
+ [*Note 2*: These conditions ensure that the mapping returned by
62
+ `submdspan_mapping` matches the algorithmically expected index-mapping
63
+ given the slice specifiers. — *end note*]
64
+
65
+ *Effects:* Equivalent to:
66
+
67
+ ``` cpp
68
+ auto sub_map_result = submdspan_mapping(src.mapping(), slices...);
69
+ return mdspan(src.accessor().offset(src.data_handle(), sub_map_result.offset),
70
+ sub_map_result.mapping,
71
+ typename AccessorPolicy::offset_policy(src.accessor()));
72
+ ```
73
+
74
+ [*Example 1*:
75
+
76
+ Given a rank-3 `mdspan grid3d` representing a three-dimensional grid of
77
+ regularly spaced points in a rectangular prism, the function
78
+ `zero_surface` sets all elements on the surface of the 3-dimensional
79
+ shape to zero. It does so by reusing a function `zero_2d` that takes a
80
+ rank-2 `mdspan`.
81
+
82
+ ``` cpp
83
+ // zero out all elements in an mdspan
84
+ template<class T, class E, class L, class A>
85
+ void zero_2d(mdspan<T, E, L, A> a) {
86
+ static_assert(a.rank() == 2);
87
+ for (int i = 0; i < a.extent(0); i++)
88
+ for (int j = 0; j < a.extent(1); j++)
89
+ a[i, j] = 0;
90
+ }
91
+
92
+ // zero out just the surface
93
+ template<class T, class E, class L, class A>
94
+ void zero_surface(mdspan<T, E, L, A> grid3d) {
95
+ static_assert(grid3d.rank() == 3);
96
+ zero_2d(submdspan(grid3d, 0, full_extent, full_extent));
97
+ zero_2d(submdspan(grid3d, full_extent, 0, full_extent));
98
+ zero_2d(submdspan(grid3d, full_extent, full_extent, 0));
99
+ zero_2d(submdspan(grid3d, grid3d.extent(0) - 1, full_extent, full_extent));
100
+ zero_2d(submdspan(grid3d, full_extent, grid3d.extent(1) - 1, full_extent));
101
+ zero_2d(submdspan(grid3d, full_extent, full_extent, grid3d.extent(2) - 1));
102
+ }
103
+ ```
104
+
105
+ — *end example*]
106
+
107
+ <!-- Link reference definitions -->
108
+ [alg.equal]: algorithms.md#alg.equal
109
+ [alg.sorting]: algorithms.md#alg.sorting
110
+ [algorithm.stable]: library.md#algorithm.stable
111
+ [algorithms]: algorithms.md#algorithms
112
+ [algorithms.requirements]: algorithms.md#algorithms.requirements
113
+ [allocator.requirements]: library.md#allocator.requirements
114
+ [allocator.requirements.completeness]: library.md#allocator.requirements.completeness
115
+ [allocator.traits.members]: mem.md#allocator.traits.members
116
+ [allocator.uses.construction]: mem.md#allocator.uses.construction
117
+ [array]: #array
118
+ [array.cons]: #array.cons
119
+ [array.creation]: #array.creation
120
+ [array.members]: #array.members
121
+ [array.overview]: #array.overview
122
+ [array.special]: #array.special
123
+ [array.syn]: #array.syn
124
+ [array.tuple]: #array.tuple
125
+ [array.zero]: #array.zero
126
+ [associative]: #associative
127
+ [associative.general]: #associative.general
128
+ [associative.map.syn]: #associative.map.syn
129
+ [associative.reqmts]: #associative.reqmts
130
+ [associative.reqmts.except]: #associative.reqmts.except
131
+ [associative.reqmts.general]: #associative.reqmts.general
132
+ [associative.set.syn]: #associative.set.syn
133
+ [basic.fundamental]: basic.md#basic.fundamental
134
+ [basic.lookup.argdep]: basic.md#basic.lookup.argdep
135
+ [basic.string]: strings.md#basic.string
136
+ [class.copy.ctor]: class.md#class.copy.ctor
137
+ [class.default.ctor]: class.md#class.default.ctor
138
+ [class.dtor]: class.md#class.dtor
139
+ [container.adaptors]: #container.adaptors
140
+ [container.adaptors.format]: #container.adaptors.format
141
+ [container.adaptors.general]: #container.adaptors.general
142
+ [container.alloc.reqmts]: #container.alloc.reqmts
143
+ [container.insert.return]: #container.insert.return
144
+ [container.intro.reqmts]: #container.intro.reqmts
145
+ [container.node]: #container.node
146
+ [container.node.compat]: #container.node.compat
147
+ [container.node.cons]: #container.node.cons
148
+ [container.node.dtor]: #container.node.dtor
149
+ [container.node.modifiers]: #container.node.modifiers
150
+ [container.node.observers]: #container.node.observers
151
+ [container.node.overview]: #container.node.overview
152
+ [container.opt.reqmts]: #container.opt.reqmts
153
+ [container.reqmts]: #container.reqmts
154
+ [container.requirements]: #container.requirements
155
+ [container.requirements.dataraces]: #container.requirements.dataraces
156
+ [container.requirements.general]: #container.requirements.general
157
+ [container.requirements.pre]: #container.requirements.pre
158
+ [container.rev.reqmts]: #container.rev.reqmts
159
+ [containers]: #containers
160
+ [containers.general]: #containers.general
161
+ [containers.summary]: #containers.summary
162
+ [dcl.init.aggr]: dcl.md#dcl.init.aggr
163
+ [defns.valid]: intro.md#defns.valid
164
+ [deque]: #deque
165
+ [deque.capacity]: #deque.capacity
166
+ [deque.cons]: #deque.cons
167
+ [deque.erasure]: #deque.erasure
168
+ [deque.modifiers]: #deque.modifiers
169
+ [deque.overview]: #deque.overview
170
+ [deque.syn]: #deque.syn
171
+ [expr.const]: expr.md#expr.const
172
+ [flat.map]: #flat.map
173
+ [flat.map.access]: #flat.map.access
174
+ [flat.map.capacity]: #flat.map.capacity
175
+ [flat.map.cons]: #flat.map.cons
176
+ [flat.map.cons.alloc]: #flat.map.cons.alloc
177
+ [flat.map.defn]: #flat.map.defn
178
+ [flat.map.erasure]: #flat.map.erasure
179
+ [flat.map.modifiers]: #flat.map.modifiers
180
+ [flat.map.overview]: #flat.map.overview
181
+ [flat.map.syn]: #flat.map.syn
182
+ [flat.multimap]: #flat.multimap
183
+ [flat.multimap.cons]: #flat.multimap.cons
184
+ [flat.multimap.cons.alloc]: #flat.multimap.cons.alloc
185
+ [flat.multimap.defn]: #flat.multimap.defn
186
+ [flat.multimap.erasure]: #flat.multimap.erasure
187
+ [flat.multimap.overview]: #flat.multimap.overview
188
+ [flat.multiset]: #flat.multiset
189
+ [flat.multiset.cons]: #flat.multiset.cons
190
+ [flat.multiset.cons.alloc]: #flat.multiset.cons.alloc
191
+ [flat.multiset.defn]: #flat.multiset.defn
192
+ [flat.multiset.erasure]: #flat.multiset.erasure
193
+ [flat.multiset.modifiers]: #flat.multiset.modifiers
194
+ [flat.multiset.overview]: #flat.multiset.overview
195
+ [flat.set]: #flat.set
196
+ [flat.set.cons]: #flat.set.cons
197
+ [flat.set.cons.alloc]: #flat.set.cons.alloc
198
+ [flat.set.defn]: #flat.set.defn
199
+ [flat.set.erasure]: #flat.set.erasure
200
+ [flat.set.modifiers]: #flat.set.modifiers
201
+ [flat.set.overview]: #flat.set.overview
202
+ [flat.set.syn]: #flat.set.syn
203
+ [forward.iterators]: iterators.md#forward.iterators
204
+ [forward.list]: #forward.list
205
+ [forward.list.access]: #forward.list.access
206
+ [forward.list.cons]: #forward.list.cons
207
+ [forward.list.erasure]: #forward.list.erasure
208
+ [forward.list.iter]: #forward.list.iter
209
+ [forward.list.modifiers]: #forward.list.modifiers
210
+ [forward.list.ops]: #forward.list.ops
211
+ [forward.list.overview]: #forward.list.overview
212
+ [forward.list.syn]: #forward.list.syn
213
+ [hash.requirements]: library.md#hash.requirements
214
+ [hive]: #hive
215
+ [hive.capacity]: #hive.capacity
216
+ [hive.cons]: #hive.cons
217
+ [hive.erasure]: #hive.erasure
218
+ [hive.modifiers]: #hive.modifiers
219
+ [hive.operations]: #hive.operations
220
+ [hive.overview]: #hive.overview
221
+ [hive.syn]: #hive.syn
222
+ [inplace.vector]: #inplace.vector
223
+ [inplace.vector.capacity]: #inplace.vector.capacity
224
+ [inplace.vector.cons]: #inplace.vector.cons
225
+ [inplace.vector.data]: #inplace.vector.data
226
+ [inplace.vector.erasure]: #inplace.vector.erasure
227
+ [inplace.vector.modifiers]: #inplace.vector.modifiers
228
+ [inplace.vector.overview]: #inplace.vector.overview
229
+ [inplace.vector.syn]: #inplace.vector.syn
230
+ [iterator.concept.contiguous]: iterators.md#iterator.concept.contiguous
231
+ [iterator.concept.random.access]: iterators.md#iterator.concept.random.access
232
+ [iterator.requirements]: iterators.md#iterator.requirements
233
+ [iterator.requirements.general]: iterators.md#iterator.requirements.general
234
+ [list]: #list
235
+ [list.capacity]: #list.capacity
236
+ [list.cons]: #list.cons
237
+ [list.erasure]: #list.erasure
238
+ [list.modifiers]: #list.modifiers
239
+ [list.ops]: #list.ops
240
+ [list.overview]: #list.overview
241
+ [list.syn]: #list.syn
242
+ [map]: #map
243
+ [map.access]: #map.access
244
+ [map.cons]: #map.cons
245
+ [map.erasure]: #map.erasure
246
+ [map.modifiers]: #map.modifiers
247
+ [map.overview]: #map.overview
248
+ [mdspan.accessor]: #mdspan.accessor
249
+ [mdspan.accessor.aligned]: #mdspan.accessor.aligned
250
+ [mdspan.accessor.aligned.members]: #mdspan.accessor.aligned.members
251
+ [mdspan.accessor.aligned.overview]: #mdspan.accessor.aligned.overview
252
+ [mdspan.accessor.default]: #mdspan.accessor.default
253
+ [mdspan.accessor.default.members]: #mdspan.accessor.default.members
254
+ [mdspan.accessor.default.overview]: #mdspan.accessor.default.overview
255
+ [mdspan.accessor.general]: #mdspan.accessor.general
256
+ [mdspan.accessor.reqmts]: #mdspan.accessor.reqmts
257
+ [mdspan.extents]: #mdspan.extents
258
+ [mdspan.extents.cmp]: #mdspan.extents.cmp
259
+ [mdspan.extents.cons]: #mdspan.extents.cons
260
+ [mdspan.extents.dextents]: #mdspan.extents.dextents
261
+ [mdspan.extents.dims]: #mdspan.extents.dims
262
+ [mdspan.extents.expo]: #mdspan.extents.expo
263
+ [mdspan.extents.obs]: #mdspan.extents.obs
264
+ [mdspan.extents.overview]: #mdspan.extents.overview
265
+ [mdspan.layout]: #mdspan.layout
266
+ [mdspan.layout.general]: #mdspan.layout.general
267
+ [mdspan.layout.left]: #mdspan.layout.left
268
+ [mdspan.layout.left.cons]: #mdspan.layout.left.cons
269
+ [mdspan.layout.left.obs]: #mdspan.layout.left.obs
270
+ [mdspan.layout.left.overview]: #mdspan.layout.left.overview
271
+ [mdspan.layout.leftpad]: #mdspan.layout.leftpad
272
+ [mdspan.layout.leftpad.cons]: #mdspan.layout.leftpad.cons
273
+ [mdspan.layout.leftpad.expo]: #mdspan.layout.leftpad.expo
274
+ [mdspan.layout.leftpad.obs]: #mdspan.layout.leftpad.obs
275
+ [mdspan.layout.leftpad.overview]: #mdspan.layout.leftpad.overview
276
+ [mdspan.layout.policy.overview]: #mdspan.layout.policy.overview
277
+ [mdspan.layout.policy.reqmts]: #mdspan.layout.policy.reqmts
278
+ [mdspan.layout.reqmts]: #mdspan.layout.reqmts
279
+ [mdspan.layout.right]: #mdspan.layout.right
280
+ [mdspan.layout.right.cons]: #mdspan.layout.right.cons
281
+ [mdspan.layout.right.obs]: #mdspan.layout.right.obs
282
+ [mdspan.layout.right.overview]: #mdspan.layout.right.overview
283
+ [mdspan.layout.rightpad]: #mdspan.layout.rightpad
284
+ [mdspan.layout.rightpad.cons]: #mdspan.layout.rightpad.cons
285
+ [mdspan.layout.rightpad.expo]: #mdspan.layout.rightpad.expo
286
+ [mdspan.layout.rightpad.obs]: #mdspan.layout.rightpad.obs
287
+ [mdspan.layout.rightpad.overview]: #mdspan.layout.rightpad.overview
288
+ [mdspan.layout.stride]: #mdspan.layout.stride
289
+ [mdspan.layout.stride.cons]: #mdspan.layout.stride.cons
290
+ [mdspan.layout.stride.expo]: #mdspan.layout.stride.expo
291
+ [mdspan.layout.stride.obs]: #mdspan.layout.stride.obs
292
+ [mdspan.layout.stride.overview]: #mdspan.layout.stride.overview
293
+ [mdspan.mdspan]: #mdspan.mdspan
294
+ [mdspan.mdspan.cons]: #mdspan.mdspan.cons
295
+ [mdspan.mdspan.members]: #mdspan.mdspan.members
296
+ [mdspan.mdspan.overview]: #mdspan.mdspan.overview
297
+ [mdspan.overview]: #mdspan.overview
298
+ [mdspan.sub]: #mdspan.sub
299
+ [mdspan.sub.extents]: #mdspan.sub.extents
300
+ [mdspan.sub.helpers]: #mdspan.sub.helpers
301
+ [mdspan.sub.map]: #mdspan.sub.map
302
+ [mdspan.sub.map.common]: #mdspan.sub.map.common
303
+ [mdspan.sub.map.left]: #mdspan.sub.map.left
304
+ [mdspan.sub.map.leftpad]: #mdspan.sub.map.leftpad
305
+ [mdspan.sub.map.result]: #mdspan.sub.map.result
306
+ [mdspan.sub.map.right]: #mdspan.sub.map.right
307
+ [mdspan.sub.map.rightpad]: #mdspan.sub.map.rightpad
308
+ [mdspan.sub.map.stride]: #mdspan.sub.map.stride
309
+ [mdspan.sub.overview]: #mdspan.sub.overview
310
+ [mdspan.sub.strided.slice]: #mdspan.sub.strided.slice
311
+ [mdspan.sub.sub]: #mdspan.sub.sub
312
+ [mdspan.syn]: #mdspan.syn
313
+ [multimap]: #multimap
314
+ [multimap.cons]: #multimap.cons
315
+ [multimap.erasure]: #multimap.erasure
316
+ [multimap.modifiers]: #multimap.modifiers
317
+ [multimap.overview]: #multimap.overview
318
+ [multiset]: #multiset
319
+ [multiset.cons]: #multiset.cons
320
+ [multiset.erasure]: #multiset.erasure
321
+ [multiset.overview]: #multiset.overview
322
+ [priority.queue]: #priority.queue
323
+ [priqueue.cons]: #priqueue.cons
324
+ [priqueue.cons.alloc]: #priqueue.cons.alloc
325
+ [priqueue.members]: #priqueue.members
326
+ [priqueue.overview]: #priqueue.overview
327
+ [priqueue.special]: #priqueue.special
328
+ [queue]: #queue
329
+ [queue.cons]: #queue.cons
330
+ [queue.cons.alloc]: #queue.cons.alloc
331
+ [queue.defn]: #queue.defn
332
+ [queue.mod]: #queue.mod
333
+ [queue.ops]: #queue.ops
334
+ [queue.special]: #queue.special
335
+ [queue.syn]: #queue.syn
336
+ [random.access.iterators]: iterators.md#random.access.iterators
337
+ [re.results]: text.md#re.results
338
+ [res.on.data.races]: library.md#res.on.data.races
339
+ [sequence.reqmts]: #sequence.reqmts
340
+ [sequences]: #sequences
341
+ [sequences.general]: #sequences.general
342
+ [set]: #set
343
+ [set.cons]: #set.cons
344
+ [set.erasure]: #set.erasure
345
+ [set.modifiers]: #set.modifiers
346
+ [set.overview]: #set.overview
347
+ [span.cons]: #span.cons
348
+ [span.deduct]: #span.deduct
349
+ [span.elem]: #span.elem
350
+ [span.iterators]: #span.iterators
351
+ [span.objectrep]: #span.objectrep
352
+ [span.obs]: #span.obs
353
+ [span.overview]: #span.overview
354
+ [span.sub]: #span.sub
355
+ [span.syn]: #span.syn
356
+ [stack]: #stack
357
+ [stack.cons]: #stack.cons
358
+ [stack.cons.alloc]: #stack.cons.alloc
359
+ [stack.defn]: #stack.defn
360
+ [stack.general]: #stack.general
361
+ [stack.mod]: #stack.mod
362
+ [stack.ops]: #stack.ops
363
+ [stack.special]: #stack.special
364
+ [stack.syn]: #stack.syn
365
+ [stacktrace.basic]: diagnostics.md#stacktrace.basic
366
+ [strings]: strings.md#strings
367
+ [swappable.requirements]: library.md#swappable.requirements
368
+ [temp.deduct]: temp.md#temp.deduct
369
+ [temp.type]: temp.md#temp.type
370
+ [term.structural.type]: temp.md#term.structural.type
371
+ [term.trivially.copyable.type]: basic.md#term.trivially.copyable.type
372
+ [unord]: #unord
373
+ [unord.general]: #unord.general
374
+ [unord.hash]: utilities.md#unord.hash
375
+ [unord.map]: #unord.map
376
+ [unord.map.cnstr]: #unord.map.cnstr
377
+ [unord.map.elem]: #unord.map.elem
378
+ [unord.map.erasure]: #unord.map.erasure
379
+ [unord.map.modifiers]: #unord.map.modifiers
380
+ [unord.map.overview]: #unord.map.overview
381
+ [unord.map.syn]: #unord.map.syn
382
+ [unord.multimap]: #unord.multimap
383
+ [unord.multimap.cnstr]: #unord.multimap.cnstr
384
+ [unord.multimap.erasure]: #unord.multimap.erasure
385
+ [unord.multimap.modifiers]: #unord.multimap.modifiers
386
+ [unord.multimap.overview]: #unord.multimap.overview
387
+ [unord.multiset]: #unord.multiset
388
+ [unord.multiset.cnstr]: #unord.multiset.cnstr
389
+ [unord.multiset.erasure]: #unord.multiset.erasure
390
+ [unord.multiset.overview]: #unord.multiset.overview
391
+ [unord.req]: #unord.req
392
+ [unord.req.except]: #unord.req.except
393
+ [unord.req.general]: #unord.req.general
394
+ [unord.set]: #unord.set
395
+ [unord.set.cnstr]: #unord.set.cnstr
396
+ [unord.set.erasure]: #unord.set.erasure
397
+ [unord.set.modifiers]: #unord.set.modifiers
398
+ [unord.set.overview]: #unord.set.overview
399
+ [unord.set.syn]: #unord.set.syn
400
+ [vector]: #vector
401
+ [vector.bool]: #vector.bool
402
+ [vector.bool.fmt]: #vector.bool.fmt
403
+ [vector.bool.pspc]: #vector.bool.pspc
404
+ [vector.capacity]: #vector.capacity
405
+ [vector.cons]: #vector.cons
406
+ [vector.data]: #vector.data
407
+ [vector.erasure]: #vector.erasure
408
+ [vector.modifiers]: #vector.modifiers
409
+ [vector.overview]: #vector.overview
410
+ [vector.syn]: #vector.syn
411
+ [views]: #views
412
+ [views.contiguous]: #views.contiguous
413
+ [views.general]: #views.general
414
+ [views.multidim]: #views.multidim
415
+ [views.span]: #views.span
416
+
417
+ [^1]: Equality comparison is a refinement of partitioning if no two
418
+ objects that compare equal fall into different partitions.
419
+
420
+ [^2]: These member functions are only provided by containers whose
421
+ iterators are random access iterators.
422
+
423
+ [^3]: As specified in  [[allocator.requirements]], the requirements in
424
+ this Clause apply only to lists whose allocators compare equal.
425
+
426
+ [^4]: `reserve()` uses `Allocator::allocate()` which can throw an
427
+ appropriate exception.