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