Lambda cannot access frame of function
Ali Çehreli
acehreli at yahoo.com
Sat Nov 18 14:34:13 UTC 2017
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
More information about the Digitalmars-d-learn
mailing list