Namespaces
Variants

std::experimental::ranges:: difference_type

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/iterator>
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)을 계산합니다(존재하는 경우). 사용자는 프로그램 정의 타입에 대해 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 타입이 전위 및 후위 증가 연산자로 증가될 수 있음을 명시
(컨셉)
반복자의 관련 타입들을 수집하는 호환성 특성 클래스
(앨리어스 템플릿)