Voldemort declarations inside structs with ctor initialization

Idan Arye via Digitalmars-d digitalmars-d at puremagic.com
Tue May 27 09:26:46 PDT 2014


On Tuesday, 27 May 2014 at 15:40:04 UTC, Luís Marques wrote:
> On Tuesday, 27 May 2014 at 15:06:53 UTC, bearophile wrote:
>>> BTW, why doesn't this example work with lambdas (a => a != 2) 
>>> instead of a string mixin ("a != 2")?
>>
>> I think lambda instantiations defines a different type. So 
>> it's incompatible.
>
> Incompatible with what? I meant changing it in both the 
> declaration and the initialization.

Lambdas are not "cached", so each lambda is unique even if it's 
code is the same:

     void main(){
         pragma(msg,(int a)=>a); //prints __lambda1
         pragma(msg,(int a)=>a); //prints __lambda2
     }


At any rate, you can't use lambdas(neither `delegate` nor 
`function`) when declaring a member of class or struct, since D 
will treat it as a method(rather than a static function) and 
complain about the `this` reference.


More information about the Digitalmars-d mailing list