[mdspan.sub.canonical] (original) (raw)
23 Containers library [containers]
23.7 Views [views]
23.7.3 Multidimensional access [views.multidim]
23.7.3.7 submdspan [mdspan.sub]
23.7.3.7.5 submdspan slice canonicalization [mdspan.sub.canonical]
template<class IndexType, size_t... Extents, class... SliceSpecifiers> constexpr auto submdspan_canonicalize_slices(const extents<IndexType, Extents...>& src, SliceSpecifiers... slices);
Constraints: sizeof...(SliceSpecifiers) equals sizeof...(Extents).
Mandates: For each rank index k of src:
- SliceSpecifiers...[k] is a submdspan slice type for IndexType, and
- decltype(canonical-slice<IndexType>(slices...[k])) is a valid submdspan slice type for the extent ofextents<IndexType, Extents...>.
Preconditions: For each rank index k of src,canonical-slice<IndexType>(slices...[k])is a valid submdspan slice for the extent of src.
Returns: make_tuple(canonical-slice<IndexType>(slices)...).