1void* operator new(__SIZE_TYPE__, void* __p) { }
2
3struct auto_ptr {
4        int* p;
5        ~auto_ptr() { delete p; }
6};
7
8typedef void* T;
9struct vector {
10        void push_back(const T& __x) {
11                ::new(0) T(__x);
12                insert(__x);
13        }
14        void insert(const T& __x);
15} v;
16
17void g();
18void f() {
19        auto_ptr ap;
20        if (ap.p) {
21                ap.p = new int();
22        }
23        g();
24        int* tmp = ap.p;
25        ap.p = 0;
26        v.push_back(tmp);
27}
28