Spec-Zone.ru › C++

std::ranges::transform_view<V,F>::iterator<Const>::base

constexpr const ranges::iterator_t<Base>& base() const & noexcept;
(1) (начиная с C++20)
constexpr ranges::iterator_t<Base> base() &&;
(2) (начиная с C++20)

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

1) Возвращает ссылку на базовый итератор.
2) Перемещающим конструктором создает результат из базового итератора.

Параметры

(нет)

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

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

Пример

#include <algorithm>
#include <iostream>
#include <iterator>
#include <ranges>

int main()
{
    const auto v = { 0, 1, 2, 3, 4 };
    auto x2 = [](int x) { return x << 1; };
    std::ranges::transform_view tv{ v, x2 };
    std::ostream_iterator<int> ostr{ std::cout, " " };

    std::ranges::copy(v, ostr), std::cout << '\n';
    std::ranges::copy(tv.base(), ostr), std::cout << '\n';
    std::ranges::copy(tv, ostr), std::cout << '\n';
}

Вывод:

0 1 2 3 4
0 1 2 3 4
0 2 4 6 8

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

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

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

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

Spec-Zone.ru

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