std::ranges::common_view<V>::end
constexpr auto end() requires (!/*simple-view*/<V>); | (1) | (начиная с C++20) |
constexpr auto end() const requires ranges::range<const V>; | (2) | (начиная с C++20) |
common_view, то есть: -
ranges::begin(base_)+ranges::distance(base_), если выполнены условия ranges::random_access_range<V> и ranges::sized_range<V>, -
std::common_iterator<ranges::iterator_t<V>,ranges::sentinel_t<V>>(ranges::end(base_))в противном случае.
2) То же, что и (1), но
V имеет квалификатор const.Возвращаемое значение
Итератор, представляющий конец базового представления.
Пример
#include <iostream>
#include <numeric>
#include <ranges>
int main()
{
constexpr int n{4};
constexpr auto v1 = std::views::iota(1)
| std::views::take(n)
| std::views::common
;
constexpr auto v2 = std::views::iota(2)
| std::views::take(n)
;
const int product = std::inner_product(v1.begin(), v1.end(),
v2.begin(),
0);
std::cout << product << '\n';
}
Вывод:
40
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 4012 | C++20 | в перегрузке без const отсутствовала проверка simple-view | добавлена |
См. также
| возвращает итератор на начало (открытая функция-член) |
|
|
(C++20) | возвращает итератор на начало диапазона (объект-точка настройки) |
|
(C++20) | возвращает сентинел, обозначающий конец диапазона (объект-точка настройки) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/common_view/end