| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
move_iterator::base | ||||
| Non-member functions | ||||
(until C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++11) |
| (1) | ||
iterator_type base()const; | (constexpr since C++17) (until C++20) | |
constexprconst iterator_type& base()const&noexcept; | (since C++20) | |
constexpr iterator_type base()&&; | (2) | (since C++20) |
Returns the underlying iterator.
Contents |
currentcurrent )#include <algorithm>#include <iostream>#include <iterator>#include <vector> int main(){std::vector<int> v{0,1,2,3,4};std::move_iterator<std::vector<int>::reverse_iterator> m1{v.rbegin()}, m2{v.rend()}; std::copy(m1.base(), m2.base(),std::ostream_iterator<int>(std::cout," "));std::cout<<'\n';}
Output:
4 3 2 1 0
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3391 | C++20 | overload(1) returned a copy of the underlying iterator | returns a reference |
| LWG 3593 | C++20 | overload(1) was not noexcept | made noexcept |
| accesses the pointed-to element (public member function)[edit] |