Ссылка на неразрешенный внешний символ. Статическая функция с шаблоном
Не получается скомпилировать код из-за функции которая использует шаблон для принятия функции в качестве аргумента. Выдает вот такую ошибку:
LNK2019 Ссылка на неразрешенный внешний символ "public: static void __cdecl Query::New<void (__cdecl*)(void)>(void (__cdecl*&&)(void))" (??$New@P6AXXZ@Query@@SAX$$QAP6AXXZ@Z) в функции __catch$?New@Client@@SAHPAUlua_State@@@Z$0.
Собственно вот код:
// Query.h
class Query {
public:
template<typename Func>
static void New(Func func);
};
// Query.cpp
#include "Query.h"
template <typename Func>
void Query::New(Func func) {
// ...
func();
// ...
}
// Client.h
class Client {
public:
static void SomeFunc();
static int Connect(lua_State* L);
};
// Client.cpp
#include "Client.h"
#include "Query.h"
void Client::SomeFunc() {
// ...
}
int Client::Connect(lua_State* L)
{
// ...
Query::New(&SomeFunc)
return 1;
}
Сама цель функции Query::New заключается в том чтобы запустить функцию в отдельном потоке.
Возможно ли как-то устранить эту проблему?