I think "template specializations" might have been the wrong term, and what was meant was "template implementations".
Meanwhile you might not want to put that definition in the header file so the header just contains the interface. Ergo you #include the implementation at the bottom of the header file.
If the file is intended to be used with #include, it's a header file, and should be given the .h or .hpp extension. If the file corresponds to an object file in the build, it should be given the .cpp extension (or .cxx).
If you want to break apart your template metaprogramming into several .hpp files, you can do so.