Namespaces
Variants

std::experimental::ranges:: value_type

From cppreference.net
Definido en el encabezado <experimental/ranges/iterator>
template < class I >
struct value_type { } ;
(1)
template < class T >
struct value_type < T * > ;
(2)
template < class I >

requiere std:: is_array < I > :: value

struct value_type < I > : value_type < std:: decay_t < I >> { } ;
(3)
template < class T >
struct value_type < const T > : value_type < std:: decay_t < T >> { } ;
(4)
template < class T >

requiere requiere { typename T :: value_type ; }

struct value_type < T > ;
(5)
template < class T >

requiere requiere { typename T :: element_type ; }

struct value_type < T > ;
(6)

Calcula el tipo de valor asociado del tipo I , si existe. Los usuarios pueden especializar value_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:: remove_cv_t < T > . De lo contrario, no existe el miembro type .
3) Especialización para tipos de array.
4) Especialización para tipos calificados con const.
5) Especialización para tipos que definen un tipo miembro público y accesible value_type . Si T::value_type es un tipo objeto, proporciona un tipo miembro type igual a T::value_type . De lo contrario, no existe el miembro type .
6) Especialización para tipos que definen un tipo miembro público y accesible element_type (por ejemplo, std::shared_ptr ). Si T::element_type es un tipo objeto, proporciona un tipo miembro type igual a std:: remove_cv_t < typename T :: element_type > . De lo contrario, no existe el miembro type .

Contenidos

Plantilla de alias auxiliar

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

Notas

Si un tipo contiene tanto un miembro value_type como un miembro element_type , entonces las especializaciones (5) y (6) son ambiguas.

value_type está destinado para su uso con tipos Readable como los iteradores. No está destinado para su uso con rangos.

Ejemplo

Véase también

especifica que un tipo es legible aplicando el operador *
(concepto)
clase de rasgos de compatibilidad que recopila los tipos asociados de un iterador
(plantilla de alias)