- iterator[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp20[meta cpp]
namespace std {
friend constexpr decltype(auto)
iter_move(const counted_iterator& i) noexcept(noexcept(ranges::iter_move(i.current)))
requires input_iterator<I>;
}
- ranges::iter_move[link /reference/iterator/iter_move.md]
- input_iterator[link /reference/iterator/input_iterator.md]
counted_iterator
の指す要素をムーブする。
カウントの値をlength
メンバ変数に保持するとして
length >= 0
以下と等価
return ranges::iter_move(i.current);
- ranges::iter_move[link /reference/iterator/iter_move.md]
この関数はHidden friendsとして定義される。
基本的にはranges::iter_move
カスタマイゼーションポイントオブジェクトを通して利用する。
#include <iostream>
#include <iterator>
#include <ranges>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::counted_iterator ci{std::ranges::begin(vec) + 3, 5};
// ADLによる呼び出し
int n1 = iter_move(ci);
std::cout << n1 << std::endl;
++ci;
// ranges::iter_move CPOによる呼び出し
int n2 = std::ranges::iter_move(ci);
std::cout << n2 << std::endl;
}
- iter_move[color ff0000]
- ranges::iter_move[link /reference/iterator/iter_move.md]
4
5
- C++20
- Clang: ??
- GCC: 10.1 [mark verified]
- Visual C++: 2019 Update 9 [mark verified]