#include <iostream>
template<class T> struct Container1;//forward declaration
template<class T> struct Container2;//forward declaration
template<template <typename> class T1,class T2>
using _Make_Container= T1<T2>;
template<class T>
struct Container1
{
using Type=T;
//
};
template<class T>
struct Container2
{
using Type=T;
//...
};
int main()
{
_Make_Container<Container1,int> a;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IENvbnRhaW5lcjE7Ly9mb3J3YXJkIGRlY2xhcmF0aW9uCnRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBDb250YWluZXIyOy8vZm9yd2FyZCBkZWNsYXJhdGlvbgoKdGVtcGxhdGU8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBUMSxjbGFzcyBUMj4KdXNpbmcgX01ha2VfQ29udGFpbmVyPSBUMTxUMj47Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgQ29udGFpbmVyMQp7CiAgICB1c2luZyBUeXBlPVQ7CiAgICAvLwp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4Kc3RydWN0IENvbnRhaW5lcjIKewogICAgdXNpbmcgVHlwZT1UOwogICAgLy8uLi4KfTsKCmludCBtYWluKCkKewogICAgX01ha2VfQ29udGFpbmVyPENvbnRhaW5lcjEsaW50PiBhOwp9