Emplace vs closures

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Mon Sep 19 05:55:27 PDT 2016


On 19.09.2016 14:35, ag0aep6g wrote:
> On 09/19/2016 02:24 PM, Lodovico Giaretta wrote:
>> Oh. I didn't thought about that. This means that in the following
>> example, the initialization of `s` is more than a simple call to
>> `S.init`. I was under the impression that in D `S.init` should represent
>> a valid state for whatever type `S`.
>
> Yeah, .init and nested structs don't really fit together. On the one
> hand .init is supposed to be a valid value. On the other hand it must be
> a static value. Can't have both with nested structs. Maybe they
> shouldn't have .init at all.

This works:
import std.stdio;
void main(){
     int x=3;
     enum l=()=>x;
     writeln(x);
}

I.e. l has the correct runtime context even though it is a static value.


More information about the Digitalmars-d mailing list