friend constexpr range_rvalue_reference_t<V>
iter_move(const iterator& i)
noexcept(noexcept(ranges::iter_move(i.current_))); // (1) C++20
概要
イテレータの要素を移動する。
効果
以下と等価:
return ranges::iter_move(i.current_);
例
#include <iostream>
#include <ranges>
#include <vector>
#include <string>
int main() {
std::vector<std::string> v = {"apple", "banana", "cherry", "date"};
auto is_long = [](const std::string& s) { return s.size() > 5; };
std::ranges::filter_view fv{v, is_long};
auto it = fv.begin();
// iter_moveで要素をムーブ
std::string s = iter_move(it);
std::cout << s << std::endl; // banana
// ムーブ後の元要素は空になる
std::cout << std::boolalpha << v[1].empty() << std::endl; // true
}
出力
banana
true
バージョン
言語
- C++20
処理系
- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅