On this page
article
C++ Make Print Tuple
print_tuple 제작 시도
목표는 tuple의 모든 요소를 출력
시도 1: 반복문
→ get<?>
에 컴파일 타임 상수만 가능 → 실패
시도 2: fold expression
→ 식 상수가 안 돼서 실패
결론
→ compile time constant pack 필요 → integer_sequence
사용
integer_sequence
- 컴파일 타임 상수들의 모임
- fold expression에서 사용 가능
std::index_sequence<0, 1, 2>
형태std::make_index_sequence<N>
로 생성
print_tuple 구현
template<typename Tuple, std::size_t ... idx>
void print_tuple_impl(Tuple& tp, std::index_sequence<idx...>) {
(std::print("{} ", get<idx>(tp)), ...);
}
template<typename Tuple>
void print_tuple(Tuple& tp) {
print_tuple_impl(tp, std::make_index_sequence<tuple_size_v<Tuple>>{});
}
index_sequence
를 넘겨서 각 index마다 get<idx>
호출
참고
tuple_size_v<Tuple>
: tuple 타입의 요소 개수get<idx>
: N번째 요소 가져오는 함수 (앞서 구현)