digitalmars.D.bugs - [Issue 18906] New: Template specialisations should not be stripped
- d-bugmail puremagic.com (33/33) May 25 2018 https://issues.dlang.org/show_bug.cgi?id=18906
https://issues.dlang.org/show_bug.cgi?id=18906 Issue ID: 18906 Summary: Template specialisations should not be stripped if they're not called Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: turkeyman gmail.com extern(C++) class C { T t(T)(T x); int t(T : int)(int x) { return x * 2; } } Given the code above, the symbol `t!int` will NOT be emit to the object unless something somewhere calls that instantiation. I think this is wrong, an explicit specialisation like this needs to go in the object file regardless, it was hand-written, and it might be used externally (in my case, it is used externally). Likewise, we should have a method to force an instantiation of a template into the object like C++ has. For instance, C++ for the above: `template float C::t<float>(float);` Causes explicit instantiation of the template for float. Perhaps D already has this syntax, but I don't know what it is? --
May 25 2018