Доброго времени суток! Имеется такая вот загвоздка. Есть такой код на C++:
A.h
#ifndef FOO_H
#define FOO_H
template<typename T>
void foo(T);
#endif // FOO_H
A.cpp
#include "foo.h"
template<typename T>
void foo(T val)
{
int a=5;
}
main.cpp
#include "foo.h"
int main()
{
foo(5);
return 0;
}
При компиляции сего кода я получаю в Qt Creator такую ошибку: undefined reference to `void foo<int>(int)'
При этом если при этом я удалю все шаблоны и заменю их допустим на int, то всё ок компилится и работает. И если я весь код определения перенесу из A.cpp в A.h, то всё тоже компилится и работает.
ЧЯДНТ? Подскажите, а то я не сталкивался с таким никогда. Даже не догадываюсь, куда копать. Кто в гуру в крестах? И почему такой код недопустим?