[mdspan.sub.map.leftpad] (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.6 Specializations of submdspan_mapping [mdspan.sub.map]
23.7.3.7.6.5 layout_left_padded specialization of submdspan_mapping [mdspan.sub.map.leftpad]
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 orSubExtents::rank() == 0 is true;
- otherwise,submdspan_mapping_result{layout_left::mapping(sub_ext), offset}, if
- SubExtents::rank() == 1 is true and
- 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 ufor which u + 1 is the smallest value p larger than zero for which is a unit-stride slice for mapping, the following conditions are met:
- is a unit-stride slice for mapping; and
- for each k in the range [u + 1, u + SubExtents::rank() - 1),is_convertible_v<, full_extent_t> is true; and
- for k equal to u + SubExtents::rank() - 1, is a unit-stride slice for mapping;
where S_static is: - dynamic_extent, if static-padding-stride is dynamic_extent orstatic_extent(k) is dynamic_extentfor 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}