QUOTE (sigmaN @ Jan 12 2017, 11:07)

Имеется ввиду "использование" шаблона? т.е. в .cpp например объявляем переменную templClass<char> charTemplateVar;
нет, имеется ввиду если есть заголовочный файл с шаблоном
CODE
template<typename T> void func(T & data) { data = 0; }
и мы хотим отдельный вариант для T = uint8_t
CODE
template<> void func(uint8_t & data) { data = 1; }
то если мы эту полную специализацию поместим в заголовочный файл и заголовочный файл включим в несколько исходников, то получим ошибку линковки "multiple definition of `void func<unsigned char>(unsigned char&)'"
А если поместим ее в .cpp файл, то в других файлах эта специализация использована не будет, а в этом файле если она используется до определения, получим ошибку компиляции "error: specialization of 'void func(T&) [with T = unsigned char]' after instantiation".
Поэтому в заголовочный файл надо поместить
CODE
template<> void func(uint8_t & data);
а саму реализацию уже в .cpp:
CODE
template<> void func(uint8_t & data) { data = 1; }