I've declared a simple function with variadic template.
template<typename ...Args>
void Log(const LogLevel level, const char * format, Args ...args);
Upon calling it in the following manner -
Log(LogLevel::debug,
        R"(starting x, %d pending call for "%s" with param "%s")",
        id, first.c_str(),
       second.c_str())
where the variable types are : id (unsigned int), first (std::string) , second (std::string)
I'm getting the following error:
Error   LNK2001 unresolved external symbol "public: void __cdecl Log<unsigned int,char const *,char const *>(enum LogLevel,char const *,unsigned int,char const *,char const *)" 
When I remove the unsigned int argument from the function call - the error disappears. 
AFAIK the variadic template does support different types... so what am I missing?
 
     
    