なんでこれはコンパイルできないですか?
template<template<typename>class T,typename U>
struct X{};

template<typename T>
struct Y: X<Y,T>{};

int main()
{
     Y<int> y;
     return 0;
}
error C3200: 'Y<T>' : テンプレート パラメータ 'T' に対する無効なテンプレート引数です、クラス テンプレートが必要です。
error C3200: 'Y<T>' : テンプレート パラメータ 'T' に対する無効なテンプレート引数です、クラス テンプレートが必要です。 with [ T=int ]