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 andSliceSpecifiers. . . [ 0 ] is a unit-stride slice type; 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 SliceSpecifiers. . . [ p ] is a unit-stride slice type,
the following conditions are met:
SliceSpecifiers. . . [ 0 ] is a unit-stride slice type; andfor each k in the range [u + 1 , u + SubExtents:: rank( ) - 1 ),
SliceSpecifiers. . . [ k ] denotes full_ extent_ t ; and for k equal to u + SubExtents:: rank( ) - 1 ,
SliceSpecifiers. . . [ k ] is a unit-stride slice type;
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}