#include <iostream>
struct A {
void test() { std::cout << "A\n"; }
};
struct B : A {
void test() { std::cout << "B\n"; }
};
struct C : B {
using A::test;
using B::test;
};
int main() {
C().test(); // Is this ambiguous?
return 0;
}
在本例中,g++ 8.1.0 编译成功,并test()
从B
.
clang++ 3.8.0 报告:error: call to member function 'test' is ambiguous
.
哪个是对的?如果是 g++,选择的规则是B::test
什么A::test
?