std::ranges::zip_view::end(3)
π NAME π
std::ranges::zip_view::end β and yeah bestie, the name is literally std::ranges::zip_view::end. Weβre on the std::ranges::zip_view::end(3) page from the C++ Standard Libary manual, and itβs giving very specific iterator/sentinel energy π
β¨
β¨ Synopsis β¨
Okay so hereβs the signature tea β:
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> && ...));
This 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) β no parameters, bestie π«Ά
π¦ Return value π¦
An iterator or sentinel representing the end of the zip_view, as described above. Periodt π«
πΈ Notes πΈ
ranges::range<const ranges::zip_view<Views...>> is modeled if and only if for every type Vi in Views..., const Vi models range. Thatβs the rule, no cap π§
π 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
mwah π β source: http://cppreference.com, version/date: 2024.06.10, page: std::ranges::zip_view::end(3). Thatβs the whole manual page, bestie β iconic, specific, and fully caffeinated ππ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms