If you know that your template will be used only for certain types,
lets call them T1,T2, you can move implementation to source file,
like normal classes.
//foo.hpp
template
struct Foo {
void f();
};
//foo.cpp
template
void Foo::f() {}
template class Foo;
template class Foo;