std::ranges::zip_view<Vues...>::end
constexpr auto end()
requires (!(/*simple-view*/<Views> && ...);
|
(1) | (depuis C++23) |
constexpr auto end() const
requires (ranges::range<const Views> && ...);
|
(2) | (depuis C++23) |
template< class... Rs >
concept /*zip-is-common*/ =
(sizeof...(Rs) == 1 && (ranges::common_range<Rs> && ...))
||
(!(ranges::bidirectional_range<Rs> && ...) && (ranges::common_range<Rs> && ...))
||
((ranges::random_access_range<Rs> && ...) && (ranges::sized_range<Rs> && ...));
|
(3) | (d'exposition uniquement*) |
Renvoie un itérateur ou une sentinelle qui se compare comme égal à l'itérateur de fin de la zip_view.
Soit views_ le tuple sous-jacent de vues.
return /*sentinel*/<false>(/*tuple-transform*/(ranges::end, views_));,
- si
/*zip-is-common*/<Views...>est évalué àfalse. Sinon,
return begin() + std::iter_difference_t</*iterator*/<false>>(size());,
- si
(ranges::random_access_range<Views> && ...)est évalué àtrue. Sinon,
return /*iterator*/<false>(/*tuple-transform*/(ranges::end, views_));.
return /*sentinel*/<true>(/*tuple-transform*/(ranges::end, views_));,
- si
/*zip-is-common*/<const Views...>est évalué àfalse. Sinon,
return begin() + std::iter_difference_t</*iterator*/<true>>(size());,
- si
ranges::random_access_range<const Views> && ...est évalué àtrue. Sinon,
return /*iterator*/<true>(/*tuple-transform*/(ranges::end, views_));.
Paramètres
(aucun)
Valeur de retour
Un itérateur ou sentinelle représentant la fin de la
zip_view
, comme décrit ci-dessus.
Notes
ranges::
range
<
const
ranges::
zip_view
<
Views...
>>
est modélisé si et seulement si pour chaque type
Vi
dans
Views...
,
const
Vi
modélise
range
.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
retourne un itérateur vers le début
(fonction membre publique) |
|
|
(C++20)
|
retourne un sentinelle indiquant la fin d'une plage
(objet de point de personnalisation) |