#include <iostream>
using namespace std;
class A {
public:
A(){
cout << "constructor" << endl;
throw 1;
}
};
void* operator new(size_t size, int i){
cout << "in placement new" << endl;
return ::operator new(size);
}
void operator delete(void *ptr, int i){
cout << "in placement delete" << endl;
::operator delete(ptr);
}
int main(){
int o = 9;
try {
A* a = new(o) A;
} catch(...) {}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCgpjbGFzcyBBIHsKcHVibGljOgogICAgQSgpewogICAgICAgIGNvdXQgPDwgImNvbnN0cnVjdG9yIiA8PCBlbmRsOwogICAgICAgIHRocm93IDE7CiAgICB9Cn07Cgp2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUsIGludCBpKXsKICAgIGNvdXQgPDwgImluIHBsYWNlbWVudCBuZXciIDw8IGVuZGw7CiAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcoc2l6ZSk7Cn0KCnZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKnB0ciwgaW50IGkpewogICAgY291dCA8PCAiaW4gcGxhY2VtZW50IGRlbGV0ZSIgPDwgZW5kbDsKICAgIDo6b3BlcmF0b3IgZGVsZXRlKHB0cik7Cn0KCmludCBtYWluKCl7CiAgICBpbnQgbyA9IDk7CiAgICB0cnkgewogICAgICAgQSogYSA9IG5ldyhvKSBBOwogICAgfSBjYXRjaCguLi4pIHt9Cn0KCg==