On Thursday, 1 August 2013 at 17:53:38 UTC, Ali Çehreli wrote:
I think the question is whether the instantiations of such templates are removed. If the instance is used only to initialize an enum, the function shouldn't stay in the binary.

Even if the function remains, I think the linker takes care of removing unused functions.

Ali

Unfortunately, you are wrong. No symbol optimization is done by DMD is linker can't figure this out on its own, it requires specific object file layout to do reference counting for symbols.

It is really easy to check - make template function with some anchor value inside (OXDEADBEEF) and compile it with this template used exclusively in constraints or CTFE. Then strip and objdump - you'll find anchors in resulting binary for every instantiation.

Reply via email to