std::ranges::adjacent_view::begin(3)

NAME
std::ranges::adjacent_view::begin - std::ranges::adjacent_view::begin

Synopsis
   constexpr auto begin() requires (!__SimpleView<V>); (1) (since C++23)
   constexpr auto begin() const requires ranges::range<const V>; (2) (since C++23)
   Returns an iterator to the first element of the adjacent_view.
   Let base_ be the underlying view.
   1) Equivalent to return /*iterator*/<false>(ranges::begin(base_),
   ranges::end(base_));.
   2) Equivalent to return /*iterator*/<true>(ranges::begin(base_),
   ranges::end(base_));.

Parameters
   (none)

Return value
   Iterator to the first element.

Example
// Run this code
 #include <ranges>
 #include <tuple>
 #include <type_traits>
 int main()
 {
     constexpr static auto v = {'A', 'B', 'C', 'D', 'E'};
     constexpr auto view = std::views::adjacent<3>(v);
     constexpr auto tuple = *view.begin();
     static_assert
     (
         std::is_same_v
         <
             decltype(tuple),
             const std::tuple<char const&, char const&, char const&>
         >
     );
     static_assert
     (
         std::get<0>(tuple) == 'A' &&
         std::get<1>(tuple) == 'B' &&
         std::get<2>(tuple) == 'C'
     );
 }

See also
   end returns an iterator or a sentinel to the end
   (C++23) (public member function)
   ranges::begin returns an iterator to the beginning of a range
   (C++20) (customization point object)