There are tricks to accomplish it with instantiating the templates you need, but I never really understood how it worked completely, and it's errorprone anyway.
What I do instead, when I want to have a seperate file, is I just make a "blah.hpp" file for the implementation (vs a "blah.h" for the header), and #include the .hpp at the end of the .h. This allows me to keep them seperated, but still avoid the linker errors.
If you're interested about the instantiating method, I can refer you to this page: