home | help
std::ranges...erator::base(3)  C++ Standard Libary std::ranges...erator::base(3)

NAME
     std::ranges::transform_view::iterator::base      -      std::ranges::trans-
     form_view::iterator::base

Synopsis
	constexpr const ranges::iterator_t<Base>& base() const &  noexcept;  (1)
     (since C++20)
	constexpr  ranges::iterator_t<Base>  base() &&; 		     (2)
     (since C++20)

	Returns the underlying iterator.

	1) Returns a reference to the underlying iterator.
	2) Move constructs the result from the underlying iterator.

Parameters
	(none)

Return value
	1) A reference to the underlying iterator.
	2) An iterator move constructed from the underlying iterator.

Example
     // Run this code

      #include <algorithm>
      #include <iostream>
      #include <iterator>
      #include <ranges>

      int main()
      {
	  const auto v = { 0, 1, 2, 3, 4 };
	  auto x2 = [](int x) { return x << 1; };
	  std::ranges::transform_view tv{ v, x2 };
	  std::ostream_iterator<int> ostr{ std::cout, " " };

	  std::ranges::copy(v, ostr), std::cout << '\n';
	  std::ranges::copy(tv.base(), ostr), std::cout << '\n';
	  std::ranges::copy(tv, ostr), std::cout << '\n';
      }

Output:
      0 1 2 3 4
      0 1 2 3 4
      0 2 4 6 8

	Defect reports

	The following behavior-changing defect	reports  were  applied	retroac-
     tively to
	previously published C++ standards.

	   DR	  Applied  to		 Behavior as published		    Cor-
     rect behavior
	LWG 3533 C++20	    the const& overload of base returns a copy	 returns
     a reference
			    of the underlying iterator
	LWG 3593 C++20	    the const& overload of base might  not  be	    made
     noexcept
			    noexcept

http://cppreference.com 	   2024.06.10	   std::ranges...erator::base(3)

home | help