template<class Extents>
template<class... SliceSpecifiers>
constexpr auto layout_left_padded::mapping<Extents>::submdspan-mapping-impl(
SliceSpecifiers... slices) const -> see below;
Returns:
- submdspan_mapping_result{*this, 0},
if Extents::rank() == 0 is true;
- otherwise,
submdspan_mapping_result{layout_left::mapping(sub_ext), offset},
if rank_ == 1 is true or
SubExtents::rank() == 0 is true;
- otherwise,
submdspan_mapping_result{layout_left::mapping(sub_ext), offset},
if
- SubExtents::rank() == 1 is true and
- S0 is a unit-stride slice for mapping;
- otherwise,
submdspan_mapping_result{layout_left_padded<S_static>::mapping(sub_ext, stride(u + 1)),
offset}
if for a value u
for which u + 1 is the smallest value p larger than zero
for which Sp is a unit-stride slice for mapping,
the following conditions are met:
- S0 is a unit-stride slice for mapping; and
- for each k in the range [u + 1, u + SubExtents::rank() - 1),
is_convertible_v<Sk, full_extent_t> is true; and
- for k equal to u + SubExtents::rank() - 1,
Sk is a unit-stride slice for mapping;
where S_static is:
- dynamic_extent,
if static-padding-stride is dynamic_extent or
static_extent(k) is dynamic_extent
for any k in the range [1, u + 1),
- otherwise, the product of static-padding-stride and
all values static_extent(k) for k in the range [1, u + 1);
- otherwise,
submdspan_mapping_result{layout_stride::mapping(sub_ext, sub_strides), offset}