C++ 以嵌套类作为参数的朋友模板声明

C++ 以嵌套类作为参数的朋友模板声明,c++,templates,friend,C++,Templates,Friend,提供了如何编写好友模板声明的指南。但是,当其中一个参数是模板类的嵌套结构时,我有一个问题,例如: template<typename T> class MyClass; template<typename T> QDataStream &operator<<(QDataStream &stream, const typename MyClass<T>::Node &node); 模板 类MyClass; 模板QDataSt

提供了如何编写好友模板声明的指南。但是,当其中一个参数是模板类的嵌套结构时,我有一个问题,例如:

template<typename T>
class MyClass;
template<typename T> QDataStream &operator<<(QDataStream &stream, const typename MyClass<T>::Node &node);
模板
类MyClass;

模板QDataStream&operator此
operator此
operator首先,请尝试创建一个来向我们展示。第二,复制粘贴(作为文本)该MCVE完整的错误输出。@Someprogrammerdude在Godbolt上添加了一个实时演示。首先,请尝试创建一个。第二,复制粘贴(作为文本)该MCVE的完整错误输出。@Someprogrammerdude在Godbolt上作为实时演示添加
template<typename T>
class MyClass
{
private:
    struct Node {};
    friend QDataStream &operator<< <>(QDataStream &stream, const Node &node);
    friend QDataStream &operator<< <>(QDataStream &stream, const MyClass::Node &node);
    friend QDataStream &operator<< <>(QDataStream &stream, const MyClass::Node &node);
    friend QDataStream &operator<< <>(QDataStream &stream, const typename MyClass<T>::Node &node);
    friend QDataStream &operator<< <>(QDataStream &stream, const typename MyClass::Node &node);
};

template<typename T>
QDataStream &operator<<(QDataStream &stream, const typename MyClass<T>::Node &node)
{
    return stream;
}
error: C2672: '<<': no matching overloaded function found