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