Initializing global delegate variable - bug or on purpose?

data pulverizer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Mar 25 17:31:42 PDT 2016


On Friday, 25 March 2016 at 23:40:37 UTC, data pulverizer wrote:
> On Friday, 25 March 2016 at 20:54:28 UTC, Atila Neves wrote:
>> int delegate(int) dg = (i) => i * 2;
>>
>> Error: non-constant nested delegate literal expression 
>> __lambda3
>>
>>
>> int delegate(int) dg;
>>
>> static this() {
>>    dg = i => i * 2; // ok
>> }
>>
>>
>> Am I doing anything wrong?
>>
>> Atila
>
> Hmm, looks like your first delegate is a function type and the 
> second is a function instance. So the first version written 
> like this ...
>
> import std.stdio;
>
> alias dg = int delegate(int);
>
> dg make_dg(){
> 	return i => i*2;
> }
>
> void main(){
> 	auto my_dg = make_dg();
> 	writeln(my_dg(3));
> }
>
> will work.

In fact for the second case I'd probably need to see a working 
struct/class prototype to make a firm comment on it.


More information about the Digitalmars-d-learn mailing list