Namespaces
Variants

std:: iter_value_t, std:: iter_reference_t, std:: iter_const_reference_t, std:: iter_difference_t, std:: iter_rvalue_reference_t, std:: iter_common_reference_t

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
iter_value_t iter_difference_t iter_reference_t iter_const_reference_t iter_rvalue_reference_t iter_common_reference_t
(C++20) (C++20) (C++20) (C++23) (C++20) (C++20)
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
헤더 파일에 정의됨 <iterator>
template < class T >
using iter_value_t = /* 아래 참조 */ ;
(1) (C++20 이후)
template < /*dereferenceable*/ T >
using iter_reference_t = decltype ( * std:: declval < T & > ( ) ) ;
(2) (C++20부터)
template < std:: indirectly_readable T >

using iter_const_reference_t =
std:: common_reference_t < const std :: iter_value_t < T > && ,

std :: iter_reference_t < T >> ;
(3) (C++23 이후)
template < class T >
using iter_difference_t = /* 아래 참조 */ ;
(4) (C++20 이후)
template < /*dereferenceable*/ T >

requires /* see below */
using iter_rvalue_reference_t =

decltype ( ranges:: iter_move ( std:: declval < T & > ( ) ) ) ;
(5) (C++20 이후)
template < std:: indirectly_readable T >

using iter_common_reference_t =
std:: common_reference_t < std :: iter_reference_t < T > ,

/*간접-값-타입*/ < T >> ;
(6) (C++20 이후)
헬퍼 템플릿
template < class T >
concept /*dereferenceable*/ = /* see below */ ;
(7) ( 설명 전용* )
template < std:: indirectly_readable T >
using /*indirect-value-t*/ = /* 아래 참조 */ ;
(8) ( (설명용 전용*) )

반복자의 연관된 타입들을 계산합니다.

1) T 값 타입 을 계산합니다.
2) T reference type 을 계산합니다.
3) T const reference type 을 계산합니다.
4) T 차이 타입(difference type) 을 계산합니다.
5) T rvalue reference type 을 계산합니다. 이 alias template의 제약 조건은 ranges:: iter_move ( std:: declval < T & > ( ) ) 표현식이 유효하고 참조 가능한 타입을 가질 경우에만 만족됩니다.
6) T 공통 참조 타입 을 계산합니다. 이것은 해당 참조 타입과 해당 값 타입에 대한 lvalue 참조 사이의 공통 참조 타입입니다.
7) 설명 전용 개념 dereferenceable 는 표현식 * std:: declval < T & > ( ) 가 유효하고 참조 가능한 타입 을 가질 경우에만 만족됩니다.
8) 설명 전용 앨리어스 템플릿 indirect-value-t 는 다음을 나타냅니다:
  • std:: invoke_result_t < Proj & , /*indirect-value-t*/ < I >> 만약 T 가 특정 타입 I Proj 에 대해 std :: projected < I, Proj > 와 동일한 경우.
  • 그렇지 않으면, std :: iter_value_t < T > & .

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
P2609R3 C++20 std::iter_common_reference_t
std :: iter_value_t < T > & 기준으로 정의되어
rvalue 참조 타입으로 투영하는
std::projected 타입들을 부정확하게 처리함
/*indirect-value-t*/ < T >
기준으로 정의하여
해당 경우들을 처리함

참고 항목

operator* 를 적용하여 간접적으로 읽을 수 있는 타입을 지정함
(concept)
semiregular 타입이 전위 및 후위 증가 연산자로 증가될 수 있음을 지정함
(concept)
indirectly_readable 타입의 값 타입을 계산함
(class template)
weakly_incrementable 타입의 차이 타입을 계산함
(class template)
반복자의 속성에 대한 통일된 인터페이스를 제공함
(class template)
범위의 반복자 및 센티넬 타입을 얻음
(alias template)
범위의 참조 타입을 얻음
(alias template)
범위의 크기, 차이 및 값 타입을 얻음
(alias template)