C ++: declaração de amigo "declara uma função não modelo

Eu tenho um problema para sobrecarregar o<< operador de fluxo e não encontro a solução:

template<class T, unsigned int TN>
class NVector
{
    inline friend std::ostream& operator<< (
        std::ostream &lhs, const NVector<T, TN> &rhs);
};

template<class T, unsigned int TN>
inline std::ostream& NVector<T, TN>::operator<<(
    std::ostream &lhs, const NVector<T, TN> &rhs)
{
    /* SOMETHING */
    return lhs;
};

Ele produz a seguinte mensagem de erro:

aviso: declaração de amigo 'std :: ostream & operator << (std :: ostream &, const NVector &)' declara uma função não modelo [-Wnon-template-friend]

erro: 'std :: ostream & NVector :: operador << (std :: ostream &, const NVector &)' deve ter exatamente um argumento

Como resolver esse problema?

Muito obrigado.

questionAnswers(1)

yourAnswerToTheQuestion