/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C/C++.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
template<typename T >
void operator delete(void*, T*& p)
{
delete p;
p = nullptr;
}
struct A{
~A(){ puts(__PRETTY_FUNCTION__);}
};
struct B{
A* p;
B() : p(new A) {}
~B(){operator delete(p,p);}
void release()
{ operator delete(p, p); throw 123;}
};
int main()
{
try{
B b;
b.release();
} catch(...){
puts("caught");
}
return 0;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKV2VsY29tZSB0byBHREIgT25saW5lLgpHREIgb25saW5lIGlzIGFuIG9ubGluZSBjb21waWxlciBhbmQgZGVidWdnZXIgdG9vbCBmb3IgQy9DKysuCkNvZGUsIENvbXBpbGUsIFJ1biBhbmQgRGVidWcgb25saW5lIGZyb20gYW55d2hlcmUgaW4gd29ybGQuCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUID4Kdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCosIFQqJiBwKQp7CiAgZGVsZXRlIHA7CiAgcCA9IG51bGxwdHI7Cn0Kc3RydWN0IEF7Cn5BKCl7IHB1dHMoX19QUkVUVFlfRlVOQ1RJT05fXyk7fQp9OwpzdHJ1Y3QgQnsKQSogcDsKQigpIDogcChuZXcgQSkge30KfkIoKXtvcGVyYXRvciBkZWxldGUocCxwKTt9CnZvaWQgcmVsZWFzZSgpCnsgb3BlcmF0b3IgZGVsZXRlKHAsIHApOyB0aHJvdyAxMjM7fQp9OwoKaW50IG1haW4oKQp7CiAgdHJ5ewogICBCIGI7CiAgIGIucmVsZWFzZSgpOwogIH0gY2F0Y2goLi4uKXsKICAgcHV0cygiY2F1Z2h0Iik7CiAgfQogcmV0dXJuIDA7Cn0KICAgIA==