Код: Выделить всё
namespace detail {
struct foo{};
template
void internalLogic(Model*, foo);
} // namespace detail
Код: Выделить всё
template void detail::internalLogic();
< /code>
, пока это работает, при добавлении новых моделей и реализации «модели» и внедрение шаблона растет довольно быстро: для 2 функций и 3 моделей 6 линий требуются. И при добавлении новой функции /специальности, действительно легко забыть добавить правильную строку.
, хотя такие ошибки легко обнаружить и исследовать, они делают стоимость < /strong> много времени, если CI потребуется около часа, чтобы создать проект. с: < /p>
// .h
namespace detail {
struct foo{};
struct bar{};
template
void internalLogic(Model*, foo);
template
void anotherInternalLogic(Model*, bar);
template
void instantiateTemplates() {
// just add new function here
(void)std::tuple{
&internalLogic...,
&anotherInternalLogic...,
};
}
} // namespace detail
< /code>
//.cpp
// just add new Models here
template void detail::instantiateTemplates();
< /code>
While this works with MSVC, ld
Какой будет рабочий подход для удаления шаблона при создании специализаций в файле .cpp?
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-cpp-file