From Jason Turner

[mdspan.mdspan.members]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpxl3e4b9j/{from.md → to.md} +350 -0
tmp/tmpxl3e4b9j/{from.md → to.md} RENAMED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##### Members <a id="mdspan.mdspan.members">[[mdspan.mdspan.members]]</a>
2
+
3
+ ``` cpp
4
+ template<class... OtherIndexTypes>
5
+ constexpr reference operator[](OtherIndexTypes... indices) const;
6
+ ```
7
+
8
+ *Constraints:*
9
+
10
+ - `(is_convertible_v<OtherIndexTypes, index_type> && ...)` is `true`,
11
+ - `(is_nothrow_constructible_v<index_type, OtherIndexTypes> && ...)` is
12
+ `true`, and
13
+ - `sizeof...(OtherIndexTypes) == rank()` is `true`.
14
+
15
+ Let `I` be `extents_type::`*`index-cast`*`(std::move(indices))`.
16
+
17
+ *Preconditions:* `I` is a multidimensional index in `extents()`.
18
+
19
+ [*Note 1*: This implies that
20
+ *`map_`*`(I) < `*`map_`*`.required_span_size()` is
21
+ `true`. — *end note*]
22
+
23
+ *Effects:* Equivalent to:
24
+
25
+ ``` cpp
26
+ return acc_.access(ptr_, map_(static_cast<index_type>(std::move(indices))...));
27
+ ```
28
+
29
+ ``` cpp
30
+ template<class OtherIndexType>
31
+ constexpr reference operator[](span<OtherIndexType, rank()> indices) const;
32
+ template<class OtherIndexType>
33
+ constexpr reference operator[](const array<OtherIndexType, rank()>& indices) const;
34
+ ```
35
+
36
+ *Constraints:*
37
+
38
+ - `is_convertible_v<const OtherIndexType&, index_type>` is `true`, and
39
+ - `is_nothrow_constructible_v<index_type, const OtherIndexType&>` is
40
+ `true`.
41
+
42
+ *Effects:* Let `P` be a parameter pack such that
43
+
44
+ ``` cpp
45
+ is_same_v<make_index_sequence<rank()>, index_sequence<P...>>
46
+ ```
47
+
48
+ is `true`. Equivalent to:
49
+
50
+ ``` cpp
51
+ return operator[](as_const(indices[P])...);
52
+ ```
53
+
54
+ ``` cpp
55
+ constexpr size_type size() const noexcept;
56
+ ```
57
+
58
+ *Preconditions:* The size of the multidimensional index space
59
+ `extents()` is representable as a value of type `size_type`
60
+ [[basic.fundamental]].
61
+
62
+ *Returns:* `extents().`*`fwd-prod-of-extents`*`(rank())`.
63
+
64
+ ``` cpp
65
+ [[nodiscard]] constexpr bool empty() const noexcept;
66
+ ```
67
+
68
+ *Returns:* `true` if the size of the multidimensional index space
69
+ `extents()` is 0, otherwise `false`.
70
+
71
+ ``` cpp
72
+ friend constexpr void swap(mdspan& x, mdspan& y) noexcept;
73
+ ```
74
+
75
+ *Effects:* Equivalent to:
76
+
77
+ ``` cpp
78
+ swap(x.ptr_, y.ptr_);
79
+ swap(x.map_, y.map_);
80
+ swap(x.acc_, y.acc_);
81
+ ```
82
+
83
+ <!-- Link reference definitions -->
84
+ [alg.equal]: algorithms.md#alg.equal
85
+ [alg.sorting]: algorithms.md#alg.sorting
86
+ [algorithm.stable]: library.md#algorithm.stable
87
+ [algorithms]: algorithms.md#algorithms
88
+ [algorithms.requirements]: algorithms.md#algorithms.requirements
89
+ [allocator.requirements]: library.md#allocator.requirements
90
+ [allocator.requirements.completeness]: library.md#allocator.requirements.completeness
91
+ [allocator.traits.members]: mem.md#allocator.traits.members
92
+ [allocator.uses.construction]: mem.md#allocator.uses.construction
93
+ [array]: #array
94
+ [array.cons]: #array.cons
95
+ [array.creation]: #array.creation
96
+ [array.members]: #array.members
97
+ [array.overview]: #array.overview
98
+ [array.special]: #array.special
99
+ [array.syn]: #array.syn
100
+ [array.tuple]: #array.tuple
101
+ [array.zero]: #array.zero
102
+ [associative]: #associative
103
+ [associative.general]: #associative.general
104
+ [associative.map.syn]: #associative.map.syn
105
+ [associative.reqmts]: #associative.reqmts
106
+ [associative.reqmts.except]: #associative.reqmts.except
107
+ [associative.reqmts.general]: #associative.reqmts.general
108
+ [associative.set.syn]: #associative.set.syn
109
+ [basic.fundamental]: basic.md#basic.fundamental
110
+ [basic.string]: strings.md#basic.string
111
+ [class.copy.ctor]: class.md#class.copy.ctor
112
+ [class.default.ctor]: class.md#class.default.ctor
113
+ [class.dtor]: class.md#class.dtor
114
+ [container.adaptors]: #container.adaptors
115
+ [container.adaptors.format]: #container.adaptors.format
116
+ [container.adaptors.general]: #container.adaptors.general
117
+ [container.alloc.reqmts]: #container.alloc.reqmts
118
+ [container.gen.reqmts]: #container.gen.reqmts
119
+ [container.insert.return]: #container.insert.return
120
+ [container.node]: #container.node
121
+ [container.node.compat]: #container.node.compat
122
+ [container.node.cons]: #container.node.cons
123
+ [container.node.dtor]: #container.node.dtor
124
+ [container.node.modifiers]: #container.node.modifiers
125
+ [container.node.observers]: #container.node.observers
126
+ [container.node.overview]: #container.node.overview
127
+ [container.opt.reqmts]: #container.opt.reqmts
128
+ [container.reqmts]: #container.reqmts
129
+ [container.requirements]: #container.requirements
130
+ [container.requirements.dataraces]: #container.requirements.dataraces
131
+ [container.requirements.general]: #container.requirements.general
132
+ [container.requirements.pre]: #container.requirements.pre
133
+ [container.rev.reqmts]: #container.rev.reqmts
134
+ [containers]: #containers
135
+ [containers.general]: #containers.general
136
+ [containers.summary]: #containers.summary
137
+ [dcl.init.aggr]: dcl.md#dcl.init.aggr
138
+ [defns.valid]: intro.md#defns.valid
139
+ [deque]: #deque
140
+ [deque.capacity]: #deque.capacity
141
+ [deque.cons]: #deque.cons
142
+ [deque.erasure]: #deque.erasure
143
+ [deque.modifiers]: #deque.modifiers
144
+ [deque.overview]: #deque.overview
145
+ [deque.syn]: #deque.syn
146
+ [expr.const]: expr.md#expr.const
147
+ [flat.map]: #flat.map
148
+ [flat.map.access]: #flat.map.access
149
+ [flat.map.capacity]: #flat.map.capacity
150
+ [flat.map.cons]: #flat.map.cons
151
+ [flat.map.defn]: #flat.map.defn
152
+ [flat.map.erasure]: #flat.map.erasure
153
+ [flat.map.modifiers]: #flat.map.modifiers
154
+ [flat.map.overview]: #flat.map.overview
155
+ [flat.map.syn]: #flat.map.syn
156
+ [flat.multimap]: #flat.multimap
157
+ [flat.multimap.cons]: #flat.multimap.cons
158
+ [flat.multimap.defn]: #flat.multimap.defn
159
+ [flat.multimap.erasure]: #flat.multimap.erasure
160
+ [flat.multimap.overview]: #flat.multimap.overview
161
+ [flat.multiset]: #flat.multiset
162
+ [flat.multiset.cons]: #flat.multiset.cons
163
+ [flat.multiset.defn]: #flat.multiset.defn
164
+ [flat.multiset.erasure]: #flat.multiset.erasure
165
+ [flat.multiset.modifiers]: #flat.multiset.modifiers
166
+ [flat.multiset.overview]: #flat.multiset.overview
167
+ [flat.set]: #flat.set
168
+ [flat.set.cons]: #flat.set.cons
169
+ [flat.set.defn]: #flat.set.defn
170
+ [flat.set.erasure]: #flat.set.erasure
171
+ [flat.set.modifiers]: #flat.set.modifiers
172
+ [flat.set.overview]: #flat.set.overview
173
+ [flat.set.syn]: #flat.set.syn
174
+ [forward.iterators]: iterators.md#forward.iterators
175
+ [forward.list]: #forward.list
176
+ [forward.list.access]: #forward.list.access
177
+ [forward.list.cons]: #forward.list.cons
178
+ [forward.list.erasure]: #forward.list.erasure
179
+ [forward.list.iter]: #forward.list.iter
180
+ [forward.list.modifiers]: #forward.list.modifiers
181
+ [forward.list.ops]: #forward.list.ops
182
+ [forward.list.overview]: #forward.list.overview
183
+ [forward.list.syn]: #forward.list.syn
184
+ [hash.requirements]: library.md#hash.requirements
185
+ [iterator.concept.contiguous]: iterators.md#iterator.concept.contiguous
186
+ [iterator.concept.random.access]: iterators.md#iterator.concept.random.access
187
+ [iterator.requirements]: iterators.md#iterator.requirements
188
+ [iterator.requirements.general]: iterators.md#iterator.requirements.general
189
+ [list]: #list
190
+ [list.capacity]: #list.capacity
191
+ [list.cons]: #list.cons
192
+ [list.erasure]: #list.erasure
193
+ [list.modifiers]: #list.modifiers
194
+ [list.ops]: #list.ops
195
+ [list.overview]: #list.overview
196
+ [list.syn]: #list.syn
197
+ [map]: #map
198
+ [map.access]: #map.access
199
+ [map.cons]: #map.cons
200
+ [map.erasure]: #map.erasure
201
+ [map.modifiers]: #map.modifiers
202
+ [map.overview]: #map.overview
203
+ [mdspan.accessor]: #mdspan.accessor
204
+ [mdspan.accessor.default]: #mdspan.accessor.default
205
+ [mdspan.accessor.default.members]: #mdspan.accessor.default.members
206
+ [mdspan.accessor.default.overview]: #mdspan.accessor.default.overview
207
+ [mdspan.accessor.general]: #mdspan.accessor.general
208
+ [mdspan.accessor.reqmts]: #mdspan.accessor.reqmts
209
+ [mdspan.extents]: #mdspan.extents
210
+ [mdspan.extents.cmp]: #mdspan.extents.cmp
211
+ [mdspan.extents.cons]: #mdspan.extents.cons
212
+ [mdspan.extents.dextents]: #mdspan.extents.dextents
213
+ [mdspan.extents.expo]: #mdspan.extents.expo
214
+ [mdspan.extents.obs]: #mdspan.extents.obs
215
+ [mdspan.extents.overview]: #mdspan.extents.overview
216
+ [mdspan.layout]: #mdspan.layout
217
+ [mdspan.layout.general]: #mdspan.layout.general
218
+ [mdspan.layout.left]: #mdspan.layout.left
219
+ [mdspan.layout.left.cons]: #mdspan.layout.left.cons
220
+ [mdspan.layout.left.obs]: #mdspan.layout.left.obs
221
+ [mdspan.layout.left.overview]: #mdspan.layout.left.overview
222
+ [mdspan.layout.policy.overview]: #mdspan.layout.policy.overview
223
+ [mdspan.layout.policy.reqmts]: #mdspan.layout.policy.reqmts
224
+ [mdspan.layout.reqmts]: #mdspan.layout.reqmts
225
+ [mdspan.layout.right]: #mdspan.layout.right
226
+ [mdspan.layout.right.cons]: #mdspan.layout.right.cons
227
+ [mdspan.layout.right.obs]: #mdspan.layout.right.obs
228
+ [mdspan.layout.right.overview]: #mdspan.layout.right.overview
229
+ [mdspan.layout.stride]: #mdspan.layout.stride
230
+ [mdspan.layout.stride.cons]: #mdspan.layout.stride.cons
231
+ [mdspan.layout.stride.expo]: #mdspan.layout.stride.expo
232
+ [mdspan.layout.stride.obs]: #mdspan.layout.stride.obs
233
+ [mdspan.layout.stride.overview]: #mdspan.layout.stride.overview
234
+ [mdspan.mdspan]: #mdspan.mdspan
235
+ [mdspan.mdspan.cons]: #mdspan.mdspan.cons
236
+ [mdspan.mdspan.members]: #mdspan.mdspan.members
237
+ [mdspan.mdspan.overview]: #mdspan.mdspan.overview
238
+ [mdspan.overview]: #mdspan.overview
239
+ [mdspan.syn]: #mdspan.syn
240
+ [multimap]: #multimap
241
+ [multimap.cons]: #multimap.cons
242
+ [multimap.erasure]: #multimap.erasure
243
+ [multimap.modifiers]: #multimap.modifiers
244
+ [multimap.overview]: #multimap.overview
245
+ [multiset]: #multiset
246
+ [multiset.cons]: #multiset.cons
247
+ [multiset.erasure]: #multiset.erasure
248
+ [multiset.overview]: #multiset.overview
249
+ [priority.queue]: #priority.queue
250
+ [priqueue.cons]: #priqueue.cons
251
+ [priqueue.cons.alloc]: #priqueue.cons.alloc
252
+ [priqueue.members]: #priqueue.members
253
+ [priqueue.overview]: #priqueue.overview
254
+ [priqueue.special]: #priqueue.special
255
+ [queue]: #queue
256
+ [queue.cons]: #queue.cons
257
+ [queue.cons.alloc]: #queue.cons.alloc
258
+ [queue.defn]: #queue.defn
259
+ [queue.mod]: #queue.mod
260
+ [queue.ops]: #queue.ops
261
+ [queue.special]: #queue.special
262
+ [queue.syn]: #queue.syn
263
+ [random.access.iterators]: iterators.md#random.access.iterators
264
+ [res.on.data.races]: library.md#res.on.data.races
265
+ [sequence.reqmts]: #sequence.reqmts
266
+ [sequences]: #sequences
267
+ [sequences.general]: #sequences.general
268
+ [set]: #set
269
+ [set.cons]: #set.cons
270
+ [set.erasure]: #set.erasure
271
+ [set.overview]: #set.overview
272
+ [span.cons]: #span.cons
273
+ [span.deduct]: #span.deduct
274
+ [span.elem]: #span.elem
275
+ [span.iterators]: #span.iterators
276
+ [span.objectrep]: #span.objectrep
277
+ [span.obs]: #span.obs
278
+ [span.overview]: #span.overview
279
+ [span.sub]: #span.sub
280
+ [span.syn]: #span.syn
281
+ [stack]: #stack
282
+ [stack.cons]: #stack.cons
283
+ [stack.cons.alloc]: #stack.cons.alloc
284
+ [stack.defn]: #stack.defn
285
+ [stack.general]: #stack.general
286
+ [stack.mod]: #stack.mod
287
+ [stack.ops]: #stack.ops
288
+ [stack.special]: #stack.special
289
+ [stack.syn]: #stack.syn
290
+ [strings]: strings.md#strings
291
+ [swappable.requirements]: library.md#swappable.requirements
292
+ [temp.deduct]: temp.md#temp.deduct
293
+ [temp.param]: temp.md#temp.param
294
+ [temp.type]: temp.md#temp.type
295
+ [term.trivially.copyable.type]: basic.md#term.trivially.copyable.type
296
+ [unord]: #unord
297
+ [unord.general]: #unord.general
298
+ [unord.hash]: utilities.md#unord.hash
299
+ [unord.map]: #unord.map
300
+ [unord.map.cnstr]: #unord.map.cnstr
301
+ [unord.map.elem]: #unord.map.elem
302
+ [unord.map.erasure]: #unord.map.erasure
303
+ [unord.map.modifiers]: #unord.map.modifiers
304
+ [unord.map.overview]: #unord.map.overview
305
+ [unord.map.syn]: #unord.map.syn
306
+ [unord.multimap]: #unord.multimap
307
+ [unord.multimap.cnstr]: #unord.multimap.cnstr
308
+ [unord.multimap.erasure]: #unord.multimap.erasure
309
+ [unord.multimap.modifiers]: #unord.multimap.modifiers
310
+ [unord.multimap.overview]: #unord.multimap.overview
311
+ [unord.multiset]: #unord.multiset
312
+ [unord.multiset.cnstr]: #unord.multiset.cnstr
313
+ [unord.multiset.erasure]: #unord.multiset.erasure
314
+ [unord.multiset.overview]: #unord.multiset.overview
315
+ [unord.req]: #unord.req
316
+ [unord.req.except]: #unord.req.except
317
+ [unord.req.general]: #unord.req.general
318
+ [unord.set]: #unord.set
319
+ [unord.set.cnstr]: #unord.set.cnstr
320
+ [unord.set.erasure]: #unord.set.erasure
321
+ [unord.set.overview]: #unord.set.overview
322
+ [unord.set.syn]: #unord.set.syn
323
+ [vector]: #vector
324
+ [vector.bool]: #vector.bool
325
+ [vector.bool.fmt]: #vector.bool.fmt
326
+ [vector.bool.pspc]: #vector.bool.pspc
327
+ [vector.capacity]: #vector.capacity
328
+ [vector.cons]: #vector.cons
329
+ [vector.data]: #vector.data
330
+ [vector.erasure]: #vector.erasure
331
+ [vector.modifiers]: #vector.modifiers
332
+ [vector.overview]: #vector.overview
333
+ [vector.syn]: #vector.syn
334
+ [views]: #views
335
+ [views.contiguous]: #views.contiguous
336
+ [views.general]: #views.general
337
+ [views.multidim]: #views.multidim
338
+ [views.span]: #views.span
339
+
340
+ [^1]: Equality comparison is a refinement of partitioning if no two
341
+ objects that compare equal fall into different partitions.
342
+
343
+ [^2]: These member functions are only provided by containers whose
344
+ iterators are random access iterators.
345
+
346
+ [^3]: As specified in  [[allocator.requirements]], the requirements in
347
+ this Clause apply only to lists whose allocators compare equal.
348
+
349
+ [^4]: `reserve()` uses `Allocator::allocate()` which can throw an
350
+ appropriate exception.