作者:小青年 | 来源:互联网 | 2022-12-02 00:08
我在另一个模板类中有一个以下嵌套模板类:
template
struct A
{
template
struct B {};
};
operator==
嵌套类型的非成员的签名是B
什么?以下天真的尝试不起作用:
template
bool operator==(A::B left, A::B right);
Clang,GCC和MSVC提供了各种不同的错误和/或提示错误,例如缺少template
关键字,但我没有尝试解决它.
请注意,这显然有效:
template
struct A
{
template
struct B {};
template
friend bool operator==(B left, B right)
{
return true;
}
};
但是,我需要外部非成员声明的原因是使用qdoc记录它.qdoc正在使用clang来解析源代码,它要求我提供operator==
我实际已经实现的声明,就像刚刚显示的那样.
现场演示