Template forward reference error with alias / structs
Nicolay Korslund
korslund at gmail.com
Sun Dec 30 08:09:18 PST 2007
The following template bug is hindering several projects of mine. It is likely a variant of issue 945, but it is subtly different and might be a separate issue. We have two files:
---------- tst.d -----------
module tst;
import tst2;
struct Nest(A)
{
S member;
}
struct T(A)
{
alias Nest!(A) Nested;
}
alias T!(int) instance;
---------- tst2.d -------------
module tst2;
import tst;
struct S {}
-------------------------
$ dmd -c tst2.d
tst.d(6): struct tst.Nest!(int).Nest has forward references
tst.d(17): template instance tst.T!(int) error instantiating
$ dmd -c tst.d
[works, no error]
Workaround 1: specify all files on one line
dmd tst.d tst2.d
This however is not always practical, it does not work with DSSS/Rebuild and it does not work with gdc.
Workaround 2: instantiate Nest manually
Adding a line to tst.d so the two last lines read:
alias Nest!(int) _unused1;
alias T!(int) instance;
seems to solve the problem, but this seems like a very redundant thing to do.
-N
More information about the Digitalmars-d-bugs
mailing list