If T is a specialization of
empty_view ([range.empty.view]),
then ((void)F, decay-copy(E)),
except that the evaluations of E and F
are indeterminately sequenced.
a specialization of subrange ([range.subrange])
where T::StoreSize is false,
then U(ranges::begin(E)+ std::min<D>(ranges::distance(E), F), ranges::end(E)),
except that E is evaluated only once,
where U is span<typename T::element_type>
if T is a specialization of span and T otherwise.
Otherwise,
if T is
a specialization of subrange
that models random_access_range and sized_range,
then
T(ranges::begin(E)+ std::min<D>(ranges::distance(E), F), ranges::end(E),
to-unsigned-like(ranges::distance(E)-
std::min<D>(ranges::distance(E), F))),
except that E and F are each evaluated only once.