#include <iostream>
#include <string>
using std::string;
using std::cout;
template <typename... Types>
class Test
{
public:
template <typename T>
void Func(T t1, T t2, T t3){
cout << t1 << ',' << t2 << ',' << t3 << '\n';
} // I don't know how to declare such a function
};
int main()
{
Test<string, bool, long> myTest; // Three types
myTest.Func(905, 36, 123315); // Three arguments, but always of type int.
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgc3RkOjpzdHJpbmc7CnVzaW5nIHN0ZDo6Y291dDsKCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4KY2xhc3MgVGVzdAp7CnB1YmxpYzoKCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgdm9pZCBGdW5jKFQgdDEsIFQgdDIsIFQgdDMpewogICAgCWNvdXQgPDwgdDEgPDwgJywnIDw8IHQyIDw8ICcsJyA8PCB0MyA8PCAnXG4nOwogICAgfSAvLyBJIGRvbid0IGtub3cgaG93IHRvIGRlY2xhcmUgc3VjaCBhIGZ1bmN0aW9uCn07CgppbnQgbWFpbigpCnsKCVRlc3Q8c3RyaW5nLCBib29sLCBsb25nPiBteVRlc3Q7IC8vIFRocmVlIHR5cGVzCglteVRlc3QuRnVuYyg5MDUsIDM2LCAxMjMzMTUpOyAvLyBUaHJlZSBhcmd1bWVudHMsIGJ1dCBhbHdheXMgb2YgdHlwZSBpbnQuCglyZXR1cm4gMDsKfQ==