这可以在Visual C ++ 2015 Update 3 RC上编译并正常运行:
class A
{
template <class T> void f() {}
};
class B : A {};
class C : A {};
class D : B, C {};
int main()
{
D d;
d.f<int>();
}
此代码有两个问题:
f()
是私有的,因此d.f<int>()
应该无法编译。f()
是模棱两可的,可能是B::f()
或C::f()
。但是,没有诊断为/Wall
和B::f()
。颠倒顺序是D
从getC::f()
调用继承而来的,所以我想它只是使用列表中的第一个基类。
g ++和clang都正确。我是否缺少某些内容,或者这是Visual C ++中的错误?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句