std::ranges::zip_view<Vistas...>::end
constexpr auto end()
requires (!(/*simple-view*/<Views> && ...);
|
(1) | (desde C++23) |
constexpr auto end() const
requires (ranges::range<const Views> && ...);
|
(2) | (desde 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) | (solo exposición*) |
Devuelve un iterator o un sentinel que compara igual al iterador final de zip_view.
Sea views_ la tupla subyacente de vistas.
return /*sentinel*/<false>(/*tuple-transform*/(ranges::end, views_));,
- si
/*zip-is-common*/<Views...>se evalúa comofalse. De lo contrario,
return begin() + std::iter_difference_t</*iterator*/<false>>(size());,
- si
(ranges::random_access_range<Views> && ...)se evalúa comotrue. De lo contrario,
return /*iterator*/<false>(/*tuple-transform*/(ranges::end, views_));.
return /*sentinel*/<true>(/*tuple-transform*/(ranges::end, views_));,
- si
/*zip-is-common*/<const Views...>se evalúa comofalse. De lo contrario,
return begin() + std::iter_difference_t</*iterator*/<true>>(size());,
- si
ranges::random_access_range<const Views> && ...se evalúa comotrue. De lo contrario,
return /*iterator*/<true>(/*tuple-transform*/(ranges::end, views_));.
Parámetros
(ninguno)
Valor de retorno
Un iterador o centinela que representa el final del
zip_view
, como se describe anteriormente.
Notas
ranges::
range
<
const
ranges::
zip_view
<
Views...
>>
se modela si y solo si para cada tipo
Vi
en
Views...
,
const
Vi
modela
range
.
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
devuelve un iterador al inicio
(función miembro pública) |
|
|
(C++20)
|
devuelve un centinela que indica el final de un rango
(objeto de punto de personalización) |