Hacker News new | ask | show | jobs
by johnny531 5555 days ago
Huh? Templates in C++ are pay-for-what-you-use; only those instantiations required by your code are generated.

Note also the ability to extern templates added in C++0x, which allow you to collapse common instantiations to a single object file.

2 comments

How do those features impact runtime performance?

One example of templates affecting runtime performance is poor use of the instruction cache due to code duplication in every instantiation of a template.

If you are instantiating equivalent functions (sorting foo* vs sorting bar* ) then the linker will merge their binaries -no dupes there. If you are generating different functions (sorting foo vs foo* ) then you are asking for different functions -no dupes there either. If you want to keep everything down to one function, qsort() didn't disappear when they added std::sort() and it is pretty close to what a dynamic language sort would do under the hood.
I believe this is called Identical COMDAT Folding in VC++
Some linkers do what you describe. Not all.
C++0B maybe?