Nested function requires forward declaration?

Salih Dincer salihdb at hotmail.com
Thu Apr 14 11:13:43 UTC 2022


On Thursday, 14 April 2022 at 08:55:25 UTC, Chris Katko wrote:
> [...]
> It appears the nested function's variable capture depends on 
> forward declaration (the right term?). Whereas, I was under the 
> impression most/all of D worked on a multiple pass compilation 
> so the order of declarations shouldn't matter.
>
> Is this a D spec, or a compiler parsing error/oversight?
> [...]

This is cross-module what you're talking about, eg outside of 
main(). Something with most programming languages, it's not about 
nested function. Do it with lambda if you want, and you'll get 
the same result:

```d
/* auto is_Key = (ALLEGRO_KEY key) =>
                  (event.keyboard.keycode == key); // Not 
compiling! */
ALLEGRO_EVENT event;
```

You have one more option, and that is to use OOP. You can even 
briefly encapsulate it into a struct.

SDB at 79


More information about the Digitalmars-d-learn mailing list