C++: объявление друга ‘объявляет нешаблонную функцию

У меня проблема с перегрузкой оператора потока <<, и я не нахожу решения:

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

Выдает следующую ошибку сообщение:

предупреждение: объявление друга 'std::ostream& operator<<(std::ostream&, const NVector&)' объявляет функцию, не являющуюся шаблоном [-Wnon-template-friend]

ошибка: 'std:: ostream& NVector::operator<<(std::ostream&, const NVector&)' должен принимать только один аргумент

Как решить эту проблему?

Большое спасибо.

5
задан sharptooth 10 February 2016 в 07:35
поделиться