Spec-Zone.ru › C++

std::ranges::enumerate_view<V>::end

constexpr auto end() requires (!__simple_view<V>);
(1) (начиная с C++23)
constexpr auto end() const requires /*range-with-movable-references*/<const V>;
(2) (начиная с C++23)

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

Пусть base_ обозначает базовое представление.

1) Эквивалентно:
if constexpr (ranges::forward_range<V> and 
              ranges::common_range<V>  and 
              ranges::sized_range<V>)
    return /*iterator*/<false>(ranges::end(base_), ranges::distance(base_));
else
    return /*sentinel*/<false>(ranges::end(base_));
2) Эквивалентно:
if constexpr (ranges::forward_range<const V> and 
              ranges::common_range<const V>  and 
              ranges::sized_range<const V>)
    return /*iterator*/<true>(ranges::end(base_), ranges::distance(base_));
else
    return /*sentinel*/<true>(ranges::end(base_));

Параметры

(нет)

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

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

Пример

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применяется к Опубликованное поведение Правильное поведение
LWG 3919 C++23 ranges::distance может вызывать неопределённое поведение для размерных общих
базовых диапазонов, не являющихся диапазонами прямого прохода
для таких диапазонов возвращается тип sentinel

См. также

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

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

Spec-Zone.ru

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