Неопределенный символ в функции перегрузки оператора шаблона
У меня есть это объявление функции:
template<class T>
a::A& a::A::operator<<(T out) {
std::cout << out;
return (*this);
}
и это определение функции:
namespace a {
...
class A {
...
template<class T> A& operator<<(T);
И я называю это так:
a::A b;
b << 1;
и это Makefile:
app: main.o A.o
g++ main.o A.o -o app
main.o: main.cpp
g++ -c main.cpp
A.o: A.cpp
g++ -c A.cpp
и это дает мне:
Неопределенные символы: a :: A & a :: A :: operator << <int> (int)
почему это?