How do compilers avoid linear growth in the size of the compiled binary with each new type instantiation of a template?
I don't see how we can avoid making a copy of all the templated code when a new instantiation is used.
I feel that compile times and binary sizes would be made extremely unwieldy for all but the simplest templates in a reasonably large code base. But their prevalence suggests that compilers are able to do some magic to make them practical.