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 >

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 이 객체 타입인 경우, T::value_type 과 동일한 type 멤버 타입을 제공합니다. 그렇지 않은 경우, type 멤버는 존재하지 않습니다.
6) 공개적이고 접근 가능한 멤버 타입 element_type 을 정의하는 타입들에 대한 특수화 (예: std::shared_ptr ). 만약 T::element_type 이 객체 타입인 경우, std:: remove_cv_t < typename T :: element_type > 와 동일한 type 멤버 타입을 제공합니다. 그렇지 않은 경우, type 멤버는 존재하지 않습니다.

목차

헬퍼 앨리어스 템플릿

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

참고 사항

만약 타입이 value_type 멤버와 element_type 멤버를 모두 포함하는 경우, 특수화 (5) (6) 는 모호합니다.

value_type 는 반복자와 같은 Readable 타입과 함께 사용하기 위한 것입니다. 범위(ranges)와 함께 사용하기 위한 것은 아닙니다.

예제

참고 항목

operator* 를 적용하여 타입이 읽을 수 있음을 명시
(concept)
반복자의 연관 타입들을 수집하는 호환성 특질 클래스
(alias template)