我希望标题能描述我想问的问题……
我写了一段代码,和gcc一起编译,并按我的预期工作。但是,它不能用llvm编译,当用icc编译时,代码的执行方式也不同!
下面是这个问题的一个例子:
#include <iostream>
using std::cout; using std::endl;
class A {
public:
virtual void foo() { cout << "A::foo()" << endl; }
};
class B : public A {
public:
typedef A base;
virtual void foo() { cout << "B::foo()" << endl; }
};
int main() {
typedef B base;
base* bp = new B();
bp->base::foo();
}
gcc输出: A::foo()
icc输出: B::foo()
谁能解释一下这个标准是怎么说的?
https://stackoverflow.com/questions/11115484
复制相似问题