Заголовочный файл и объявление (task1.h):
#ifndef _TASK1_H_
#define _TASK1_H_
template<typename T>
void msort(T *array, int32_t length);
#endif _TASK1_H_
Определение (task1.cpp):
#include "task1.h"
template<typename T>
void msort(T *array, int32_t length)
{
T *buffer = new T[length];
msort(array, 0, length, buffer);
delete buffer;
};
Вызов (main.cpp):
int32_t main()
{
int *array = new int[10] { 10, 2, 8, 9, 3, 6, 7, 5, 4, 1 };
msort<int32_t>(array, 10);
for (int32_t i = 0; i < 10; i++)
std::cout << array[i];
return 0;
};
При сборке получается ошибка компоновки:
LNK2019 unresolved external symbol "void __cdecl msort(int *,int)" (??$msort@H@@YAXPAHH@Z) referenced in function _main
Если определять функцию сразу в заголовочном файле, линковка проходит без проблем. Может кто-нибудь подсказать, почему наблюдается подобное поведение?