template<template<typename> class> struct Foo {};
template<typename...> struct Bar {};
template<template<typename...>class X>
struct unary_version {
template<typename T>
using apply = X<T>;
};
int main() {
Foo<unary_version<Bar>::template apply>();
}
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzPiBzdHJ1Y3QgRm9vIHt9Owp0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4gc3RydWN0IEJhciB7fTsKdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWUuLi4+Y2xhc3MgWD4Kc3RydWN0IHVuYXJ5X3ZlcnNpb24gewoJdGVtcGxhdGU8dHlwZW5hbWUgVD4KCXVzaW5nIGFwcGx5ID0gWDxUPjsKfTsKCmludCBtYWluKCkgewoJRm9vPHVuYXJ5X3ZlcnNpb248QmFyPjo6dGVtcGxhdGUgYXBwbHk+KCk7Cn0=