Spec-Zone.ru › C++

std::move_iterator<Iter>::base

iterator_type base() const;
(1) (constexpr начиная с C++17)
(до C++20)
constexpr const iterator_type& base() const& noexcept;
(начиная с C++20)
constexpr iterator_type base() &&;
(2) (начиная с C++20)

Возвращает базовый итератор.

1) Возвращает копию(до C++20)ссылку на(начиная с C++20) базовый итератор.
2) Возвращает итератор, созданный перемещающим конструктором из базового итератора.

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

1) current
2) std::move(current )

Пример

#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++.

Отчёт об ошибке Применён к Опубликованное поведение Правильное поведение
LWG 3391 C++20 перегрузка (1) возвращала копию базового итератора возвращает ссылку
LWG 3593 C++20 перегрузка (1) не имела спецификатора noexcept добавлен noexcept

См. также

operator*operator->
обращается к элементу, на который указывает итератор
(открытая функция-член)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/move_iterator/base

Spec-Zone.ru

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