Separe los archivos .h y .cpp en la implementación de la clase de plantilla

Estoy tratando de escribir una clase de plantilla que pueda formar clases dependiendo de la<class> Paso. El problema es que no puedo declarar y definir en el mismo..h expediente. En mi proyecto, la herramienta UTF solo puede funcionar con el.cpp Archivos (para cobertura de código, etc.). He visto en un blog que dicen “Añadir.cpp en lugar de.h". ¿Es esto aconsejable?

Template.h

#ifndef TEMPLATE_H_
#define TEMPLATE_H_

template<class T>
class Template
{
public:
    T Add(T a,T b);
};

#endif /* TEMPLATE_H_ */

Template.cpp

#include "Template.h"

template<class T>
T Template<T>::Add(T a, T b)
{
    return a+b;
}

Main.cpp

#include "Template.cpp" //Is this a good practise? 
#include <iostream>

int main(int argc, char **argv) {
    Template<int> obj;
    std::cout<<obj.Add(3,4)<<std::endl;
}

Si esto no es recomendable, ¿cómo resuelvo este problema?export?

Respuestas a la pregunta(2)

Su respuesta a la pregunta