John, Templates are more closely tied to a specific type. So if you want to use a template with two types, you end up with two copies in memory. Generics can be used with any type. If you want to use a generic with two types, you only have one copy in memory.