#include <iostream>
class SomeA
{
public:
SomeA(int param1)
{
std::cout << "SomeA: " << param1 << std::endl;
}
};
class SomeB
{
public:
SomeB(int p1, int p2)
{
std::cout << "SomeB: " << p1 << " "<< p2 << std::endl;
}
};
class SomeC
{
public:
SomeC(int p1, int p2, bool p3)
{
std::cout << "SomeC: " << p1 << " " << p2 << " " << p3 << std::endl;
}
};
template<class T>
class X : public T
{
public:
template<class...U>
X(U... args)
: T(args...)
{
}
};
int main()
{
X<SomeC> c(1, 2, false);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgU29tZUEKewpwdWJsaWM6CglTb21lQShpbnQgcGFyYW0xKQoJewoJCXN0ZDo6Y291dCA8PCAiU29tZUE6ICIgPDwgcGFyYW0xIDw8IHN0ZDo6ZW5kbDsKCX0KfTsKCmNsYXNzIFNvbWVCCnsKcHVibGljOgoJU29tZUIoaW50IHAxLCBpbnQgcDIpCgl7CgkJc3RkOjpjb3V0IDw8ICJTb21lQjogIiA8PCAgcDEgPDwgIiAiPDwgcDIgPDwgc3RkOjplbmRsOwoJfQp9OwoKY2xhc3MgU29tZUMKewpwdWJsaWM6CglTb21lQyhpbnQgcDEsIGludCBwMiwgYm9vbCBwMykKCXsKCQlzdGQ6OmNvdXQgPDwgIlNvbWVDOiAiIDw8IHAxIDw8ICIgIiA8PCBwMiA8PCAiICIgPDwgcDMgPDwgc3RkOjplbmRsOwoJfQp9OwoKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIFggOiBwdWJsaWMgVAp7CnB1YmxpYzoKCXRlbXBsYXRlPGNsYXNzLi4uVT4KCVgoVS4uLiBhcmdzKSAKCTogVChhcmdzLi4uKQoJeyAKCX0KfTsKCmludCBtYWluKCkKewoJWDxTb21lQz4gYygxLCAyLCBmYWxzZSk7CglyZXR1cm4gMDsKfQ==