A nice way to step into 2012
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Dec 27 07:12:40 PST 2011
On 12/27/11 3:35 AM, bearophile wrote:
> This program contains wrong syntax because x lacks a type:
>
> void main() {
> double delegate(double) f;
> f = (x) => x + 1;
> }
>
>
> DMD gives the error messages:
>
> test.d(3): Error: undefined identifier x, did you mean variable f?
> test.d(3): Error: cannot implicitly convert expression (__dgliteral1) of type _error_ delegate(_error_) to double delegate(double)
>
> Is it wise to try to improve the second error message?
Actually that's an old bug in the compiler. Lambdas without parameter
types are really templates, and a template should be assignable to a
function or delegate if the parameter type binding works.
Andrei
More information about the Digitalmars-d
mailing list