std::experimental::ranges::next
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/iterator> |
||
| namespace { constexpr /* 未指定 */ next = /* 未指定 */; |
(ranges TS) (カスタマイズポイントオブジェクト) |
|
| 呼び出しシグネチャ |
||
| template< Iterator I > constexpr I next( I i ); |
(1) | |
| template< Iterator I > constexpr I next( I i, ranges::difference_type_t<I> n ); |
(2) | |
| template< Iterator I, Sentinel<I> S > constexpr I next( I i, S bound ); |
(3) | |
| template< Iterator I, Sentinel<I> S > constexpr I next( I i, ranges::difference_type_t<I> n, S bound ); |
(4) | |
イテレータ i を n 回進めるか、または bound に到達するまで進めます(どちらか早い方)。進められたイテレータを返します。
1) ++i; return i; に相当します。
2) ranges::advance(i, n); return i; に相当します。
3) ranges::advance(i, bound); return i; に相当します。
4) ranges::advance(i, n, bound); return i; に相当します。
目次 |
[編集] カスタマイズポイントオブジェクト
ranges::next という名前は、*カスタマイズポイントオブジェクト*を指します。これは、関数オブジェクトであり、リテラルな Semiregular クラス型(説明のため NextT と表記)です。NextT のすべてのインスタンスは等価です。したがって、ranges::next は自由にコピーでき、そのコピーは相互に交換可能に使用できます。
型のセット Args... が与えられた場合、std::declval<Args>()... が上記の ranges::next の引数要件を満たす場合、NextT は ranges::Invocable<const NextT, Args...> を満たします。それ以外の場合、NextT の関数呼び出し演算子はオーバーロード解決に参加しません。
ranges::next が定義されているすべての翻訳単位において、カスタマイズポイントオブジェクトの同じインスタンスを参照します。(これは、インライン関数や関数テンプレートのようなもので、*one-definition rule* に違反することなく自由に利用できることを意味します。)
[編集] 返り値
進められたイテレータ。
[編集] 注意
オーバーロード (2) で n を省略すると n が 1 であるかのように動作しますが、オーバーロード (4) で n を省略すると、実際には n が無限大(常に bound まで進む)であるかのように動作します。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++11) |
イテレータをインクリメントする (関数テンプレート) |
| イテレータを指定された距離だけ進める (function template) | |
| イテレータをデクリメントする (function template) | |
| イテレータとセンチネルの間の距離、または範囲の開始と終了の間の距離を返します。 (function template) |