Во время компиляции я получаю ошибку "множественного определения", которая относится к специализации шаблона в файле заголовка. Нужно ли помещать специализации в исходный файл?
Связаны ли шаблонные специализации с заголовком или исходным файлом?
Ответ 1
Если это специализированные функции, вы можете поместить их в файл .cpp или сделать их встроенными в заголовок.
Как указывает Джеймс, если вы не выполняете встроенные функции, вам все равно придется объявлять специализации в заголовке. В противном случае компилятор не знает, что он должен искать их в другом месте.
Затем вы можете поместить реализации (определения) в файл .cpp. Как и другие функции.
Ответ 2
Нет, вам не нужно вводить специализации в отдельно скомпилированный файл, но вам нужно быть осторожным, что специализированный шаблон функции является обычной функцией, потому что он полностью специализирован.
Таким образом, он не может быть определен в нескольких единицах перевода, если только он не объявлен inline
.