On 8/29/2010 00:32, Jonathan M Davis wrote: > Templates are instantiated when you use them. They can't work any other way. > Normal functions are instantiated where they are declared. Unless you want to > try and make it so that _all_ functions are instantiated where they are used > (which IMHO seems like a really _bad_ idea), templates are and must be > treated > differently.
Why would that be a bad idea? You gain: - Consistency. - The ability to treat all libraries as "header-only", with no separate compilation. - Because there is no separate compilation, templated virtual functions. (Funny how that works out.) - Better global optimizations. You lose: - Binary libraries. (Which barely work anyway, because most of my functions are already templated.) - Potentially some (or even a lot of) compilation speed, and potentially not. Separate compilation introduces its own slow-downs. -- Rainer Deyke - rain...@eldwood.com