{{{
class A(T,d){
T p;
}
class B(int rk){
int[rk] p;
}
class C(T,int rk){
T[rk] p;
}
template f(T:A!(U,d),U,d){
void f(){ }
}
template f(T:B!(rank),int rank){
void f(){ }
}
template f(T:C!(U,rank),U,int rank){
void f(){ }
}
void main(){
A!(int,long) a;
B!(2) b;
C!(int,2) c;
f!(A!(int,long))();
f!(B!(2))();
f!(C!(int,2))();
}
}}}
fails on
f!(B!(2))();
and
f!(C!(int,2))();
{{{
Line 30: template instance f!(B) does not match any template declaration
Line 30: Error: template instance 'f!(B)' is not a variable
Line 30: Error: function expected before (), not f!(B) of type int
}}}
also GDC, and (i suspect) newer DMD releases have this problem
Fawzi