pair_tuple_size (pair를 위한 tuple_size 특수화)
이 페이지는 std::pair에 대한 std::tuple_size의 부분 특수화를 설명해요. 이 특수화를 사용하면 컴파일 타임에 pair의 요소 개수(항상 2)를 튜플과 같은 문법으로 얻을 수 있어요. 즉, pair를 튜플처럼 다룰 수 있게 해주는 핵심 도구예요.
출처: cppreference
본문
<utility> 헤더에 정의됨 |
|
|
template < class T1 , class T2 > struct tuple_size < std :: pair < T1 , T2 >> : std :: integral_constant < std :: size_t , 2 > { }; |
|
(C++11부터) |
std::pair에 대한 std::tuple_size의 부분 특수화는 튜플과 같은 문법을 사용하여 pair의 요소 개수(항상 2)를 컴파일 타임에 얻을 수 있는 방법을 제공해요.
std::integral_constant에서 상속됨
멤버 상수
| 멤버 상수 |
설명 |
value [static] |
상수 값 2 (공용 정적 멤버 상수) |
멤버 함수
| 멤버 함수 |
설명 |
operator std::size_t |
객체를 std :: size_t로 변환하고 value를 반환해요 (공용 멤버 함수) |
operator() (C++14) |
value를 반환해요 (공용 멤버 함수) |
멤버 타입
| 타입 |
정의 |
value_type |
std :: size_t |
type |
std :: integral_constant < std :: size_t , value > |
예제
#include <iostream>
#include <tuple>
#include <utility>
template<class T>
void test([[maybe_unused]]T t)
{
[[maybe_unused]]
int a[std::tuple_size<T>::value]; // can be used at compile time
std::cout << std::tuple_size<T>::value << '\n'; // or at run time
}
int main()
{
test(std::make_tuple(1, 2, 3.14));
test(std::make_pair(1, 3.14));
}
출력:
3
2
결함 보고서
다음의 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.
| DR |
적용 대상 |
게시된 동작 |
올바른 동작 |
| LWG 2313 |
C++11 |
pair에 대한 특수화는 integral_constant에서 파생될 필요가 없었음 |
필수로 변경됨 |
같이 보기
| Structured binding (C++17) |
지정된 이름을 초기화자의 하위 객체나 튜플 요소에 바인딩해요 [편집] |
| tuple_size (C++11) |
튜플과 같은 타입의 요소 개수를 얻어요 (클래스 템플릿) [편집] |
| tuple_size (C++26) |
반영된 튜플과 같은 타입의 크기를 반환해요 (함수) [편집] |
| std::tuple_size std::array (C++11) |
배열의 크기를 얻어요 (클래스 템플릿 특수화) [편집] |
| std::tuple_size std::tuple (C++11) |
튜플의 크기를 얻어요 (클래스 템플릿 특수화) [편집] |
| std::tuple_size std::ranges::subrange (C++20) |
std::ranges::subrange의 크기를 얻어요 (클래스 템플릿 특수화) [편집] |
| std::tuple_size std::complex (C++26) |
std::complex의 크기를 얻어요 (클래스 템플릿 특수화) [편집] |
| std::tuple_element std::pair (C++11) |
pair의 요소 타입을 얻어요 (클래스 템플릿 특수화) [편집] |
| get (std::pair) (C++11) |
pair의 요소에 접근해요 (함수 템플릿) [편집] |
더 알아보기 (Learn more)
cppreference