table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 
| std::common_iterator::operator=(3) | C++ Standard Libary | std::common_iterator::operator=(3) | 
NAME¶
std::common_iterator::operator= - std::common_iterator::operator=
Synopsis¶
template< class I2, class S2 >
  
   requires std::convertible_to<const I2&, I> &&
  
   std::convertible_to<const S2&, S> &&
  
   std::assignable_from<I&, const I2&> && (since
    C++20)
  
   std::assignable_from<S&, const S2&>
  
   constexpr common_iterator& operator=( const common_iterator<I2,
    S2>&
  
   x );
  
   Assigns the underlying std::variant member object var from that of x.
  
   Let i is x.var.index(). Then, this assignment is equivalent to:
  
   * std::get<i>(var) = std::get<i>(x.var), if var.index() == i,
  
   * var.emplace<i>(std::get<i>(x.var)) otherwise.
  
   The behavior is undefined if x is in an invalid state, that is,
  
   x.var.valueless_by_exception() is equal to true.
Parameters¶
x - iterator adaptor to assign from
Return value¶
*this
Example¶
// Run this code
  
   #include <algorithm>
  
   #include <initializer_list>
  
   #include <iostream>
  
   #include <iterator>
  
   int main()
  
   {
  
   const auto il = {1, 2, 3, 4, 5, 6};
  
   using CI = std::common_iterator<
  
   std::counted_iterator<std::initializer_list<int>::iterator>,
  
   std::default_sentinel_t>;
  
   CI first{std::counted_iterator{std::next(begin(il), 1), ssize(il) - 1}};
  
   const CI first2{std::counted_iterator{std::next(begin(il), 2), ssize(il) -
    2}};
  
   const CI last{std::default_sentinel};
  
   std::copy(first, last, std::ostream_iterator<int>{std::cout, "
    "});
  
   std::cout << '\n';
  
   first = first2;
  
   std::copy(first, last, std::ostream_iterator<int>{std::cout, "
    "});
  
   std::cout << '\n';
  
   }
Output:¶
 2 3 4 5 6
  
   3 4 5 6
  
   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 3574 C++20 variant was fully constexpr (P2231R1) but also made constexpr
  
   common_iterator was not
See also¶
 constructor constructs a new iterator adaptor
  
   (C++20) (public member function)
| 2024.06.10 | http://cppreference.com |