#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>();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dHlwZWluZm8+Cgp0ZW1wbGF0ZTxjbGFzcyBGaXJzdD4Kdm9pZCBmdW5jKCkKewogICAgc3RkOjpjb3V0IDw8IHR5cGVpZChGaXJzdCkubmFtZSgpIDw8IHN0ZDo6ZW5kbDsKfQogCnRlbXBsYXRlPGNsYXNzIEZpcnN0LCBjbGFzcyBTZWNvbmQsIGNsYXNzLi4uIFJlc3Q+CnZvaWQgZnVuYygpCnsKICAgIGZ1bmM8Rmlyc3Q+KCk7CiAgICBmdW5jPFNlY29uZCwgUmVzdC4uLj4oKTsKfQoKCmNsYXNzIEhvZ2UKewp9OwoKaW50IG1haW4oKQp7CglmdW5jPGludCwgZG91YmxlLCBzdGQ6OnZlY3RvcjxpbnQ+LCBzdGQ6OnN0cmluZywgSG9nZT4oKTsKfQo=