On Thu, Feb 08, 2018 at 08:26:03AM -0500, Steven Schveighoffer via 
Digitalmars-d wrote:
> The extra data in the object file comes from the inclusion of the
> hexStringImpl function, and from the template parameter (the symbol
> _D3std4conv__T9hexStringVAyaa8_6465616462656566ZQBiyAa is in there as
> well, which will always be larger than the actual string passed to
> hexString).

This is one area that really should be improved.  Is there some easy way
in the compiler to mark a template function as "only used in CTFE", and
not emit it into the object file if there are no other runtime
references to it?  I'm thinking of some kind of boolean attribute that
defaults to false, and gets set if the function is referenced by runtime
code.  During codegen, any function that doesn't have this attribute set
will be skipped over.

My speculation is that this would lead to a good amount of reduction in
template bloat, given how pervasively CTFE is used in Phobos (and
idiomatic D in general).


He who does not appreciate the beauty of language is not worthy to bemoan its 

Reply via email to