tuple_size — std::tuple_size

tuple_size — std::tuple_size

std::tuple_sizetuple-like 타입의 원소 개수를 알아내는 타입 특질이에요. C++11에서 도입됐어요. <tuple>헤더 등에 있어요.

값 멤버 value로 원소 개수를 제공해요.

출처: cppreference

본문

// <array>, <tuple>, <utility> 등
template< class T >
struct tuple_size;   // 기본 — 사용자 특수화 확장용

template< class T >
inline constexpr std::size_t tuple_size_v = tuple_size<T>::value;  // _v 변형

사용 예

#include <tuple>
#include <array>
#include <utility>

std::tuple<int, std::string, double> t;
constexpr std::size_t n = std::tuple_size_v<decltype(t)>;   // 3

std::pair<int, int> p;
constexpr auto m = std::tuple_size_v<decltype(p)>;          // 2

std::array<float, 5> a;
constexpr auto k = std::tuple_size_v<decltype(a)>;          // 5

활용 — 제네릭 코드

// 컴파일 타임에 원소 개수 확인
static_assert(std::tuple_size_v<std::tuple<int, int>> == 2);

template<typename T>
void print_size() {
    std::cout << std::tuple_size_v<T> << '\n';
}

특징

  • value 또는 _v로 원소 개수를 얻어요.
  • std::tuple, std::pair, std::array, std::span, std::ranges::subrange 등 tuple-like 타입에 특수화돼 있어요.
  • 구조적 바인딩에서도 내부적으로 사용돼요.

std::tuple_size는 tuple-like 타입의 길이(원소 개수)를 컴파일 타임에 조회하는 표준 특질이에요. 구조적 바인딩의 기반이 되기도 해요.

더 알아보기 (Learn more)

cppreference