std:: weakly_incrementable
|
定義済みヘッダ
<iterator>
|
||
|
template
<
class
I
>
concept weakly_incrementable
=
|
(C++20以降) | |
/*is-signed-integer-like*/
の定義については、
is-integer-like
を参照してください。
このコンセプトは、前置および後置インクリメント演算子でインクリメント可能な型に対する要件を定義します。ただし、これらのインクリメント操作は必ずしも equality-preserving ではなく、型自体が std::equality_comparable である必要はありません。
std::weakly_incrementable型の場合、
a
==
b
が成り立つことは
++
a
==
++
b
を意味しません。弱インクリメント可能型に対するアルゴリズムはシングルパスアルゴリズムでなければなりません。これらのアルゴリズムは、
std::istream_iterator
を通じて入力データのソースとしてistreamと共に使用できます。
セマンティック要件
型
I
のオブジェクト
i
について、
I
が
std::weakly_incrementable
をモデルするのは、以下の条件がすべて満たされる場合に限ります:
- 式 ++ i と i ++ は同じドメインを持つ。
- i がインクリメント可能な場合、 ++ i と i ++ の両方が i を進める。
- i がインクリメント可能な場合、 std:: addressof ( ++ i ) == std:: addressof ( i ) が成り立つ。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| P2325R3 | C++20 |
default_initializable
が要求されていた
|
要求されない |
関連項目
|
(C++20)
|
weakly_incrementable
型に対するインクリメント操作が
等価性保存
であり、かつその型が
equality_comparable
であることを指定する
(コンセプト) |