GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
* Sign Up! *

Support
Customer Portal
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
iter_move(std::counted_iterator)(3) C++ Standard Libary iter_move(std::counted_iterator)(3)

iter_move(std::counted_iterator) - iter_move(std::counted_iterator)


friend constexpr decltype(auto) iter_move( const
std::counted_iterator& i )
(since C++20)
noexcept(noexcept(ranges::iter_move(i.base())))


requires std::input_iterator<I>;


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


The function body is equivalent to return ranges::iter_move(i.base());.


This function is not visible to ordinary unqualified or qualified lookup, and can
only be found by argument-dependent lookup when std::counted_iterator<I> is an
associated class of the arguments.


If i.count() is equal to 0, the behavior is undefined.


i - a source iterator adaptor


An rvalue reference or a prvalue temporary.


Constant.

// Run this code


#include <iomanip>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>


void print(auto const& rem, auto const& v)
{
std::cout << rem << '[' << size(v) << "] {";
for (char comma[]{0, ' ', 0}; auto const& 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);
}


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


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 3953 C++20 the return type was changed to
std::iter_rvalue_reference_t<I> decltype(auto)


iter_move casts the result of dereferencing an object to its associated
(C++20) rvalue reference type
(customization point object)
iter_swap swaps the objects pointed to by two underlying iterators
(C++20) (function template)
move obtains an rvalue reference
(C++11) (function template)
move_if_noexcept obtains an rvalue reference if the move constructor does not
(C++11) throw
(function template)
forward forwards a function argument
(C++11) (function template)
ranges::move moves a range of elements to a new location
(C++20) (niebloid)
ranges::move_backward moves a range of elements to a new location in backwards order
(C++20) (niebloid)

2024.06.10 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.