Одна вещь, которую я часто замечал, это то, что хороший кусок кода шаблона на самом деле не такой шаблон, и его можно перемещать в не шаблонные функции.
Это также происходитэта специализация шаблона функции рассматривается как обычные функции: вы можете либо определить их как встроенные (и пометить их так), либо объявить их в заголовке и реализовать их в исходном файле.
Конечно, специализация означает, что вы знаетес каким типом он будет выполняться ...
Обратите внимание, что то, что вы запрашиваете, несколько противоречиво.
Сама цель шаблона - создать "шаблон", чтобы компилятор моггенерировать классы и функции для множества несвязанных типов.Если вы скрываете этот шаблон, как вы ожидаете, что компилятор сможет генерировать эти классы и функции?