table of contents
std::ranges::transform_view::iterator::base(3) | C++ Standard Libary | std::ranges::transform_view::iterator::base(3) |
NAME¶
std::ranges::transform_view::iterator::base - std::ranges::transform_view::iterator::base
Synopsis¶
constexpr const ranges::iterator_t<Base>& base() const
& noexcept; (1) (since C++20)
constexpr ranges::iterator_t<Base> base() &&; (2)
(since C++20)
Returns the underlying iterator.
1) Returns a reference to the underlying iterator.
2) Move constructs the result from the underlying iterator.
Parameters¶
(none)
Return value¶
1) A reference to the underlying iterator.
2) An iterator move constructed from the underlying iterator.
Example¶
// Run this code
#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';
}
Output:¶
0 1 2 3 4
0 1 2 3 4
0 2 4 6 8
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 3533 C++20 the const& overload of base returns a copy returns a
reference
of the underlying iterator
LWG 3593 C++20 the const& overload of base might not be made noexcept
noexcept
2022.07.31 | http://cppreference.com |