table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 
| std::counted_iterator::base(3) | C++ Standard Libary | std::counted_iterator::base(3) | 
NAME¶
std::counted_iterator::base - std::counted_iterator::base
Synopsis¶
 constexpr const I& base() const& noexcept; (1)
    (since C++20)
  
   constexpr I base() &&; (2) (since C++20)
  
   Returns the underlying base iterator.
  
   1) Returns a reference to the underlying iterator.
  
   2) Move constructs the return value from the underlying iterator.
Parameters¶
(none)
Return value¶
 1) A reference to the underlying iterator.
  
   2) An iterator move constructed from the underlying iterator.
Exceptions¶
May throw implementation-defined exceptions.
Example¶
// Run this code
  
   #include <algorithm>
  
   #include <iostream>
  
   #include <iterator>
  
   #include <type_traits>
  
   #include <vector>
  
   int main()
  
   {
  
   std::vector<int> v{0, 1, 2, 3, 4};
  
   std::reverse_iterator<std::vector<int>::iterator>
    reverse{v.rbegin()};
  
   std::counted_iterator counted{reverse, 3};
  
   static_assert(std::is_same<
  
   decltype(counted.base()),
  
   std::reverse_iterator<std::vector<int>::iterator> const&
  
   >{});
  
   std::cout << "Print with reverse_iterator: ";
  
   for (auto r = counted.base(); r != v.rend(); ++r)
  
   std::cout << *r << ' ';
  
   std::cout << '\n';
  
   std::cout << "Print with counted_iterator: ";
  
   for (; counted != std::default_sentinel; ++counted)
  
   std::cout << counted[0] << ' ';
  
   std::cout << '\n';
  
   }
Output:¶
 Print with reverse_iterator: 4 3 2 1 0
  
   Print with counted_iterator: 4 3 2
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   LWG 3391 C++20 the const version of base returns a copy of returns a
    reference
  
   the underlying iterator
  
   LWG 3593 C++20 the const version of base returns a made noexcept
  
   reference but might not be noexcept
See also¶
 operator* accesses the pointed-to element
  
   operator-> (public member function)
  
   (C++20)
  
   count returns the distance to the end
  
   (C++20) (public member function)
| 2024.06.10 | http://cppreference.com |