Séparé .h et .fichiers cpp en classe de modèle de mise en œuvre

Je suis en train d'écrire une classe de modèle qui peuvent former des classes en fonction du <class> je passe. Le problème est que je ne peut pas déclarer et définir dans le même .h fichier. Dans mon projet, l'UTF outil ne peut fonctionner qu'avec la .cpp fichiers (pour la couverture de code, etc.). J'ai vu sur un blog qu'ils disent “Ajouter .cpp au lieu de .h”. Est-ce recommandé?

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 ce n'est pas conseillé alors comment puis-je résoudre ce problème? export?