Re: recursive template expansion: Why does this not compile?
On Wednesday, 21 March 2018 at 23:05:22 UTC, Jonathan M Davis wrote: On Wednesday, March 21, 2018 22:50:32 Ontonator via Digitalmars-d-learn wrote: On Wednesday, 21 March 2018 at 06:39:22 UTC, ag0aep6g wrote: > On 03/21/2018 01:47 AM, Ontonator wrote: >> The following code does not compile: >>> [...] >> >> It gives the error: >>> [...] >> >> The aliases do not have to be aliases, as long as there is >> some reference to the class (e.g. method and variable >> declarations also work). What exactly is the reason for >> this error? > > Compiler bug. It works when you move the declaration of `B` > before the one of `A`. Order shouldn't matter there. Is this a known bug, or should I report it? If you can't find it searching on bugzilla, report it. - Jonathan M Davis https://issues.dlang.org/show_bug.cgi?id=18646
Re: recursive template expansion: Why does this not compile?
On Wednesday, 21 March 2018 at 06:39:22 UTC, ag0aep6g wrote: On 03/21/2018 01:47 AM, Ontonator wrote: The following code does not compile: [...] It gives the error: [...] The aliases do not have to be aliases, as long as there is some reference to the class (e.g. method and variable declarations also work). What exactly is the reason for this error? Compiler bug. It works when you move the declaration of `B` before the one of `A`. Order shouldn't matter there. Is this a known bug, or should I report it?
recursive template expansion: Why does this not compile?
The following code does not compile: void main() {} class SuperClass {} class TemplatedClass(T : SuperClass) {} class A : SuperClass { alias T = TemplatedClass!B; } class B : SuperClass { alias T = TemplatedClass!C; } class C : SuperClass {} It gives the error: test.d(12): Error: class `test.TemplatedClass(T : SuperClass)` recursive template expansion test.d(12):while looking for match for TemplatedClass!(C) The aliases do not have to be aliases, as long as there is some reference to the class (e.g. method and variable declarations also work). What exactly is the reason for this error?