Учу c++, параллельно пробую разные плюшки языка, и столкнулся с необъяснимой для меня проблемой:
Ссылка на неразрешенный внешний символ "int __cdecl functions::Test<int>(int)" (??$Test@H@functions@@YAHH@Z) в функции main.
Source.cpp:
#include <iostream>
#include <string>
#include "Functions.h"
int main()
{
functions::Test(1);
}
Functions.h:
#pragma once
#include <iostream>
#include <string>
namespace functions
{
// Вывод в консоль
void PrintMessage(std::string var);
void PrintMessage(char var);
void PrintMessage(int var);
void PrintMessage(double var);
template <typename T>
T Test(T var);
}
Functions.cpp:
#include "Functions.h"
namespace functions
{
// Вывод в консоль
void PrintMessage(std::string var)
{
std::cout << var;
}
void PrintMessage(char var)
{
std::cout << var;
}
void PrintMessage(int var)
{
std::cout << var;
}
void PrintMessage(double var)
{
std::cout << var;
}
template <typename T>
T Test(T var)
{
std::cout << var;
}
}
Перегрузка функций работает(но не хочу её использовать), но template - нет!
Что происходит?