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 nessa classe em um modelo? Ou seja:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
ou algo na medida em que a classe não faz parte de um modelo, mas a função é?
Veja aqui: Modelos , métodos de modelo , Modelos de Membro, Modelos de Função de Membro
fonte
Sim, as funções de membro do modelo são perfeitamente legais e úteis em várias ocasiões.
A única ressalva é que as funções de membro do modelo não podem ser virtuais.
fonte
A maneira mais fácil é colocar a declaração e a definição no mesmo arquivo, mas isso pode causar um excesso de tamanho no arquivo executável. Por exemplo
Além disso, é possível colocar a definição do modelo em arquivos separados, ou seja, colocá-los nos arquivos .cpp e .h. Tudo o que você precisa fazer é incluir explicitamente a instanciação do modelo nos arquivos .cpp. Por exemplo
fonte