Using Template in delegates

I have to create a template class for parsing http requests. I also have to create delegates that will be fired when a response is received.
in .h file:

    template <typename SaveInfo>
    class UHttpManager_Base : public UObject
    {
    
    	DECLARE_EVENT_TwoParams(UHttpManager_Base,FOnPostReceived,const SaveInfo&, const int32 /*ResponseCode*/);
    	DECLARE_EVENT_TwoParams(UHttpManager_Base,FOnPutReceived,bool,const int32 /*ResponseCode*/);
    	DECLARE_EVENT_TwoParams(UHttpManager_Base,FOnDeleteReceived,bool,const int32 /*ResponseCode*/);
    	DECLARE_EVENT_TwoParams(UHttpManager_Base,FOnGetListOfsReceived,const TArray<SaveInfo>&,const int32 /*ResponseCode*/);
    	DECLARE_EVENT_TwoParams(UHttpManager_Base,FOnGetReceived,const SaveInfo&,const int32 /*ResponseCode*/);
    public:
    	UHttpManager_Base() : HttpModule(&FHttpModule::Get()){}
    	/*HTTP verbs:*/
    	/*When process a request it's supposed to be used every delegate when respond is received.*/
    	FOnPostReceived& Post(const SaveInfo& InfoToPost);
    	FOnPutReceived& Put(const SaveInfo& InfoToPut);
    	FOnDeleteReceived& Delete(uint32 IDtoDelete);
    	FOnGetListOfsReceived& GetListOfSaves();
    	FOnGetReceived& Get(uint32 IDtoGet);

private:
	
	/** When response is received */
	virtual void OnGetTemplateReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);

	/*Post*/
	void OnPostReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
	FOnPostReceived OnPostReceivedDelegate;
	/*Put*/
	void OnPutReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
	FOnPutReceived OnPutReceivedDelegate;
	/*Delete*/
	void OnDeleteReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
	FOnDeleteReceived OnDeleteReceivedDelegate;
	/*GetList*/
	void OnGetListOfsReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
	FOnGetListOfsReceived OnGetListOfsReceivedDelegate;
	/*Get */
	void OnGetReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
	FOnGetReceived OnGetReceivedDelegate;

in .cpp file
#pragma region Requests

template <typename SaveInfo>
typename UHttpManager_Base<SaveInfo>::FOnPostReceived& UHttpManager_Base<SaveInfo>::Post(const SaveInfo& InfoToPost)
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this,&UHttpManager_Base<SaveInfo>::OnPostReceivedResponse);
	Request->SetURL(GetFullPathURL());
	Request->SetVerb("POST");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	Request->SetContentAsString(JsonManager->ChangeSaveJsonAndGetString(InfoToPost));
	Request->ProcessRequest();
	return OnPostReceivedDelegate;
}

template <typename SaveInfo>
typename UHttpManager_Base<SaveInfo>::FOnPutReceived& UHttpManager_Base<SaveInfo>::Put(const SaveInfo& InfoToPut)
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this,&UHttpManager_Base<SaveInfo>::OnPutReceivedResponse);
	Request->SetURL(ConcatURLWith(FString::FromInt(InfoToPut.ID))); /*Get the Base URL and append a  ID to get the right URL to PUT.*/
	Request->SetVerb("PUT");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	Request->SetContentAsString(JsonManager->ChangeSaveJsonAndGetString(InfoToPut));
	Request->ProcessRequest();
	return OnPutReceivedDelegate;
}
template <typename SaveInfo>
typename UHttpManager_Base<SaveInfo>::FOnDeleteReceived& UHttpManager_Base<SaveInfo>::Delete(uint32 IDtoDelete)
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this, &UHttpManager_Base<SaveInfo>::OnDeleteReceivedResponse);
	Request->SetURL(ConcatURLWith(FString::FromInt(IDtoDelete)));
	Request->SetVerb("DEL");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	/*No content*/
	Request->ProcessRequest();
	return OnDeleteReceivedDelegate;
}
template <typename SaveInfo>
typename UHttpManager_Base<SaveInfo>::FOnGetListOfsReceived& UHttpManager_Base<SaveInfo>::GetListOfSaves()
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this, &UHttpManager_Base<SaveInfo>::OnGetListOfsReceivedResponse);
	Request->SetURL(DefaultURL + FullListURI);
	Request->SetVerb("GET");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	Request->ProcessRequest();
	return OnGetListOfsReceivedDelegate;
}
template <typename SaveInfo>
typename UHttpManager_Base<SaveInfo>::FOnGetReceived& UHttpManager_Base<SaveInfo>::Get(uint32 IDtoGet)
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this, &UHttpManager_Base<SaveInfo>::OnGetReceivedResponse);
	Request->SetURL(ConcatURLWith(FString::FromInt(IDtoGet)));
	Request->SetVerb("GET");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	Request->ProcessRequest();
	return OnGetReceivedDelegate;
}
template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::InitJson()
{
	TSharedRef<IHttpRequest,ESPMode::ThreadSafe> Request =	GetHttpModule()->CreateRequest();
	Request->OnProcessRequestComplete().BindUObject(this,&UHttpManager_Base<SaveInfo>::OnGetTemplateReceived);
	Request->SetURL(GetFullPathEmptyURL());
	Request->SetVerb("GET");
	Request->SetHeader(GetDefaultHeader().Key,GetDefaultHeader().Value);
	Request->ProcessRequest();
}


#pragma endregion Requests


#pragma region Response

template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnPostReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response,
	bool bWasSuccessful)
{
	if(bWasSuccessful)
	{
		OnPostReceivedDelegate.Broadcast(JsonManager->GetSaveFromString(Response->GetContentAsString()),Response->GetResponseCode());
		OnPostReceivedDelegate.Clear();
	}
	
}
template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnPutReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response,
	bool bWasSuccessful)
{
	if(bWasSuccessful)
	{
		OnPutReceivedDelegate.Broadcast(JsonManager->GetBoolValueFromString(Response->GetContentAsString()),Response->GetResponseCode());
		OnPutReceivedDelegate.Clear();
	}
	
}
template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnDeleteReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response,
	bool bWasSuccessful)
{
	if(bWasSuccessful)
	{
		OnDeleteReceivedDelegate.Broadcast(JsonManager->GetBoolValueFromString(Response->GetContentAsString()),Response->GetResponseCode());
		OnDeleteReceivedDelegate.Clear();
	}

}
template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnGetListOfsReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
	if(bWasSuccessful)
	{
		OnGetListOfsReceivedDelegate.Broadcast(JsonManager->GetSaveListFromString(Response->GetContentAsString()),Response->GetResponseCode());
		OnGetListOfsReceivedDelegate.Clear();
	}
}


template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnGetReceivedResponse(FHttpRequestPtr Request, FHttpResponsePtr Response,
	bool bWasSuccessful)
{
	if(bWasSuccessful)
	{
		OnGetReceivedDelegate.Broadcast(JsonManager->GetSaveFromString(Response->GetContentAsString()),Response->GetResponseCode());
		OnGetReceivedDelegate.Clear();
	}
}
template <typename SaveInfo>
void UHttpManager_Base<SaveInfo>::OnGetTemplateReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
	JsonManager->InitJsonObject(Response->GetContentAsString());
}
#pragma endregion Response

The problem is when I tried to call Post function:

				ManagerSubsystem->GetColorManager()->Post(BackgroundColorToSave).AddUObject(this,&UCPP_CreateGuild::OnColorRespondReceived);

I’ve got an error:

  ProjectFiles: [LNK2019] unresolved external symbol "public: class UHttpManager_Base<struct FServerColorSaveInfo>::FOnPostReceived & __cdecl UHttpManager_Base<struct FServerColorSaveInfo>::Post(struct FServerColorSaveInfo const &)" (?Post@?$UHttpManager_Base@UFServerColorSaveInfo@@@@QEAAAEAVFOnPostReceived@1@AEBUFServerColorSaveInfo@@@Z) referenced in function "public: void __cdecl UCPP_CreateGuild::OnCreateGuildButtonClicked(void)" (?OnCreateGuildButtonClicked@UCPP_CreateGuild@@QEAAXXZ)

The color manager is just an inheritor of the base class HttpManager_Base, which is being stored in a simple subsystem to be called easy.

/**
 * 
 */
class UHttpColorManager final : public UHttpManager_Base<FServerColorSaveInfo>
{
public:
    UHttpColorManager();

private:
	void InitJsonManager() override;

};


inline UHttpColorManager::UHttpColorManager() : UHttpManager_Base()
{
	SetDefaultURIAndFullPath("color/");
	InitJson();
	InitJsonManager();
}

inline void UHttpColorManager::InitJsonManager()
{
	SetJsonManager(MakeShareable(new FColorJsonManager()));
}