std::ranges...on_view::end(3)
π
std::ranges...on_view::end(3) π
okay so bestie, this is the C++ Standard Libary page for std::ranges...on_view::end(3) β the NAME line goes std::ranges::common_view::end, and no cap, this is the end member of std::ranges::common_view. Letβs get into it π«Ά
πΈ NAME πΈ
std::ranges::common_view::end β std::ranges::common_view::end (yes, it says it twice; we love a consistent icon π)
β¨ Synopsis β¨
Two overloads, both since C++20, living their best lives:
constexpr auto end() requires (!__simple_view<V>); (1)
(since C++20)
constexpr auto end() const requires ranges::range<const V>; (2)
(since C++20)
So like, what are they actually doing?
- Returns an iterator representing the end of the
common_view, that is:ranges::begin(base_) + ranges::size(base_), if bothranges::random_access_range<V>andranges::sized_range<V>are satisfied,std::common_iterator<ranges::iterator_t<V>, ranges::sentinel_t<V>>(ranges::end(base_))otherwise.
Here base_ (the name is for exposition purposes only) is the underlying view.
- Same as (1), but
Vis const-qualified.
π Parameters π
(none) β zero, zip, nada πΈ
π¦ Return value π¦
An iterator representing the end of the underlying view. Thatβs the whole vibe π
π Example π
Run this code, bestie:
// Run this code
#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';
}
π Output π
It prints:
40
π Defect reports π
The manual says: βThe following behavior-changing defect reports were applied retroactively to previously published C++ standards.β
LWG 4012β applied toC++20; behavior as published: non-const overload missed simple-view check; correct behavior: added.
π See also π
begin(C++20) β returns an iterator to the beginning; public member function.ranges::begin(C++20) β returns an iterator to the beginning of a range; customization point object.ranges::end(C++20) β returns a sentinel indicating the end of a range; customization point object.
source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::ranges...on_view::end(3) β bye bestie, go crush those ranges πβ¨
π¦ 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