Namespaces
Variants

std::experimental::ranges:: value_type

From cppreference.net
Défini dans l'en-tête <experimental/ranges/iterator>
template < class I >
struct value_type { } ;
(1)
template < class T >
struct value_type < T * > ;
(2)
template < class I >

requires 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 >

requires requires { typename T :: value_type ; }

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

requires requires { typename T :: element_type ; }

struct value_type < T > ;
(6)

Calcule le type de valeur associé du type I , le cas échéant. Les utilisateurs peuvent spécialiser value_type pour un type défini par le programme.

1) Le gabarit principal est une structure vide.
2) Spécialisation pour les pointeurs. Si T est un type objet, fournit un type membre type égal à std:: remove_cv_t < T > . Sinon, il n'y a pas de membre type .
3) Spécialisation pour les types de tableau.
4) Spécialisation pour les types qualifiés const.
5) Spécialisation pour les types qui définissent un type membre public et accessible value_type . Si T::value_type est un type objet, fournit un type membre type égal à T::value_type . Sinon, il n'y a pas de membre type .
6) Spécialisation pour les types qui définissent un type membre public et accessible element_type (par exemple, std::shared_ptr ). Si T::element_type est un type objet, fournit un type membre type égal à std:: remove_cv_t < typename T :: element_type > . Sinon, il n'y a pas de membre type .

Table des matières

Modèle d'alias d'assistance

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

Notes

Si un type contient à la fois un membre value_type et un membre element_type , alors les spécialisations (5) et (6) sont ambiguës.

value_type est destiné à être utilisé avec des types Readable tels que les itérateurs. Il n'est pas destiné à être utilisé avec des plages.

Exemple

Voir aussi

spécifie qu'un type est lisible en appliquant l'opérateur *
(concept)
classe de traits de compatibilité qui collecte les types associés d'un itérateur
(alias de modèle)