std::weakly_incrementable
在标头 <iterator> 定义
|
||
template<class I> concept weakly_incrementable = |
(C++20 起) | |
其中 /*is-signed-integer-like*/<I> 当且仅当 I
为有符号整数式类型(见后述)。
此概念指定能以前后自增运算符自增的类型上的要求,不过这些自增运算不要求保持相等性,而且不要求类型自身为 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)
整数式类型
一个整数式类型是(可有 cv 限定的)整数类型(除了 cv bool )或一个实现提供(非用户提供)的表现同整数类型的类,包括所有运算符、隐式转换及 std::numeric_limits 特化。若一个整数式类型仅表示非负值,则它为无符号整数式,否则它为有符号整数式。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3467 | C++20 | bool 被认为是整数类型 | 已排除 |
P2325R3 | C++20 | 要求 default_initializable
|
不要求 |
参阅
(C++20) |
指定 weakly_incrementable 类型上的自增操作保持相等性,而且该类型为 equality_comparable (概念) |