table of contents
std::reverse_iterator::operator=(3) | C++ Standard Libary | std::reverse_iterator::operator=(3) |
NAME¶
std::reverse_iterator::operator= - std::reverse_iterator::operator=
Synopsis¶
template< class U > (until C++17)
reverse_iterator& operator=( const reverse_iterator<U>& other
);
template< class U >
constexpr reverse_iterator& operator=( const
reverse_iterator<U>& (since C++17)
other );
The underlying iterator is assigned the value of the underlying iterator of
other,
i.e. other.base().
This overload participates in overload resolution only if U is not the
same type as Iter and std::convertible_to<const U&, Iter> and
(since C++20)
std::assignable_from<Iter&, const U&> are modeled.
Parameters¶
other - iterator adaptor to assign
Return value¶
*this
Example¶
// Run this code
#include <iostream>
#include <iterator>
int main()
{
const int a1[] {0, 1, 2};
int a2[] {0, 1, 2, 3};
short a3[] {40, 41, 42};
std::reverse_iterator<const int*> it1{ std::crbegin(a1) };
it1 = std::reverse_iterator<int*>{ std::rbegin(a2) }; // OK
// it1 = std::reverse_iterator<short*>{ std::rbegin(a3) }; //
compilation error:
// incompatible pointer types
std::reverse_iterator<short const*> it2{ nullptr };
it2 = std::rbegin(a3); // OK
// it2 = std::begin(a3); // compilation error: no viable overloaded '='
std::cout << *it2 << '\n';
}
Output:¶
42
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 3435 C++20 the converting assignment operator was not constrained
constrained
See also¶
constructor constructs a new iterator adaptor
(public member function)
2022.07.31 | http://cppreference.com |