Есть очень веская причина, по которой реализация шаблона должна идти в заголовок. Шаблон не является кодом - это всего лишь шаблон для автоматического генерации кода. Код не создается, пока вы не попытаетесь использовать его с заполненными параметрами шаблона. Компилятору необходимо иметь полное тело шаблона для заполнения пробелов и получения рабочего кода.