subrange_tuple_element
subrange_tuple_element (subrange 튜플 요소 타입)
std::tuple_element의 std::ranges::subrange에 대한 부분 특수화는 튜플 같은 문법으로 subrange의 반복자 또는 센티널 타입에 컴파일 타임 접근을 제공해요. C++20부터 사용할 수 있어요.
출처: cppreference
본문
<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.
template< class I, class S, ranges::subrange_kind K >
struct tuple_element<0, ranges::subrange<I, S, K>>;
(1) (since C++20)
template< class I, class S, ranges::subrange_kind K >
struct tuple_element<0, const ranges::subrange<I, S, K>>;
(2) (since C++20)
template< class I, class S, ranges::subrange_kind K >
struct tuple_element<1, ranges::subrange<I, S, K>>;
(3) (since C++20)
template< class I, class S, ranges::subrange_kind K >
struct tuple_element<1, const ranges::subrange<I, S, K>>;
(4) (since C++20)
std::tuple_element의 std::ranges::subrange에 대한 부분 특수화는 튜플 같은 문법으로 subrange의 반복자 또는 센티널 타입에 컴파일 타임 접근을 제공해요. 구조적 바인딩 지원을 위해 제공돼요.
- 1,2) 반복자 타입, 즉 I를 얻어요.
- 3,4) 센티널 타입, 즉 S를 얻어요.
멤버 타입 (Member types)
| 멤버 타입 | 정의 |
|---|---|
| type | (1,2) I, (3,4) S |
참고 (Notes)
subrange의 get 함수는 반복자와 센티널을 값으로 반환하므로, subrange가 const 한정일 때 결과 타입에 const 한정자가 추가되지 않아요 (단 volatile 한정은 아닌 경우).
subrange가 volatile 한정이면, volatile 또는 const volatile 타입에 대한 부분 특수화가 사용되므로 결과 타입도 volatile 한정이 돼요. 그런 사용은 사용 중단(deprecated)이에요.