From Jason Turner

[mdspan.mdspan.members]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp_d_j5yxr/{from.md → to.md} +47 -271
tmp/tmp_d_j5yxr/{from.md → to.md} RENAMED
@@ -12,11 +12,11 @@ template<class... OtherIndexTypes>
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
 
@@ -46,11 +46,55 @@ 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
  ```
@@ -60,11 +104,11 @@ constexpr size_type size() const noexcept;
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
 
@@ -78,273 +122,5 @@ friend constexpr void swap(mdspan& x, mdspan& y) noexcept;
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.
 
12
  `true`, and
13
  - `sizeof...(OtherIndexTypes) == rank()` is `true`.
14
 
15
  Let `I` be `extents_type::`*`index-cast`*`(std::move(indices))`.
16
 
17
+ `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
 
 
46
  ```
47
 
48
  is `true`. Equivalent to:
49
 
50
  ``` cpp
51
+ return operator[](extents_type::index-cast(as_const(indices[P]))...);
52
+ ```
53
+
54
+ ``` cpp
55
+ template<class... OtherIndexTypes>
56
+ constexpr reference at(OtherIndexTypes... indices) const;
57
+ ```
58
+
59
+ *Constraints:*
60
+
61
+ - `(is_convertible_v<OtherIndexTypes, index_type> && ...)` is `true`,
62
+ - `(is_nothrow_constructible_v<index_type, OtherIndexTypes> && ...)` is
63
+ `true`, and
64
+ - `sizeof...(OtherIndexTypes) == rank()` is `true`.
65
+
66
+ Let `I` be `extents_type::`*`index-cast`*`(std::move(indices))`.
67
+
68
+ *Returns:* `(*this)[I...]`.
69
+
70
+ *Throws:* `out_of_range` if `I` is not a multidimensional index in
71
+ `extents()`.
72
+
73
+ ``` cpp
74
+ template<class OtherIndexType>
75
+ constexpr reference at(span<OtherIndexType, rank()> indices) const;
76
+ template<class OtherIndexType>
77
+ constexpr reference at(const array<OtherIndexType, rank()>& indices) const;
78
+ ```
79
+
80
+ *Constraints:*
81
+
82
+ - `is_convertible_v<const OtherIndexType&, index_type>` is `true`, and
83
+ - `is_nothrow_constructible_v<index_type, const OtherIndexType&>` is
84
+ `true`.
85
+
86
+ *Effects:* Let `P` be a parameter pack such that
87
+
88
+ ``` cpp
89
+ is_same_v<make_index_sequence<rank()>, index_sequence<P...>>
90
+ ```
91
+
92
+ is `true`. Equivalent to:
93
+
94
+ ``` cpp
95
+ return at(extents_type::index-cast(as_const(indices[P]))...);
96
  ```
97
 
98
  ``` cpp
99
  constexpr size_type size() const noexcept;
100
  ```
 
104
  [[basic.fundamental]].
105
 
106
  *Returns:* `extents().`*`fwd-prod-of-extents`*`(rank())`.
107
 
108
  ``` cpp
109
+ constexpr bool empty() const noexcept;
110
  ```
111
 
112
  *Returns:* `true` if the size of the multidimensional index space
113
  `extents()` is 0, otherwise `false`.
114
 
 
122
  swap(x.ptr_, y.ptr_);
123
  swap(x.map_, y.map_);
124
  swap(x.acc_, y.acc_);
125
  ```
126