Suppose you made a really complicated template class, and you use it with many kinds of arg types. For example, set<Blah*>, set<Bloo*>, set<Moo*>, set<Mooya*> etc.

But all the arg types are essentially pointer types.

When compiled, will each of these instantiations have its own code template (aka get really bloated), or will each of these templates share a same code when compiled (set<void*>)?