https://issues.dlang.org/show_bug.cgi?id=15831
Rainer Schuetze <r.sagita...@gmx.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |r.sagita...@gmx.de --- Comment #4 from Rainer Schuetze <r.sagita...@gmx.de> --- I tried to untangle the name of the 1.s.s.s.s.s case. Replacing testexpansion with E, I get E.s!(E.s!(E.s!(E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .s (E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .Result) .s (E.s!(E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .s (E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .Result) .Result) .s (E.s!(E.s!(E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .s (E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .Result) .s (E.s!(E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .s (E.s!(E.s!(int).s(int).Result) .s (E.s!(int).s(int).Result) .Result) .Result) .Result) .Result.foo() Each step has a mangling of "E.s!(T).s(T).Result" with T being the template argument. The length explosion comes from the type being listed twice. This is not caused by the Voldemort return type, but the eponymous template that is created by the function template. --