#include <iostream>
#include <string>
#include <sstream>
#include <vector>
template<class T>
void func(const T& t)
{
std::cout << t << std::endl;
}
template<class First, class... Rest>
void func(const First& first, const Rest&... rest)
{
func(first);
func(rest...);
}
template<class T>
std::ostream& operator<<(std::ostream& ofs, const std::vector<T>& vec)
{
std::stringstream str;
for(auto p = vec.begin(); p != vec.end(); p++)
str << ',' << *p;
return ofs << '{' << str.str().substr(1) << '}';
}
int main()
{
std::vector<int> vec = {1, 2, 3};
func(10, 10.5, std::string("hoge"), vec);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgZnVuYyhjb25zdCBUJiB0KQp7CiAgICBzdGQ6OmNvdXQgPDwgdCA8PCBzdGQ6OmVuZGw7Cn0KIAp0ZW1wbGF0ZTxjbGFzcyBGaXJzdCwgY2xhc3MuLi4gUmVzdD4Kdm9pZCBmdW5jKGNvbnN0IEZpcnN0JiBmaXJzdCwgY29uc3QgUmVzdCYuLi4gcmVzdCkKewogICAgZnVuYyhmaXJzdCk7CiAgICBmdW5jKHJlc3QuLi4pOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvZnMsIGNvbnN0IHN0ZDo6dmVjdG9yPFQ+JiB2ZWMpCnsKCXN0ZDo6c3RyaW5nc3RyZWFtIHN0cjsKCWZvcihhdXRvIHAgPSB2ZWMuYmVnaW4oKTsgcCAhPSB2ZWMuZW5kKCk7IHArKykKCQlzdHIgPDwgJywnIDw8ICpwOwoKCXJldHVybiBvZnMgPDwgJ3snIDw8IHN0ci5zdHIoKS5zdWJzdHIoMSkgPDwgJ30nOwp9CgoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3RvcjxpbnQ+IHZlYyA9IHsxLCAyLCAzfTsKCglmdW5jKDEwLCAxMC41LCBzdGQ6OnN0cmluZygiaG9nZSIpLCB2ZWMpOwp9Cg==