std::ranges::drop_while_view::base(3)

NAME
std::ranges::drop_while_view::base - std::ranges::drop_while_view::base

Synopsis
   constexpr V base() const& requires std::copy_constructible<V>; (1) (since C++20)
   constexpr V base() &&; (2) (since C++20)
   Returns a copy of the underlying view.
   1) Copy constructs the result from the underlying view.
   2) Move constructs the result from the underlying view.

Parameters
   (none)

Return value
   A copy of the underlying view.

Example
// Run this code
 #include <array>
 #include <ranges>
 #include <iostream>
 #include <algorithm>
 void print(auto first, auto last) {
     for (; first != last; ++first)
         std::cout << *first << ' ';
     std::cout << '\n';
 }
 int main()
 {
     std::array data{ 1, 2, 3, 4, 5 };
     print(data.cbegin(), data.cend());
     auto func = [](int x) { return x < 3; };
     auto view = std::ranges::drop_while_view{ data, func };
     print(view.begin(), view.end());
     auto base = view.base(); // `base` refers to the `data`
     std::ranges::reverse(base); //< changes `data` indirectly
     print(data.cbegin(), data.cend());
 }

Output:
 1 2 3 4 5
 3 4 5
 5 4 3 2 1