This small D2 program compiles with no errors: T foo(T)(T x) {} void main() {} But there is no way it can compile, regardless of the type T, because foo()() lacks a return statement. So is it possible for the D compiler to perform some sanity tests for the template functions too, to catch a bugs like this one? Bye, bearophile