"To me the best way to understand the distinction between C# generics and C++ templates is this: C# generics are really just like classes, except they have a type parameter. C++ templates are really just like macros, except they look like classes."
From "Generics in C#, Java, and C++ - A Conversation with Anders Hejlsberg, Part VII "