可変長テンプレートはタプルで受け取って,1つずつ処理できる?
#include <tuple>
#include <iostream>
template <typename ... T>
class Hoge{
std::tuple<T...> args;
public:
Hoge(T... args):args(args...){}
template <int i>
typename std::tuple_element<i,decltype(args)>::type get(){
return std::get<i>(args);
}
};
int main(){
Hoge<std::string,std::string,int> a("10","1.5",2);
std::cout << a.get<0>() << std::endl;
std::cout << a.get<1>() << std::endl;
std::cout << a.get<2>() << std::endl;
return 0;
}
と言う感じで, Hoge に可変長テンプレートで何個かの型と,その可変長引数を渡したあと,
クラス内で std::tuple に変換し,タプルとして扱う.
ところで,「…」という演算子は型名の前にある場合はパック演算子といい,
後ろにある場合はアンパック演算子というらしい.