Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
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