Namespaces
Variants

std:: incrementable_traits

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
(deprecated in C++17)
incrementable_traits
(C++20)


Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(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 类型可通过前置与后置递增运算符进行自增
(概念)
计算迭代器的关联类型
(别名模板)
为迭代器的属性提供统一接口
(类模板)