https://issues.dlang.org/show_bug.cgi?id=18549
[email protected] changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |[email protected] Resolution|--- |INVALID --- Comment #1 from [email protected] --- (In reply to Johannes Nordhoff from comment #0) > struct SS {} > struct tt {} > > void tmpl( SS)() {} > void tmpl( tt)() {} The template parameters SS and tt have no relation to the structs of the same name. You could write it like this with the exact same meaning: ---- struct SS {} struct tt {} void tmpl(Foo)() {} void tmpl(Bar)() {} ---- You've got two identical templates with the same name "tmpl". Any attempt at instantiating tmpl will match both (or neither). The error messages you get look fine to me. I'm closing as INVALID, because it looks like you misunderstood how the template parameter names relate to the struct names. [...] > the compiler was using the same name for multiple > template-definitions. I don't understand what you mean by this. If you still think the compiler should do something differently here, please feel free to reopen. --
