Неопределенный символ в функции перегрузки оператора шаблона

У меня есть это объявление функции:

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)

почему это?

Ответы на вопрос(2)

Ваш ответ на вопрос