std::experimental::ranges::distance
| Defined in header <experimental/ranges/iterator> |
||
| namespace { constexpr /* 不明 */ distance = /* 不明 */; |
(ranges TS) (カスタマイズポイントオブジェクト) |
|
| 呼び出しシグネチャ |
||
| template< Iterator I, Sentinel<I> S > constexpr ranges::difference_type_t<I> distance( I first, S last ); |
(1) | |
| template< Range R > constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r ); |
(2) | |
| template< SizedRange R > constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r ); |
(3) | |
first と last の間の距離、または範囲 r の開始から終了までの距離を返します。
[first, last) が範囲を表現しない場合、 I と S は同じ型でなければならず、 SizedSentinel をモデル化していなければなりません。また、 [last, first) は範囲を表現しなければなりません。それ以外の場合、動作は未定義です。オーバーロード (2,3) のインスタンス化は、インスタンス化ポイントの前にヘッダー <experimental/ranges/range> がインクルードされていない場合、 ill-formed である可能性があります。
目次 |
[編集] カスタマイズポイントオブジェクト
ranges::distance という名前は、 関数オブジェクトであり、 リテラルな Semiregular クラス型(説明のため DistanceT と表記)の *カスタマイズポイントオブジェクト* を示します。 DistanceT のすべてのインスタンスは等価です。したがって、 ranges::distance は自由にコピーでき、そのコピーは相互に交換可能です。
型 Args... のセットが与えられた場合、 std::declval<Args>()... が上記の ranges::distance の引数要件を満たす場合、 DistanceT は ranges::Invocable<const DistanceT, Args...> を満たします。それ以外の場合、 DistanceT の関数呼び出し演算子はオーバーロード解決に参加しません。
ranges::distance が定義されているすべての翻訳単位において、カスタマイズポイントオブジェクトの同じインスタンスを参照します。(これは、インライン関数や関数テンプレートなどで、One Definition Rule に違反することなく自由に利用できることを意味します。)
[編集] 返り値
first と last の間の距離、または範囲 r の開始から終了までの距離。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| 2つのイテレータ間の距離を返す (関数テンプレート) | |
| イテレータを指定された距離だけ進める (function template) | |
| イテレータをインクリメントする (function template) | |
| イテレータをデクリメントする (function template) | |
| 定数時間で計算可能なサイズを持つ範囲のサイズを取得します。 (customization point object) |