pair_tuple_size

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