std::ranges::transform_view<V,F>::iterator<Const>::base
constexpr const ranges::iterator_t<Base>& base() const & noexcept; | (1) | (since C++20) |
constexpr ranges::iterator_t<Base> base() &&; | (2) | (since 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 | перегрузка base возвращает копию базового итератора | возвращает ссылку |
| LWG 3593 | C++20 | перегрузка base может не быть noexcept | сделано noexcept |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/transform_view/iterator/base