This is a wrong D2 program: struct Foo {} class Bar(T) if (!is(T == struct)) {} void main() { auto b = new Bar!Foo(); } DMD 2.049 shows the following compile errors: test.d(4): Error: template instance Bar!(Foo) does not match template declaration Bar(T) if (!is(T == struct)) test.d(4): Error: Bar!(Foo) is used as a type test.d(4): Error: new can only create structs, dynamic arrays or class objects, not void's But minimizing error messages noise is good to speed up debugging and to make coding simpler. So in this case I'd like to receive only the first error message.
Nothing to with templates. Same thing happens with: struct Foo {} class Bar(int n) void main() { auto b = new Bar!Foo(); }
Appears to be fixed.