std::weakly_incrementable
来自cppreference.com
在标头 <iterator> 定义
|
||
template< class I > concept weakly_incrementable = |
(C++20 起) | |
/*is-signed-integer-like*/ 的定义见 is-integer-like
。
此概念指定“能以前后自增运算符自增的类型”上的要求,不过这些自增运算不要求保持相等性,而且不要求类型自身为 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++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
P2325R3 | C++20 | 要求 default_initializable
|
不要求 |
参阅
(C++20) |
指定 weakly_incrementable 类型上的自增操作保持相等性,而且该类型为 equality_comparable (概念) |