std:: sized_sentinel_for, std:: disable_sized_sentinel_for
|
ヘッダーで定義
<iterator>
|
||
|
template
<
class
S,
class
I
>
concept sized_sentinel_for
=
|
(1) | (C++20以降) |
|
template
<
class
S,
class
I
>
inline constexpr bool disable_sized_sentinel_for = false ; |
(2) | (C++20以降) |
sized_sentinel_for
コンセプトは、イテレータ型
I
のオブジェクトと番兵型
S
のオブジェクトが、定数時間でそれらの間の距離を計算するために減算できることを指定します。
disable_sized_sentinel_for
変数テンプレートは、減算が可能であるが実際には
sized_sentinel_for
コンセプトをモデル化しないイテレータとセンチネルが、このコンセプトを満たすことを防止するために使用できます。
S
および
I
に対して
disable_sized_sentinel_for
を特殊化することができます。ただし、少なくとも一方が
プログラム定義型
でなければなりません。このような特殊化は
定数式
で使用可能であり、型は
const
bool
を持ちます。
目次 |
セマンティック要件
i
を型
I
のイテレータ、
s
を型
S
のセンチネルとし、
[
i
,
s
)
が範囲を表すものとする。
n
を
++
i
の適用回数の最小値とし、これにより
bool
(
i
==
s
)
が
true
となるものとする。
I
と
S
が
sized_sentinel_for<S, I>
をモデル化するのは、以下の条件がすべて満たされる場合に限る:
- n が std:: iter_difference_t < I > で表現可能な場合、 s - i は well-defined であり、 n と等しい。
- - n が std:: iter_difference_t < I > で表現可能な場合、 i - s は well-defined であり、 - n と等しい。
等価性保存
標準ライブラリコンセプトの requires expressions で宣言される式は、 equality-preserving であることが要求されます(特に明記されている場合を除く)。
暗黙的な式のバリエーション
定数左辺値オペランドに対して非変更式を使用する requires 式 は、 暗黙的な式バリエーション も要求します。
関連項目
|
(C++20)
|
範囲が定数時間でそのサイズを知ることを指定する
(コンセプト) |
|
(C++20)
|
範囲のサイズに等しい整数を返す
(カスタマイゼーションポイントオブジェクト) |