Я вижу многих людей, смущенных этой вещью ... шаблоны не являются типами.Они становятся типами, когда создаются.По этой причине члены шаблонов должны оставаться в том же блоке данных, который вы собираетесь использовать.
Если ваш шаблон является универсальным и вы хотите использовать его во всем своем коде, просто поместите все в заголовочные файлы.
Теперь, если вам не нравится (и я бы это понял) показ объявлений, определений и реализации в одном файле, вы можете разделить шаблоны в двух разных файлах.
ДляНапример, «list.h» с вашей декларацией и «list.inc» с вашей реализацией.
Чтобы это работало, вы должны включить обе.