https://issues.dlang.org/show_bug.cgi?id=19105
Simen Kjaeraas <simen.kja...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|pull |rejects-valid Status|RESOLVED |REOPENED CC| |simen.kja...@gmail.com Resolution|FIXED |--- --- Comment #3 from Simen Kjaeraas <simen.kja...@gmail.com> --- The "fix" in PR 7100 does nothing to fix the actual issue here - it only prohibits valid use cases, and should very clearly be reverted. See issue 20054. This issue is a DMD issue, and no amount of Phobos fiddling is gonna fix it. Here's a reduced example: template test(alias T) { alias i = T.C; alias test = int; } struct A(Args...) {} struct S1 { // No error alias dummy = test!S1; alias C = A!(test!S1); } struct S2 { // Recursive template expansion alias C = A!(test!S2); } As we can see, we're not using the result of T.C, and the simple use of a dummy alias prevents the recursive expansion. Clearly, something is wrong in the compiler for this behavior to happen. --