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