#include <iostream>
#include <string>
using std::cout;
using std::endl;
#define PFN(x) cout << x << __PRETTY_FUNCTION__ << endl
#define PF PFN("")
#define NL cout << endl
struct A {
constexpr A() { PF; }
virtual ~A() { PF; NL; }
};
struct B : A {
constexpr B() { PFN(" "); }
virtual ~B() { PFN(" "); }
};
int main(int argc, char** argv) {
{ A a; }
{ B b; }
A* a = new B;
delete a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmVuZGw7CgojZGVmaW5lIFBGTih4KSBjb3V0IDw8IHggPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCBlbmRsCiNkZWZpbmUgUEYgICAgIFBGTigiIikKI2RlZmluZSBOTCAgICAgY291dCA8PCBlbmRsCgpzdHJ1Y3QgQSB7CiAgICBjb25zdGV4cHIgQSgpIHsgUEY7IH0KICAgIHZpcnR1YWwgfkEoKSB7IFBGOyBOTDsgfQp9OwoKc3RydWN0IEIgOiBBIHsKICAgIGNvbnN0ZXhwciBCKCkgeyBQRk4oIiAiKTsgfQogICAgdmlydHVhbCB+QigpIHsgUEZOKCIgIik7IH0KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICAgeyBBIGE7IH0KICAgIHsgQiBiOyB9CiAgICBBKiBhID0gbmV3IEI7CiAgICBkZWxldGUgYTsKICAgIHJldHVybiAwOwp9