Spec-Zone.ru › C++

std::counted_iterator<I>::base

constexpr const I& base() const& noexcept;
(1) (начиная с C++20)
constexpr I base() &&;
(2) (начиная с C++20)

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

1) Возвращает ссылку на базовый итератор.
2) Создаёт возвращаемое значение перемещением из базового итератора.

Параметры

(нет)

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

1) Ссылка на базовый итератор.
2) Итератор, созданный перемещением из базового итератора.

Исключения

Может генерировать исключения, определяемые реализацией.

Пример

#include <algorithm>
#include <iostream>
#include <iterator>
#include <type_traits>
#include <vector>

int main()
{
    std::vector<int> v{0, 1, 2, 3, 4};

    std::reverse_iterator<std::vector<int>::iterator> reverse{v.rbegin()};

    std::counted_iterator counted{reverse, 3};

    static_assert(std::is_same<
        decltype(counted.base()),
        std::reverse_iterator<std::vector<int>::iterator> const&
    >{});

    std::cout << "Print with reverse_iterator: ";
    for (auto r = counted.base(); r != v.rend(); ++r)
        std::cout << *r << ' ';
    std::cout << '\n';

    std::cout << "Print with counted_iterator: ";
    for (; counted != std::default_sentinel; ++counted)
        std::cout << counted[0] << ' ';
    std::cout << '\n';
}

Вывод:

Print with reverse_iterator: 4 3 2 1 0
Print with counted_iterator: 4 3 2

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

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

DR Применён к Поведение согласно опубликованной версии Правильное поведение
LWG 3391 C++20 const-версия base возвращает копию базового итератора возвращает ссылку
LWG 3593 C++20 const-версия base возвращает ссылку, но может не быть noexcept добавлена спецификация noexcept

См. также

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

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

Spec-Zone.ru

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