Одним из недостатков, с которыми сталкиваются при реализации шаблонов в файлах .h, является то, что каждый раз, когда вы вносите небольшое изменение в реализацию, весь код, который использует шаблон, должен быть перекомпилирован. На самом деле нет никакого способа обойти это, кроме того, что вы не используете шаблоны или объявляете и определяете их в файле CPP, где вы их используете.
Вы можете реализовать шаблоны в отдельном файле, а затем включить этот файл из файла .h. Такие как:
templ.h
template<class V> V foo(const V& rhs);
#include "templ.inc"
templ.inc
template<class V> V foo*const V& rhs)
{
// do something...
return val;
}
Мое личное предпочтение - реализовывать шаблоны прямо в файле h, если они не становятся большими, а затем я разбью их на файлы h и inc.