The nature of templates require function declaration and definition reside together in a header file, you can not split it into a header and separate translation (.cpp) file.
If you have a limited set of types for which your template may be instantiated, you may separate declaration/definition with explicit instantiation http://www.cplusplus.com/forum/articles/14272/