On Monday, 8 September 2025 at 14:42:01 UTC, evilrat wrote:

probably because you have declared nested function `add` inside `main`, this creates a delegate closure capturing `main` scope, if you don't want that just mark `add` static.

Yep, as a nested function, this is a delegate, not a function, so incompatible.

The following code works:
```
import std.stdio;

void main()
{
        foo();
}

// Global function.  Doesn't work if nested non-static function
int add(int lhs, int rhs)
{
        return lhs + rhs;
}

void foo()
{
        int doSomething(int function(int, int) doer)
        {
                // call passed function
                return doer(5, 6);
        }

        doSomething(&add);
}
```

Reply via email to