命名空间
变体
操作

std::incrementable

来自 cppreference.cn
< cpp‎ | iterator
 
 
迭代器库
迭代器概念
迭代器原语
算法概念和工具
间接可调用概念
常用算法要求
(C++20)
(C++20)
(C++20)
实用工具
(C++20)
迭代器适配器
范围访问
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
定义于头文件 <iterator>
template< class I >

    concept incrementable =
        std::regular<I> &&
        std::weakly_incrementable<I> &&
        requires(I i) {
            { i++ } -> std::same_as<I>;

        };
(自 C++20 起)

此概念指定了类型可以与前缀和后缀递增运算符一起递增的要求,其递增操作是 保等值的,并且该类型是 std::equality_comparable

与仅支持单遍算法的 std::weakly_incrementable 不同,多遍单向算法可以与建模 std::incrementable 的类型一起使用。

[edit] 语义要求

I 仅当给定类型为 I 的任意两个可递增对象 ab 时才建模 std::incrementable

  • bool(a == b) 蕴含 bool(a++ == b),并且
  • bool(a == b) 蕴含 bool(((void)a++, a) == ++b)

[edit] 保等值性

标准库概念的 requires 表达式 中声明的表达式需要是 保等值的(除非另有说明)。

[edit] 参见

指定 semiregular 类型可以使用前缀和后缀递增运算符进行递增
(概念) [编辑]
(C++20)
指定某个类型与另一类型相同
(概念) [编辑]