C++에선 Parameter Pack라고 한다.
수가 정해지지 않은 N개의 인자를 사용할 수 있는 기능이다.
template<typename... Values> class tuple;
위의 템플릿 클래스 tuple은 어떠한 타입이든 몇개든 상관없이 인자 생성이 가능하다.
아래와 같은 인스턴스도 가능함
tuple<int, std::vector<int>, std::map<std::string, std::vector<int>>> some_instance_name;
만약 최소한 하나의 인자는 받아야 한다고 강제하고 싶다면
template<typename First, typename... Rest> class tuple;
이 코드로 강제할 수 있따.
#include <iostream>
#include <tuple>
using namespace std;
void Check() {} // 재귀 호출 종료용
template<typename T ,typename ... Types>
void Check(T value, Types ... args)
{
cout << value << endl;
Check(args...);
}
int main()
{
Check(1, 2.2, "삼");
}