命名空间
变体
操作

std::incrementable_traits

来自 cppreference.cn
< cpp‎ | iterator
 
 
迭代器库
迭代器概念
迭代器原语
(在 C++17 中弃用)
incrementable_traits
(C++20)


算法概念和工具
间接可调用概念
通用算法要求
(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 >
struct incrementable_traits {};
(1) (自 C++20 起)
template< class T >

    requires std::is_object_v<T>

struct incrementable_traits<T*>;
(2) (自 C++20 起)
template< class T >

struct incrementable_traits<const T>

    : incrementable_traits<T> {};
(3) (自 C++20 起)
template< class T >

    requires requires { typename T::difference_type; }

struct incrementable_traits<T>;
(4) (自 C++20 起)
template< class T >

    requires (!requires { typename T::difference_type; }) &&
             requires(const T& a, const T& b) { { a - b } -> std::integral; }

struct incrementable_traits<T>;
(5) (自 C++20 起)

计算类型 I 的关联差值类型(如果存在)。程序可以为程序定义的类型特化 incrementable_traits

1) 主模板是一个空结构体。
2) 指针的特化。
提供与 std::ptrdiff_t 相同的成员类型 difference_type
3) const 限定类型的特化。
4) 为定义了公开且可访问的成员类型 difference_type 的类型提供的特化。
提供与 T::difference_type 相同的成员类型 difference_type
5) 为未定义公开且可访问的成员类型 difference_type 但支持减法运算的类型提供的特化。
提供与 std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> 相同的成员类型 difference_type。隐式表达式变体规则(见下文)适用于表达式 a - b

[编辑] 隐式表达式变体

对于某些常量左值操作数使用非修改表达式的 requires 表达式 也需要隐式表达式变体

[编辑] 示例

[编辑] 参见

指定 semiregular 类型可以使用前缀和后缀递增运算符递增
(概念) [编辑]
计算迭代器的关联类型
(别名模板)[编辑]
提供到迭代器属性的统一接口
(类模板) [编辑]