Namespaces
Variants

std::experimental::ranges:: value_type

From cppreference.net
template < class I >
struct value_type { } ;
(1)
template < class T >
struct value_type < T * > ;
(2)
template < class I >

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

erfordert requires { typename T :: value_type ; }

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

erfordert requires { typename T :: element_type ; }

struct value_type < T > ;
(6)

Berechnet den zugehörigen Werttyp des Typs I , falls vorhanden. Benutzer können value_type für einen programmdefinierten Typ spezialisieren.

1) Primäres Template ist eine leere Struktur.
2) Spezialisierung für Zeiger. Wenn T ein Objekttyp ist, stellt einen Membertyp type bereit, der gleich std:: remove_cv_t < T > ist. Andernfalls gibt es kein Member type .
3) Spezialisierung für Array-Typen.
4) Spezialisierung für const-qualifizierte Typen.
5) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Member-Typ value_type definieren. Falls T::value_type ein Objekttyp ist, stellt sie einen Member-Typ type bereit, der gleich T::value_type ist. Andernfalls existiert kein Member type .
6) Spezialisierung für Typen, die einen öffentlichen und zugänglichen Member-Typ element_type definieren (z.B. std::shared_ptr ). Falls T::element_type ein Objekttyp ist, stellt es einen Member-Typ type bereit, der gleich std:: remove_cv_t < typename T :: element_type > ist. Andernfalls existiert kein Member type .

Inhaltsverzeichnis

Hilfs-Alias-Template

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

Hinweise

Wenn ein Typ sowohl ein value_type -Mitglied als auch ein element_type -Mitglied enthält, dann sind die Spezialisierungen (5) und (6) mehrdeutig.

value_type ist für die Verwendung mit Readable -Typen wie Iteratoren vorgesehen. Es ist nicht für die Verwendung mit Bereichen gedacht.

Beispiel

Siehe auch

spezifiziert, dass ein Typ durch Anwendung von Operator * lesbar ist
(Konzept)
Kompatibilitäts-Merkmalsklasse, die assoziierte Typen eines Iterators sammelt
(Alias-Template)