2431924319let \tcode{offset} be a value of type \tcode{size_t} equal to
2432024320\tcode{(*this)(\exposid{first_}<index_type, P>(slices...)...)}.
2432124321
24322+ \pnum
24323+ Given a layout mapping type \tcode{M}, a type \tcode{S} is a
24324+ \defnadjx{unit-stride}{slice for \tcode{M}}{slice} if
24325+ \begin{itemize}
24326+ \item \tcode{S} is a specialization of \tcode{strided_slice}
24327+ where \tcode{S::stride_type} models \exposconcept{integral-constant-like}
24328+ and \tcode{S::stride_type::value} equals \tcode{1},
24329+ \item \tcode{S} models \tcode{\exposconcept{index-pair-like}<M::index_type>}, or
24330+ \item \tcode{is_convertible_v<S, full_extent_t>} is \tcode{true}.
24331+ \end{itemize}
24332+
2432224333\rSec5[mdspan.sub.map.left]{\tcode{layout_left} specialization of \tcode{submdspan_mapping}}
2432324334
2432424335\indexlibrarymemberexpos{layout_left::mapping}{submdspan-mapping-impl}%
2435024361 \tcode{is_convertible_v<$S_k$, full_ext\-ent_t>} is \tcode{true}; and
2435124362 \item
2435224363 for $k$ equal to \tcode{SubExtents::rank() - 1},
24353- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24354- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true};
24364+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2435524365 \end{itemize}
2435624366\begin{note}
2435724367If the above conditions are true,
@@ -24366,21 +24376,17 @@
2436624376\end{codeblock}
2436724377if for a value $u$ for which $u+1$ is
2436824378the smallest value $p$ larger than zero
24369- for which $S_p$ models
24370- \tcode{\exposconcept{index-pair-like}<index_type>} or
24371- \tcode{is_convertible_v<$S_p$, full_extent_t>} is \tcode{true},
24379+ for which $S_p$ is a unit-stride slice for \tcode{decltype(*this)},
2437224380the following conditions are met:
2437324381\begin{itemize}
2437424382\item
24375- $S_0$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24376- \tcode{is_convertible_v<$S_0$, full_extent_t>} is \tcode{true}; and
24383+ $S_0$ is a unit-stride slice for \tcode{decltype(*this)}; and
2437724384\item
2437824385for each $k$ in the range \range{$u$ + 1}{$u$ + SubExtents::rank() - 1},
2437924386\tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
2438024387\item
2438124388for $k$ equal to \tcode{$u$ + SubExtents::rank() - 1},
24382- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24383- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true};
24389+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2438424390\end{itemize}
2438524391and where \tcode{S_static} is:
2438624392\begin{itemize}
2443124437 \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
2443224438 \item
2443324439 for $k$ equal to \exposid{_rank} - \tcode{SubExtents::rank()},
24434- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24435- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true};
24440+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2443624441 \end{itemize}
2443724442\begin{note}
2443824443If the above conditions are true,
@@ -24447,23 +24452,19 @@
2444724452\end{codeblock}
2444824453if for a value $u$ for which $\exposid{rank_} - u - 2$ is
2444924454the largest value $p$ smaller than \tcode{\exposid{rank_} - 1}
24450- for which $S_p$ models
24451- \tcode{\exposconcept{index-pair-like}<index_type>} or
24452- \tcode{is_convertible_v<$S_p$, full_extent_t>} is \tcode{true},
24455+ for which $S_p$ is a unit-stride slice for \tcode{decltype(*this)},
2445324456the following conditions are met:
2445424457\begin{itemize}
2445524458\item
2445624459for $k$ equal to \tcode{\exposid{rank_} - 1},
24457- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24458- \tcode{is_convertible_v<$S_k$, full_extent_t> }is \tcode{true}; and
24460+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)}; and
2445924461\item
2446024462for each $k$ in the range
2446124463\range{\exposid{rank_} - SubExtents::rank() - $u$ + 1}{\exposid{rank_} - $u$ - 1},
2446224464\tcode{is_con\-vertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
2446324465\item
24464- for $k$ equal to \tcode{\exposid{rank_} - SubExtents::rank() - $u$},
24465- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24466- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true};
24466+ for $k$ equal to \tcode{\exposid{rank_} - SubExtents::rank() - $u$},\newline
24467+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2446724468\end{itemize}
2446824469and where \tcode{S_static} is:
2446924470\begin{itemize}
2453924540\item
2454024541\tcode{SubExtents::rank() == 1} is \tcode{true} and
2454124542\item
24542- $S_0$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24543- \tcode{is_convertible_v<$S_0$ , full_extent_t>} is \tcode{true};
24543+ $S_0$ is a unit-stride slice for \tcode{decltype(*this)};
2454424544\end{itemize}
2454524545\item
2454624546otherwise,
@@ -24550,20 +24550,17 @@
2455024550\end{codeblock}
2455124551if for a value $u$
2455224552for which \tcode{$u$ + 1} is the smallest value $p$ larger than zero
24553- for which $S_p$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24554- \tcode{is_convertible_v<$S_p$, full_extent_t>} is \tcode{true},
24553+ for which $S_p$ is a unit-stride slice for \tcode{decltype(*this)},
2455524554the following conditions are met:
2455624555\begin{itemize}
2455724556\item
24558- $S_0$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24559- \tcode{is_convertible_v<$S_0$, full_extent_t>} is \tcode{true}; and
24557+ $S_0$ is a unit-stride slice for \tcode{decltype(*this)}; and
2456024558\item
2456124559for each $k$ in the range \range{$u$ + 1}{$u$ + SubExtents::rank() - 1},
2456224560\tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
2456324561\item
2456424562for $k$ equal to \tcode{$u$ + SubExtents::rank() - 1},
24565- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24566- \tcode{is_convertible_v<Sk, full_extent_t>} is \tcode{true};
24563+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2456724564\end{itemize}
2456824565where \tcode{S_static} is:
2456924566\begin{itemize}
2461524612\tcode{SubExtents::rank() == 1} is \tcode{true} and
2461624613\item
2461724614for $k$ equal to \tcode{\exposid{rank_} - 1},
24618- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24619- \tcode{is_convertible_v<$S_k$ , full_extent_t>} is \tcode{true};
24615+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2462024616\end{itemize}
2462124617\item
2462224618otherwise,
@@ -24627,22 +24623,19 @@
2462724623if for a value $u$
2462824624for which \tcode{\exposid{rank_} - $u$ - 2}
2462924625is the largest value p smaller than \tcode{\exposid{rank_} - 1}
24630- for which $S_p$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24631- \tcode{is_convertible_v<$S_p$, full_extent_t>} is \tcode{true},
24626+ for which $S_p$ is a unit-stride slice for \tcode{decltype(*this)},
2463224627the following conditions are met:
2463324628\begin{itemize}
2463424629\item
2463524630for $k$ equal to \tcode{\exposid{rank_} - 1},
24636- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24637- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
24631+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)}; and
2463824632\item
2463924633for each $k$ in the range
2464024634\range{\exposid{rank_} - SubExtents::rank() - $u$ + 1}{\exposid{rank_} - $u$ - 1)},
2464124635\tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true}; and
2464224636\item
24643- for $k$ equal to \tcode{\exposid{rank_} - SubExtents::rank() - $u$},
24644- $S_k$ models \tcode{\exposconcept{index-pair-like}<index_type>} or
24645- \tcode{is_convertible_v<$S_k$, full_extent_t>} is \tcode{true};
24637+ for $k$ equal to \tcode{\exposid{rank_} - SubExtents::rank() - $u$},\newline
24638+ $S_k$ is a unit-stride slice for \tcode{decltype(*this)};
2464624639\end{itemize}
2464724640and where \tcode{S_static} is:
2464824641\begin{itemize}
0 commit comments