Namespaces
Variants

std::experimental::ranges:: value_type

From cppreference.net
Определено в заголовочном файле <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)

Вычисляет связанный тип значения для типа I , если таковой имеется. Пользователи могут специализировать value_type для программно-определенного типа.

1) Первичный шаблон представляет собой пустую структуру.
2) Специализация для указателей. Если T является объектным типом, предоставляет член типа type равный std:: remove_cv_t < T > . В противном случае, член type отсутствует.
3) Специализация для массивных типов.
4) Специализация для типов с квалификатором const.
5) Специализация для типов, определяющих открытый и доступный тип-член value_type . Если T::value_type является объектным типом, предоставляет тип-член type , равный T::value_type . В противном случае, член type отсутствует.
6) Специализация для типов, определяющих открытый и доступный тип-член element_type (например, std::shared_ptr ). Если T::element_type является объектным типом, предоставляет тип-член type равный std:: remove_cv_t < typename T :: element_type > . В противном случае, член type отсутствует.

Содержание

Вспомогательный псевдоним шаблона

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

Примечания

Если тип содержит одновременно член value_type и член element_type , то специализации (5) и (6) являются неоднозначными.

value_type предназначен для использования с Readable типами, такими как итераторы. Он не предназначен для использования с диапазонами.

Пример

Смотрите также

определяет, что тип является читаемым посредством применения оператора *
(концепт)
класс характеристик совместимости, который собирает ассоциированные типы итератора
(псевдоним шаблона)