命名空间
变体
操作

std::incrementable_traits

来自 cppreference.com
< 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) 常量限定类型特化。
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 类型可以使用前缀和后缀递增运算符进行递增
(概念) [编辑]
计算迭代器的关联类型
(别名模板) [编辑]
提供迭代器属性的统一接口
(类模板) [编辑]