
Stewart, Robert <Robert.Stewart <at> sig.com> writes:
Artyom wrote:
Heavy template code produces significantly lager code. So hiding implementation actually reduces code size and reduces bloat.
Ridiculous. Misuse of templates can do so, but I doubt you'll find (m)any examples in Boost. Templates expose more code to the compiler permitting otherwise impossible optimizations. Expression templates, for example, eliminate tremendous runtime code and overhead utterly impossible to do otherwise.
I do not think this is ridiculous. This is well known fact. Templates do lead to the larger code size and larger compilation time. You can hardly argue with that. The same time I agree that they lead to better performance in many cases. Not always. I had number of real life scenarios where excessive inlining lead to losing locality and eventually worse performance. You always need to balance these two forces. If you get 0.5% performance advantage, but required to add half an half an hour to the compilation, your choice is pretty much clear, right? An ability to define this boundary between what to put in headers and what to offline correctly is important designer quality. Gennadiy