// { dg-additional-options "-Wno-return-type" } | |
void* operator new(__SIZE_TYPE__, void* __p) {} | |
struct auto_ptr { | |
int* p; | |
~auto_ptr() { delete p; } | |
}; | |
typedef void* T; | |
struct vector { | |
void push_back(const T& __x) { | |
::new(0) T(__x); | |
insert(__x); | |
} | |
void insert(const T& __x); | |
} v; | |
void g(); | |
void f() { | |
auto_ptr ap; | |
if (ap.p) { | |
ap.p = new int(); | |
} | |
g(); | |
int* tmp = ap.p; | |
ap.p = 0; | |
v.push_back(tmp); | |
} |