std::ranges::transform_view<V,F>::iterator<Const>::base
From cppreference.com
< cpp | ranges | transform view | iterator
constexprconstranges::iterator_t<Base>& base()const&noexcept; | (1) | (since C++20) |
constexprranges::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.
Contents |
[edit]Parameters
(none)
[edit]Return value
1) A reference to the underlying iterator.
2) An iterator move constructed from the underlying iterator.
[edit]Example
Run this code
#include <algorithm>#include <iostream>#include <iterator>#include <ranges> int main(){constauto 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
[edit]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 of the underlying iterator | returns a reference |
LWG 3593 | C++20 | the const& overload of base might not be noexcept | made noexcept |