On Friday, 4 December 2015 at 09:51:30 UTC, Artur Skawina wrote:
No, it's how D is designed -- inside functions the order of
declarations matters (and forward declarations don't work).
Your version wrongly declares another `baz` at module scope,
and, as there's no definition, you end up with the linker error.
Two workarounds:
1) Templatize the functions:
void foo()
{
void bar()()
{
baz();
}
void baz()()
{
bar();
}
baz();
}
2) Use a struct:
void foo()
{
struct Hack {
void bar()
{
baz();
}
void baz()
{
bar();
}
}
Hack hack;
hack.baz();
}
artur
Thanks for the clarifications and the example.
Kind regards
André