Let's consider the following code:
#include <iostream>
struct A{ virtual void foo(){ } };
struct B : A { virtual void foo(){ } };
A *a = new B;
int main()
{
delete a; //UB?
}
I deliberately didn't define a virtual destructor. The compiler printed a message about causing UB, is it true?