If I have a class with a template:
template class foo{ T m_a; foo(T a){ m_a = a; }; ~foo(){ }; };
Different instantiations of a class-template are different (from the compilers perspective completely unrelated) types, so this question applies.