C ++: declaración de amigo 'declara una función no de plantilla

Tengo un problema para sobrecargar el<< Operador de streaming y no encuentro la solución:

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;
};

Produce el siguiente mensaje de error:

advertencia: declaración de amigo 'std :: ostream & operator << (std :: ostream &, const NVector &)' declara una función que no es de plantilla [-Wnon-template-friend]

error: 'std :: ostream & NVector :: operator << (std :: ostream &, const NVector &)' debe tomar exactamente un argumento

¿Cómo resolver ese problema?

Muchas gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta