Scroll to navigation

std::ranges::zip_view::end(3) C++ Standard Libary std::ranges::zip_view::end(3)

NAME

std::ranges::zip_view::end - std::ranges::zip_view::end

Synopsis


constexpr auto end() (1) (since C++23)
requires (!(/*simple-view*/<Views> && ...);
constexpr auto end() const (2) (since C++23)
requires (ranges::range<const Views> && ...);
template< class... Rs >


concept /*zip-is-common*/ =
(sizeof...(Rs) == 1 && (ranges::common_range<Rs> && ...))
||
(!(ranges::bidirectional_range<Rs> && ...) && (3) (exposition only*)
(ranges::common_range<Rs> && ...))
||


((ranges::random_access_range<Rs> && ...) &&
(ranges::sized_range<Rs> && ...));


Returns a sentinel or an iterator that compares equal to the end iterator of the
std::zip_view.


Let views_ denote the underlying tuple of views.


1) Equivalent to:
* return /*sentinel*/<false>(/*tuple-transform*/(ranges::end, views_));,


if /*zip-is-common*/<Views...> evaluates to false. Otherwise,
* return begin() + std::iter_difference_t</*iterator*/<false>>(size());,


if (ranges::random_access_range<Views> && ...) evaluates to true. Otherwise,
* return /*iterator*/<false>(/*tuple-transform*/(ranges::end, views_));.
2) Equivalent to:
* return /*sentinel*/<true>(/*tuple-transform*/(ranges::end, views_));,


if /*zip-is-common*/<const Views...> evaluates to false. Otherwise,
* return begin() + std::iter_difference_t</*iterator*/<true>>(size());,


if ranges::random_access_range<const Views> && ... evaluates to true. Otherwise,
* return /*iterator*/<true>(/*tuple-transform*/(ranges::end, views_));.

Parameters


(none)

Return value


An iterator or sentinel representing the end of the zip_view, as described above.

Notes


ranges::range<const ranges::zip_view<Views...>> is modeled if and only if for every
type Vi in Views..., const Vi models range.

Example


This section is incomplete
Reason: no example

See also


begin returns an iterator to the beginning
(C++23) (public member function)
ranges::end returns a sentinel indicating the end of a range
(C++20) (customization point object)

Category:


* Todo no example

2024.06.10 http://cppreference.com