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 将输入流用作输入数据的来源。
[edit] 语义要求
对于类型为 I
的对象 i,只有在满足以下所有条件时,I
才模拟 std::weakly_incrementable
- 表达式 ++i 和 i++ 具有相同的域。
- 如果 i 可递增,那么 ++i 和 i++ 都将递增 i。
- 如果 i 可递增,那么 std::addressof(++i) == std::addressof(i).
[edit] 缺陷报告
以下行为更改缺陷报告已追溯应用于以前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
P2325R3 | C++20 | default_initializable 是必需的 |
不需要 |
[edit] 另请参阅
(C++20) |
指定 weakly_incrementable 类型的增量运算 保持相等性 并且该类型是 equality_comparable (概念) |