you can specialize template in your .cpp file. This way, the method bodies can be kept in .cpp files as well.
Something along the line
------------------ Class.h ------------
template <class T>
class Class
{
void f();
};
--------------------Class.cpp -----------
template <class T>
void Class<T>::f()
{
// do something
}
template class Class<int>;
template class Class<bool>;
and so on.
Please see [link|http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Template-Instantiation.html#Template-Instantiation|http://gcc.gnu.org/o...ate-Instantiation] for complete discussion. They have another method in there that may be more suitable for you, but it's a method I've never used...