Spec-Zone.ru › C++

std::reverse_iterator<Iter>::operator=

template< class U > 
reverse_iterator& operator=( const reverse_iterator<U>& other );
(constexpr с C++17)

Присваивает other.current объекту current.

Эта перегрузка участвует в разрешении перегрузки, только если std::is_same_v<U, Iter> является false и моделируются оба понятия: std::convertible_to<const U&, Iter> и std::assignable_from<Iter&, const U&>.

(с C++20)

Параметры

other - адаптер итератора для присваивания

Возвращаемое значение

*this

Пример

#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<const short*> it2{nullptr};
    it2 = std::rbegin(a3); // OK
//  it2 = std::begin(a3);  // Compilation error: no viable operator= overload
    std::cout << *it2 << '\n';
}

Вывод:

42

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

Отчёт об ошибке Применяется к Опубликованное поведение Правильное поведение
LWG 280 C++98 гетерогенное присваивание не допускалось допускается
LWG 3435 C++20 ограничения для преобразующего оператора присваивания не были заданы ограничен

См. также

(конструктор)
создаёт новый reverse_iterator
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/reverse_iterator/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API