Eu sei que é possível fazer uma função de modelo: template<typename T> void DoSomeThing(T x){} e é possível criar uma classe de modelo: template<typename T> class Object { public: int x; }; mas é possível transformar uma classe fora de um modelo e depois transformar uma função...