Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::common_iterator<I,S>::operator=

      From cppreference.com
      <cpp‎ |iterator‎ |common iterator
       
       
      Iterator library
      Iterator concepts
      Iterator primitives
      Algorithm concepts and utilities
      Indirect callable concepts
      Common algorithm requirements
      (C++20)
      (C++20)
      (C++20)
      Utilities
      (C++20)
      Iterator adaptors
      Range access
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++17)(C++20)
      (C++17)
      (C++17)
       
       
      template<class I2,class S2>

      requiresstd::convertible_to<const I2&, I>&&
               std::convertible_to<const S2&, S>&&
               std::assignable_from<I&,const I2&>&&
               std::assignable_from<S&,const S2&>

      constexpr common_iterator& operator=(const common_iterator<I2, S2>& x);
      (since C++20)

      Assigns the underlyingstd::variant member objectvar from that ofx.

      Leti isx.var.index(). Then, this assignment is equivalent to:

      • std::get<i>(var)= std::get<i>(x.var), ifvar.index()== i,
      • var.emplace<i>(std::get<i>(x.var)) otherwise.

      The behavior is undefined ifx is in an invalid state, that is,x.var.valueless_by_exception() is equal totrue.

      Contents

      [edit]Parameters

      x - iterator adaptor to assign from

      [edit]Return value

      *this

      [edit]Example

      Run this code
      #include <algorithm>#include <initializer_list>#include <iostream>#include <iterator> int main(){constauto 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

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3574C++20variant was fully constexpr (P2231R1) butcommon_iterator was notalso made constexpr

      [edit]See also

      constructs a newcommon_iterator
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/common_iterator/operator%3D&oldid=159359"

      [8]ページ先頭

      ©2009-2025 Movatter.jp