std::move_iterator<Iter>::base
| (1) | ||
iterator_type base() const; |
(с C++11) (до C++17) | |
constexpr iterator_type base() const; | (с C++17) (до C++20) | |
constexpr const iterator_type& base() const& noexcept; | (с C++20) | |
constexpr iterator_type base() &&; | (2) | (с C++20) |
Возвращает базовый итератор.
| 1) Копирует возвращаемое значение из базового итератора. | (до C++20) |
| 1) Возвращает ссылку на базовый итератор. | (с C++20) |
2) Перемещает возвращаемое значение из базового итератора.
Параметры
(нет)
Возвращаемое значение
| 1) Копия базового итератора. | (до C++20) |
| 1) Ссылка на базовый итератор. | (с C++20) |
2) Итератор, перемещённый из базового итератора.
Исключения
Может выбросить исключение, определённое реализацией.
Пример
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, 4};
std::move_iterator<std::vector<int>::reverse_iterator>
m1{v.rbegin()},
m2{v.rend()};
std::copy(m1.base(), m2.base(), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
}Вывод:
4 3 2 1 0
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 3391 | C++20 | постоянная версия base возвращает копию базового итератора | возвращает ссылку |
| LWG 3593 | C++20 | постоянная версия base возвращает ссылку, но может не быть noexcept | сделано noexcept |
См. также
|
(C++11)(C++11)(устарело в C++20) | доступ к элементу, на который указывает указатель (общедоступный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/move_iterator/base