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