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 of extents<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)...).