template<class T>
concept is-extent-slice = see below;
template<class T>
concept is-range-slice = see below;
template<class IndexType, class S>
constexpr auto canonical-index(S s);
template<class IndexType, class OffsetType, class SpanType, class... StrideTypes>
constexpr auto canonical-range-slice(OffsetType offset, SpanType span, StrideTypes... strides);
template<class IndexType, class S>
constexpr auto canonical-slice(S s);
template<class IndexType, size_t... Extents, class... SliceSpecifiers>
constexpr auto canonical_slices(const extents<IndexType, Extents...>& src,
SliceSpecifiers... slices);
template<class IndexType, size_t... Extents, class... SliceSpecifiers>
constexpr auto subextents(const extents<IndexType, Extents...>& src,
SliceSpecifiers... raw_slices);
template<class LayoutMapping>
concept sliceable-mapping = see below;
template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_left::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_right::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_stride::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_left_padded::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_right_padded::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
template<class ElementType, class Extents, class LayoutPolicy,
class AccessorPolicy, class... SliceSpecifiers>
constexpr auto submdspan(
const mdspan<ElementType, Extents, LayoutPolicy, AccessorPolicy>& src,
SliceSpecifiers... raw_slices) -> see below;