Maxim Fomin: > The second is template lambda and templates have void type. > What you suggest here? In D template functions become functions if they are passed where the D compiler can infer their full type. This is correct code: void foo(int function(int) f) {} void main() { foo(a => a * a); } Bye, bearophile