| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
(until C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
iter_move (C++20) | ||||
(C++20) | ||||
(C++11) |
friendconstexprstd::iter_rvalue_reference_t<Iter> iter_move(conststd::move_iterator& i)noexcept(/* see below */); | (since C++20) | |
Casts the result of dereferencing the underlying iterator to its associated rvalue reference type.
Equivalent toreturn std::ranges::iter_move(i.base());.
This function template is not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup whenstd::move_iterator<Iter> is an associated class of the arguments.
Contents |
| i | - | a source move iterator |
An rvalue reference or a prvalue temporary.
Constant.
#include <iomanip>#include <iostream>#include <iterator>#include <string>#include <vector> void print(constauto& rem,constauto& v){std::cout<< rem<<'['<< size(v)<<"] { ";for(char comma[]{0,' ',0};constauto& s: v)std::cout<< comma<<std::quoted(s), comma[0]=',';std::cout<<" }\n";} int main(){std::vector<std::string> p{"Andromeda","Cassiopeia","Phoenix"}, q; print("p", p), print("q", q); using MI=std::move_iterator<std::vector<std::string>::iterator>; for(MI first{p.begin()}, last{p.end()}; first!= last;++first) q.emplace_back(/* ADL */ iter_move(first)); print("p", p), print("q", q);}
Possible output:
p[3] { "Andromeda", "Cassiopeia", "Phoenix" }q[0] { }p[3] { "", "", "" }q[3] { "Andromeda", "Cassiopeia", "Phoenix" }(C++20) | casts the result of dereferencing an object to its associated rvalue reference type (customization point object)[edit] |
(C++20) | casts the result of dereferencing the adjusted underlying iterator to its associated rvalue reference type (function)[edit] |
(C++11) | converts the argument to an xvalue (function template)[edit] |
(C++11) | 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] |
(C++20) | moves a range of elements to a new location (algorithm function object)[edit] |
(C++20) | moves a range of elements to a new location in backwards order (algorithm function object)[edit] |