DMD metaprogramming enhancement

Simen Kjærås simen.kjaras at gmail.com
Fri Apr 26 06:34:26 UTC 2019


On Friday, 26 April 2019 at 06:29:04 UTC, Simen Kjærås wrote:
> On Thursday, 25 April 2019 at 23:41:32 UTC, Suleyman wrote:
>> Hello everyone,
>>
>> I am happy to announce that in the next DMD release you will 
>> be able to more freely enjoy your metaprograming experience 
>> now that a long-standing limitation has been lifted.
>>
>> You can now instantiate local and member templates with local 
>> symbols.
>>
>> Example:
>> ---
>> struct S
>> {
>>     private int _m;
>>     void exec(alias fun)()
>>     {
>>         fun(_m);
>>     }
>> }
>>
>> unittest
>> {
>>     int localVar;
>>
>>     void set(int i)
>>     {
>>         localVar = i;
>>     }
>>
>>     auto obj = S(10);
>>     obj.exec!set();   // no error or warning
>>
>>     assert(localVar == 10);
>> }
>> ---
>>
>> I hope you enjoy!
>
> You have no idea how happy I am to hear this has been fixed! So 
> many of my designs have been hamstrung by 5710, and it's been 
> around since the dawn of time.

BTW, at least two people have promised money outside BountySource 
to have 5710 fixed:
https://forum.dlang.org/post/gjzrklkxfmgjjdforbrs@forum.dlang.org

--
   Simen


More information about the Digitalmars-d-announce mailing list