On 11/18/2017 06:22 AM, kerdemdemir wrote:
//DMD64 D Compiler 2.072.2
import std.stdio;

bool foo(  bool function( double ) controlFoo )
{
     return controlFoo(5.0);
}

void foo2( double val )
{
     writeln  ( foo( a => a > val ) );
}

void main()
{
     foo2(20);
     writeln("Hello, World!");
}

Does not compile and gives this errors:
source_file.d(12): Error: function source.foo2.__lambda2 cannot access frame of function source.foo2

foo should take 'delegate'.

If you want it to work with any callable entity, take the function as an alias template parameter:

bool foo(alias controlFoo)()
{
    return controlFoo(5.0);
}

void foo2( double val )
{
    writeln  ( foo!( a => a > val )() );
}

Ali

Reply via email to