Actually there is a lot of reason to use templates over generics. Have you ever heard of BOOST? Take a look at:
http://www.boost.org/. On top of that there are cool things like Blitz for using expression templates to do cool math (and does amazing things like not generating temporary arrays and such).
Templates in general give you the great advantage of runtime efficiency, while being Turing Complete (yes, you can express any computable function with templates).
And there still is no equivalent to the algorithms and containers in the STL -- that I've seen at least. Remember you can have user-defined specialization, and partially specialized templates.
Let me refer you to a couple of articles:
http://www.developer.com/net/cplus/article.php/10919_3367531_1http://weblogs.asp.net/branbray/archive/2003/11/19/51023.aspxI think you'll never look at generics and templates the same way again.

Kang Su Gatlin
visual C++ Program Manager