Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 28, 2013 Delegate type inferred as pure | ||||
---|---|---|---|---|
| ||||
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? |
January 28, 2013 Re: Delegate type inferred as pure | ||||
---|---|---|---|---|
| ||||
Posted in reply to cal | 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;};
|
January 28, 2013 Re: Delegate type inferred as pure | ||||
---|---|---|---|---|
| ||||
Posted in reply to cal | 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? Filed: http://d.puremagic.com/issues/show_bug.cgi?id=9415 |
January 28, 2013 Re: Delegate type inferred as pure | ||||
---|---|---|---|---|
| ||||
Posted in reply to qznc | On Monday, 28 January 2013 at 10:44:22 UTC, qznc wrote:
> On Monday, 28 January 2013 at 03:16:24 UTC, cal wrote:
>> 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;};
Yeah this is reduced from something I'd like to use typeof for, usually auto would be fine like you say.
|
Copyright © 1999-2021 by the D Language Foundation