Namespaces
Variants

std::experimental::ranges:: difference_type

From cppreference.net
template < class I >
struct difference_type { } ;
(1)
template < class T >
struct difference_type < T * > ;
(2)
template < class T >
struct difference_type < const T > : difference_type < std:: decay_t < T >> { } ;
(3)
template < class T >

requires requires { typename T :: difference_type ; }

struct difference_type < T > ;
(4)
template < class T >

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

struct difference_type < T > ;
(5)

计算类型 I 的关联差值类型(若存在)。用户可为程序定义类型特化 difference_type

1) 主模板是一个空结构体。
2) 针对指针的特化。若 T 是对象类型,则提供成员类型 type 等于 std::ptrdiff_t 。否则不存在成员 type
3) 针对 const 限定类型的特化。
4) 针对定义了公开可访问成员类型 difference_type 的类型的特化。提供与 T::difference_type 相等的成员类型 type
5) 针对未定义公开可访问成员类型 difference_type 但支持减法运算的类型的特化。提供成员类型 type ,其等同于 std:: make_signed_t < decltype ( std:: declval < T > ( ) - std:: declval < T > ( ) ) >

辅助别名模板

template < class T >
using difference_type_t = typename ranges :: difference_type < T > :: type ;
(范围TS)

示例

参见

规定 Semiregular 类型可通过前置与后置自增运算符进行递增
(概念)
用于收集迭代器关联类型的兼容性特征类
(别名模板)