On Saturday, 28 May 2022 at 14:44:56 UTC, Adam D Ruppe wrote:
On Saturday, 28 May 2022 at 14:16:51 UTC, kdevel wrote:
$ gdc -o ppinsta ppinsta.d parser.d
Compiling together is faster anyway this is prolly what you
want most the time.
But I know what's going on now, it is the template emission
thing, the compiler thinks, since it is from std, it was
already compiled somewhere else and skips it but it isn't
actually there so the linker errors.
Using
gdc -fall-instantiations -c parser.d
Might generate it in that parser.o getting it to link. Might
need to be used in all builds but I *think* just here, hard to
say without a test.
I just encountered this problem in recently released debian
bookworm (gdc 12.2.0), I was able to fix these undefined lambdas
inside std library with -fall-instantiations, and a bunch of
other undefined lambdas in my own code by changing template
arguments of the form
alias e = (a => a)
to a separate definition
auto (T)default_e(T a)
{
return a;
}
and
alias e = default_e