1 // { dg-do run } 2 3 typedef __SIZE_TYPE__ size_t; 4 new(size_t,void * __p)5inline void *operator new (size_t, void *__p) throw() { return __p; } 6 7 struct _Vector_impl 8 { 9 int *_M_start; 10 int *_M_finish; _Vector_impl_Vector_impl11 _Vector_impl () :_M_start (0), _M_finish (0) {} 12 }; 13 14 struct vector 15 { 16 _Vector_impl _M_impl; _M_allocatevector17 int *_M_allocate (size_t __n) 18 { 19 return __n != 0 ? new int[__n] : 0; 20 } push_backvector21 void push_back () 22 { 23 new (this->_M_impl._M_finish) int (); 24 this->_M_impl._M_finish = 25 this->_M_allocate (this->_M_impl._M_finish - this->_M_impl._M_start) + 1; 26 } 27 }; 28 29 int main()30main () 31 { 32 for (int i = 0; i <= 1; i++) 33 for (int j = 0; j <= 1; j++) 34 { 35 vector a[2]; 36 a[i].push_back (); 37 } 38 } 39