In Class.h:
class Class {
public:
    template <typename T> void function(T value);
};
In Class.cpp:
template<typename T> void Class::function(T value) {
    // do sth
}
In main.cpp:
#include "Class.h"
int main(int argc, char ** argv) {
    Class a;
    a.function(1);
    return 0;
}
I get a linked error because Class.cpp never instantiate void Class::function<int>(T). 
You can explicitly instantiate a template class with :
template class std::vector<int>;
How do you explicitly instantiate a template member of a non-template class ?
Thanks,