It is not easy to see that the dmd error message in the subject line probably means something like "member function templates cannot be virtual." (Or after the language of the spec page, "Templates cannot be used to add virtual functions to classes.") class Derived { override void foo(T)() {} } void main() { auto d = new Derived(); d.foo!int(); } Abreviated lines from dmd 2.051 output: ... Error: variable deneme.Derived.foo!(int).foo.this override cannot be applied to variable ... Error: template instance deneme.Derived.foo!(int) error instantiating
The error message is now: foo.d(3): Error: function foo.Derived.foo!(int).foo cannot override a non-virtual function which I think is adequate.