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
|
헤더 파일에 정의됨
<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
=
|
(3) | (C++23 이후) |
|
template
<
class
T
>
using iter_difference_t = /* 아래 참조 */ ; |
(4) | (C++20 이후) |
|
template
<
/*dereferenceable*/
T
>
requires
/* see below */
|
(5) | (C++20 이후) |
|
template
<
std::
indirectly_readable
T
>
using
iter_common_reference_t
=
|
(6) | (C++20 이후) |
|
헬퍼 템플릿
|
||
|
template
<
class
T
>
concept /*dereferenceable*/ = /* see below */ ; |
(7) | ( 설명 전용* ) |
|
template
<
std::
indirectly_readable
T
>
using /*indirect-value-t*/ = /* 아래 참조 */ ; |
(8) | ( (설명용 전용*) ) |
반복자의 연관된 타입들을 계산합니다.
T
의
값 타입
을 계산합니다.
- 만약 std:: iterator_traits < std:: remove_cvref_t < T >> 이 특수화되지 않은 경우, std :: iter_value_t < T > 는 std:: indirectly_readable_traits < std:: remove_cvref_t < T >> :: value_type 입니다.
- 그렇지 않으면, std:: iterator_traits < std:: remove_cvref_t < T >> :: value_type 입니다.
T
의
reference type
을 계산합니다.
T
의
const reference type
을 계산합니다.
T
의
차이 타입(difference type)
을 계산합니다.
- 만약 std:: iterator_traits < std:: remove_cvref_t < T >> 이 특수화되지 않은 경우, std :: iter_difference_t < T > 는 std:: incrementable_traits < std:: remove_cvref_t < T >> :: difference_type 입니다.
- 그렇지 않으면, std:: iterator_traits < std:: remove_cvref_t < T >> :: difference_type 입니다.
T
의
rvalue reference type
을 계산합니다. 이 alias template의 제약 조건은
ranges::
iter_move
(
std::
declval
<
T
&
>
(
)
)
표현식이 유효하고 참조 가능한 타입을 가질 경우에만 만족됩니다.
T
의
공통 참조 타입
을 계산합니다. 이것은 해당 참조 타입과 해당 값 타입에 대한 lvalue 참조 사이의 공통 참조 타입입니다.
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
>
기준으로 정의하여 해당 경우들을 처리함 |
참고 항목
|
(C++20)
|
operator*
를 적용하여 간접적으로 읽을 수 있는 타입을 지정함
(concept) |
|
(C++20)
|
semiregular
타입이 전위 및 후위 증가 연산자로 증가될 수 있음을 지정함
(concept) |
|
(C++20)
|
indirectly_readable
타입의 값 타입을 계산함
(class template) |
|
(C++20)
|
weakly_incrementable
타입의 차이 타입을 계산함
(class template) |
|
반복자의 속성에 대한 통일된 인터페이스를 제공함
(class template) |
|
|
(C++20)
(C++23)
(C++20)
(C++23)
|
범위의 반복자 및 센티넬 타입을 얻음
(alias template) |
|
(C++20)
(C++23)
(C++20)
(C++20)
|
범위의 참조 타입을 얻음
(alias template) |
|
(C++20)
(C++20)
(C++20)
|
범위의 크기, 차이 및 값 타입을 얻음
(alias template) |