Currently this code is not supported:

void foo(T)(T x, T function(T) f) {}
void main() {
    foo(1, (int a) => a * a); // OK
    foo(1, a => a * a);       // Error
}


With the latest alpha compiler it gives:

test.d(4): Error: template test.foo does not match any function template declaration. Candidates are:
test.d(1):        test.foo(T)(T x, T function(T) f)
test.d(4): Error: template test.foo(T)(T x, T function(T) f) cannot deduce template function from argument types !()(int,void)


Do you think it's a good idea to allow it?

Bye,
bearophile

Reply via email to