Reply to bearophile, > But this compiles with no errors: > > void foo() { > return 1; > } > void main() { > foo(); > } IIRC D allows "return exp;" in a void function because it avoids special cases in template code. ReturnTypeOf!(AFn, T) fn(T)(T t) { return AFn(t,t); // AFn might return void }