【发布时间】:2018-11-23 08:58:29
【问题描述】:
#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编译成功,从B调用test()。
clang++ 3.8.0 报告:error: call to member function 'test' is ambiguous。
哪个是正确的?如果是 g++,选择B::test 而不是A::test 的规则是什么?
【问题讨论】:
-
这个问题可能对你有帮助:stackoverflow.com/questions/42573771/…
标签: c++ c++11 language-lawyer using-declaration