Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      iter_move(std::counted_iterator)

      From cppreference.com
      <cpp‎ |iterator‎ |counted 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)
       
       
      friendconstexpr decltype(auto) iter_move(conststd::counted_iterator& i)

         noexcept(noexcept(ranges::iter_move(i.base())))

              requiresstd::input_iterator<I>;
      (since C++20)

      Casts the result of dereferencing the underlying iterator to its associated rvalue reference type.

      The function body is equivalent toreturnranges::iter_move(i.base());.

      This function is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup whenstd::counted_iterator<I> is an associated class of the arguments.

      Ifi.count() is equal to0, the behavior is undefined.

      Contents

      [edit]Parameters

      i - a source iterator adaptor

      [edit]Return value

      An rvalue reference or a prvalue temporary.

      [edit]Complexity

      Constant.

      [edit]Example

      Run this code
      #include <iomanip>#include <iostream>#include <iterator>#include <string>#include <vector> void print(autoconst& rem,autoconst& v){std::cout<< rem<<'['<< size(v)<<"] {";for(char comma[]{0,' ',0};autoconst& s: v)std::cout<< comma<<std::quoted(s),*comma=',';std::cout<<"}\n";} int main(){std::vector<std::string> p{"Alpha","Bravo","Charlie"}, q;    print("p", p);    print("q", q); using RI=std::counted_iterator<std::vector<std::string>::iterator>; for(RI iter{p.begin(),2}; iter!=std::default_sentinel;++iter)        q.emplace_back(/* ADL */ iter_move(iter));     print("p", p);    print("q", q);}

      Possible output:

      p[3] {"Alpha", "Bravo", "Charlie"}q[0] {}p[3] {"", "", "Charlie"}q[2] {"Alpha", "Bravo"}

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3953C++20the return type wasstd::iter_rvalue_reference_t<I>changed todecltype(auto)

      [edit]See also

      (C++20)
      casts the result of dereferencing an object to its associated rvalue reference type
      (customization point object)[edit]
      (C++20)
      swaps the objects pointed to by two underlying iterators
      (function template)[edit]
      (C++11)
      converts the argument to an xvalue
      (function template)[edit]
      converts the argument to an xvalue if the move constructor does not throw
      (function template)[edit]
      (C++11)
      forwards a function argument and use the type template argument to preserve its value category
      (function template)[edit]
      moves a range of elements to a new location
      (algorithm function object)[edit]
      moves a range of elements to a new location in backwards order
      (algorithm function object)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/counted_iterator/iter_move&oldid=169860"

      [8]ページ先頭

      ©2009-2026 Movatter.jp