Hi, Compiling the following code with g++ will report error:`static void A::operator delete(void*)' is protected. It's correct If B is derived from A without "virtual". Why does the "new B" expression need to check the delete operator's accessibility when B is virutally derived from A?
class A { protected: static void operator delete( void * ) {} }; class B : public virtual A {}; void f() { new B; }