Emplace vs closures

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 20 12:37:22 PDT 2016


On 19.09.2016 15:52, ag0aep6g wrote:
> On 09/19/2016 02:55 PM, Timon Gehr wrote:
>> 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.
>
> Enums are a special kind of static value, though. Can't do that with
> `static` instead of `enum`. Enums (often?) don't manifest until they're
> used. Could .init work that way?

Maybe -- and local template instantiation should work for all arguments 
that require it. Then we would not have this issue. But fixing .init for 
local structs breaks code.


More information about the Digitalmars-d mailing list