在 C++ 中,不能在一个类中重载具有 ref-qualifier 的成员函数和没有 ref-qualifier 的成员函数。但同时可以从父类继承一个成员函数并在子类中重载它,如示例所示:
struct A {
void f() {}
//void f() & {} //overload error everywhere
};
struct B : A {
using A::f;
void f() & {} //ok everywhere
};
int main() {
B b;
b.f(); //ok in GCC only
}
只是在调用的过程中f
,铿锵抱怨道call to member function 'f' is ambiguous
。但是GCC接受程序没有任何错误,demo:https ://gcc.godbolt.org/z/5zzbWcs97
哪个编译器在这里?