[Issue 17267] Forward reference error in recursive template
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Dec 27 10:00:52 UTC 2017
https://issues.dlang.org/show_bug.cgi?id=17267
Simen Kjaeraas <simen.kjaras at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |simen.kjaras at gmail.com
--- Comment #2 from Simen Kjaeraas <simen.kjaras at gmail.com> ---
Another, possibly simplified example:
// Mixed templates
struct S1 {
S2!()* arr;
}
struct S2()
{
// struct S1 no size because of forward reference
private byte[S1.sizeof] payload;
}
It seems to be caused by some ordering issues in DMD, where it tries to
calculate the size of S1, notices that it depends on a templated type, and just
up and dies.
Note also that these variants compile:
// No templates
struct S3 {
S4* arr;
}
struct S4 {
private byte[S3.sizeof] payload;
}
// All templates
struct S5() {
S6!()* arr;
}
struct S6() {
private byte[S5!().sizeof] payload;
}
S6!() dummy; // Force instantiation
// Mixed templates, revisited
struct S7() {
S8* arr;
}
struct S8
{
private byte[S7!().sizeof] payload;
}
--
More information about the Digitalmars-d-bugs
mailing list