iterator() requires default_initializable<iterator_t<V>> = default; // (1)
constexpr iterator(filter_view& parent, iterator_t<V> current); // (2)
概要
filter_view::iterator
オブジェクトを構築する。
効果
- (1) :
current_
、parent_
をデフォルト構築する - (2) :
current_
をstd::move(current_)
で、parent_
をaddressof(parent_)
で初期化する
例
#include <ranges>
#include <vector>
int main() {
using std::ranges::filter_view;
using std::ranges::iterator_t;
std::vector<int> vec = {0, 1, 2, 3, 4, 5};
filter_view fv{vec, [](int x){ return x % 2 == 0; }};
iterator_t<filter_view> i(fv, vec.begin());
std::cout << *i << `\n`;
i++;
std::cout << *i << `\n`;
i++;
std::cout << *i << `\n`;
}
出力
0
2
4
バージョン
言語
- C++20
処理系
- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅