命名空间
变体
操作

std::incrementable_traits

来自 cppreference.cn
 
 
迭代器库
迭代器概念
迭代器原语
(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) 指针的特化。
提供一个成员类型 difference_type,与 std::ptrdiff_t 相同。
3) const 限定类型的特化。
4) 为定义公共且可访问成员类型 difference_type 的类型进行特化。
提供一个成员类型 difference_type,与 T::difference_type 相同。
5) 为未定义公共且可访问成员类型 difference_type 但支持减法运算的类型进行特化。
提供一个成员类型 difference_type,与 std::make_signed_t<decltype(std::declval<T>() - std::declval<T>())> 相同。隐式表达式变体规则(见下文)适用于表达式 a - b

[edit] 隐式表达式变体

使用对某个常量左值操作数不进行修改的表达式的 requires 表达式 也需要隐式表达式变体

[edit] 示例

[edit] 参阅

指定一个semiregular类型可以使用前置和后置增量运算符进行增量操作
(concept) [编辑]
计算迭代器的关联类型
(alias template)[编辑]
提供迭代器属性的统一接口
(class template) [编辑]