template <template <typename...>
class Tmpl, typename ...Args> struct Wrap : Tmpl<Args...>
{
using base = Tmpl<Args...>;
using base::base;
};
#include <iostream>
template <typename T, typename S, typename U> struct SillyTemplate
{
SillyTemplate() { std::cout << "Made\n"; }
};
struct Foo{};
int main()
{
using MyType = Wrap<SillyTemplate, int, float, Foo>;
MyType x;
}
dGVtcGxhdGUgPHRlbXBsYXRlIDx0eXBlbmFtZS4uLj4KY2xhc3MgVG1wbCwgdHlwZW5hbWUgLi4uQXJncz4gc3RydWN0IFdyYXAgOiBUbXBsPEFyZ3MuLi4+CnsKCXVzaW5nIGJhc2UgPSBUbXBsPEFyZ3MuLi4+OwoJdXNpbmcgYmFzZTo6YmFzZTsKfTsKCgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUywgdHlwZW5hbWUgVT4gc3RydWN0IFNpbGx5VGVtcGxhdGUKewoJU2lsbHlUZW1wbGF0ZSgpIHsgc3RkOjpjb3V0IDw8ICJNYWRlXG4iOyB9Cn07CgpzdHJ1Y3QgRm9ve307CgppbnQgbWFpbigpCnsKCXVzaW5nIE15VHlwZSA9IFdyYXA8U2lsbHlUZW1wbGF0ZSwgaW50LCBmbG9hdCwgRm9vPjsKCQoJTXlUeXBlIHg7Cn0=