1 alias J = const C;
  2
  3 void main(string[] args)
  4 {
  5     J a = new C();
  6     I!(J) i = a;
  7 }
  8
  9 interface I(V) { }
 10
 11 class F(V) if (is(V : I!(V))) { }
 12
 13 class C : I!(J)
 14 {
 15     F!(J) m;
 16 }

The above code gives the following compile error:
Error:
template instance F!(const(C)) does not match template declaration F(V) if (is(V : I!V))
on line 15.

If I change line 1 to "alias J = C;" the code will compile. The problem seems to be the template constraint on line 11. I think the constraint says, "If V can be automatically converted to I!(V) then this template can be used". However, line 6 does not give
an error, and it seems to be automaticaly converting J to I!(J).

-Eric

Reply via email to