How to assign a delegate to a var ?

Meta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jun 2 16:27:02 PDT 2014


On Monday, 2 June 2014 at 22:18:39 UTC, bioinfornatics wrote:
> Hi,
>
> I would like store the delegate to another var but when i try i
> get:
>
>
> testTraitsWithDelegate.d(13): Error: expression template
> __lambda2 is void and has no value
>
> I do not want to run it only to save the «function» somewhere.
>
>
> ----------- CODE ------------
> import std.stdio;
> import std.typecons : Tuple;
>
> struct attribute( alias Pred )
> {
>      alias Predicate = Pred;
> }
>
>
>
> struct Data
> {
>      @attribute!( (a) => a == 42 )
>      int x;
> }
>
>
>
> void main()
> {
>
>      bool delegate( int ) tmp;
>
>      pragma( msg, __traits(getAttributes, Data.x)[0].Predicate( 
> 42
> ) );
>
>      tmp = __traits(getAttributes, Data.x)[0].Predicate;
> }
> ----------- END CODE ------------

The problem is that you're missing the type of a in "(a) => a == 
42". Without the type, it's actually a template lambda, not a 
lambda function. Try changing it to "(int a) => a == 42".
auto


More information about the Digitalmars-d-learn mailing list