std::experimental::ranges:: distance
|
namespace
{
constexpr
/* unspecified */
distance
=
/* unspecified */
;
|
(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
が定義されるすべての翻訳単位において、これはカスタマイゼーションポイントオブジェクトの同一インスタンスを参照します。(これは、インライン関数や関数テンプレート内で自由に使用でき、
一定義規則
に違反しないことを意味します。)
戻り値
first と last の間、または範囲 r の先頭と終端の間の距離。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
2つのイテレータ間の距離を返す
(関数テンプレート) |
|
|
イテレータを指定された距離だけ進める
(関数テンプレート) |
|
|
イテレータをインクリメントする
(関数テンプレート) |
|
|
イテレータをデクリメントする
(関数テンプレート) |
|
|
定数時間でサイズを計算できる範囲のサイズを取得する
(カスタマイゼーションポイントオブジェクト) |