Разделите определение функций шаблона на. cpp, если оно содержит аргументы c - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующая подпись шаблона:

// LoggingImpl.hpp
template <typename... Ts>
static void LogFatal(int32_t lineNumber, const char* function, const char* format, const Ts&... args) noexcept;

Определение функции находится в соответствующем. cpp файле:

// LoggingImpl.cpp
template <typename... Ts>
static void LoggingImpl::LogFatal(int32_t lineNumber, const char* function, const char* format, const Ts&... args) noexcept
{
    // some function definition here.
}

The. cpp файл также содержит явное определение, поэтому я не получаю ошибку компоновщика.

// LoggingImpl.cpp
template void LoggingImpl::LogFatal<char*>(int32_t, const char*, const char*, const char*) noexcept;

Я нахожусь на машине Win 10, использую компиляцию Visual Studio 2019 с использованием MSV C.

Вопрос: Как я могу разделить определение функции шаблона в исходный файл (. cpp), если мой шаблон содержит вариативные c функции. Я не знаю, как добавить явную подпись, если шаблон предназначен для переменных c аргументов.

...