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;
}
