Delegate type inferred as pure

qznc qznc at go.to
Mon Jan 28 02:44:21 PST 2013


On Monday, 28 January 2013 at 03:16:24 UTC, cal wrote:
> This fails:
>
> void main() {
>     int z;
>     typeof((int a){return z;}) dg;
>     dg = (int a) {return z;};
> }
>
> Error: cannot implicitly convert expression (__lambda2) of type 
> int delegate(int a) nothrow @safe to int delegate(int a) pure 
> nothrow @safe
>
> But I can't make the delegate pure:
> dg = (int a) pure {return z;};
> because it references z.
>
> Is the 'typeof((int a){return z;})' getting it wrong here?

Do you really need the type? You could just use "auto".

auto dg = (int a) {return z;};


More information about the Digitalmars-d-learn mailing list