#include <iostream>
#include <string>
#include <vector>
#include <typeinfo>

template<class First>
void func()
{
    std::cout << typeid(First).name() << std::endl;
}
 
template<class First, class Second, class... Rest>
void func()
{
    func<First>();
    func<Second, Rest...>();
}


class Hoge
{
};

int main()
{
	func<int, double, std::vector<int>, std::string, Hoge>();
}
