Following code should compile.
void foo(){}
struct X(alias a) {}
//template Y(T : A!f, alias A, alias f) {} //OK
template Y(T : A!foo, alias A) {} //NG
void main()
{
alias Y!(X!foo) y;
// Error: template instance Y!(X!(foo)) Y!(X!(foo))
// does not match template declaration Y(T : A!(foo),alias A)
}