Spec-Zone.ru › C++

std::ranges::zip_view<Views...>::end

constexpr auto end()
    requires (!(/*simple-view*/<Views> && ...);
(1) (начиная с C++23)
constexpr auto end() const
    requires (ranges::range<const Views> && ...);
(2) (начиная с 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) (только для иллюстрации*)

Возвращает итератор или сентинел, который сравнивается на равенство с конечным итератором zip_view.

Пусть views_ обозначает базовый кортеж представлений.

1) Эквивалентно:
  • return /*sentinel*/<false>(/*tuple-transform*/(ranges::end, views_));,
если /*zip-is-common*/<Views...> вычисляется в false. В противном случае:
  • return begin() + std::iter_difference_t</*iterator*/<false>>(size());,
если (ranges::random_access_range<Views> && ...) вычисляется в true. В противном случае:
  • return /*iterator*/<false>(/*tuple-transform*/(ranges::end, views_));.
2) Эквивалентно:
  • return /*sentinel*/<true>(/*tuple-transform*/(ranges::end, views_));,
если /*zip-is-common*/<const Views...> вычисляется в false. В противном случае:
  • return begin() + std::iter_difference_t</*iterator*/<true>>(size());,
если ranges::random_access_range<const Views> && ... вычисляется в true. В противном случае:
  • return /*iterator*/<true>(/*tuple-transform*/(ranges::end, views_));.

Параметры

(нет)

Возвращаемое значение

Итератор или сентинел, представляющий конец zip_view, как описано выше.

Примечания

ranges::range<const ranges::zip_view<Views...>> моделируется тогда и только тогда, когда для каждого типа Vi в Views..., const Vi моделирует range.

Пример

См. также

begin
возвращает итератор на начало
(открытая функция-член)
ranges::end
(C++20)
возвращает сентинел, обозначающий конец диапазона
(объект точки настройки)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/zip_view/end

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API