Hi,
The following code works if compiled with VS but fails with ICC:
class A { public: virtual void F() = 0; }; class B : public A { public: virtual void F() = 0; }; class C : public B { public: virtual void B::F() override {} }; int _tmain(int argc, _TCHAR* argv[]) { C c; A* a = &c; a->F(); return 0; }
Obviously, removing the 2nd F declaration in B or the "B::" part from F’s definition in C will remove the issue.
What I was wondering is whether this is a bug or just a quirk and of which of the compilers?