Namespaces
Variants

std::experimental::ranges:: difference_type

From cppreference.net
Definido en el encabezado <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)

Calcula el tipo de diferencia asociado del tipo I , si existe. Los usuarios pueden especializar difference_type para un tipo definido por el programa.

1) La plantilla primaria es una estructura vacía.
2) Especialización para punteros. Si T es un tipo objeto, proporciona un tipo miembro type igual a std::ptrdiff_t . De lo contrario, no existe el miembro type .
3) Especialización para tipos calificados con const.
4) Especialización para tipos que definen un tipo miembro público y accesible difference_type . Proporciona un tipo miembro type igual a T::difference_type .
5) Especialización para tipos que no definen un tipo miembro público y accesible difference_type pero sí admiten la resta. Proporciona un tipo miembro type igual a std:: make_signed_t < decltype ( std:: declval < T > ( ) - std:: declval < T > ( ) ) > .

Plantilla de alias auxiliar

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

Ejemplo

Véase también

especifica que un tipo Semiregular puede ser incrementado con operadores de pre- y post-incremento
(concepto)
clase de rasgos de compatibilidad que recopila los tipos asociados de un iterador
(plantilla de alias)