I'm a fan of template when they're used appropriately, but I don't think this article has enough emphasis on one of the major problems of C++ templates: "bloat" from template code generation. This can be a huge problem in large, complex programs with lots of instantiations.
This is a hot-button for me because I worked at [link|http://www.wildcrest.com/Potel/Portfolio/InsideTaligentTechnology/WW87.htm|Taligent], the company that was trying to build a new, object-oriented operating system in C++. It could be argued that templates were the main reason that Taligent didn't succeed. (It could also be argued that nobody really wanted an overdesigned, object-oriented operating system. :-) After the Taligent system had templates inflicted on it, well over 1/2 of the object code in the system was the result of template instantiations, and it caused a huge performance degradation and ridiculous resource requirements. We ended up inventing all sorts of ugly [link|http://pcroot.cern.ch/TaligentDocs/TaligentOnline/DocumentRoot/1.0/Docs/books/WM/WM_193.html|hacks] to get rid of template code. Yuck.
I had wondered what did it in (other than the LRPD's observation about IBM shooting itself in the foot and reloading).
It's in a thread on C++ templates.
Cheers,
Scott.