| // { dg-do run } |
| /* { dg-options "-fcheck-new" } */ |
| |
| typedef __SIZE_TYPE__ size_t; |
| |
| inline void *operator new (size_t, void *__p) throw() { return __p; } |
| |
| struct _Vector_impl |
| { |
| int *_M_start; |
| int *_M_finish; |
| _Vector_impl () :_M_start (0), _M_finish (0) {} |
| }; |
| |
| struct vector |
| { |
| _Vector_impl _M_impl; |
| int *_M_allocate (size_t __n) |
| { |
| return __n != 0 ? new int[__n] : 0; |
| } |
| void push_back () |
| { |
| new (this->_M_impl._M_finish) int (); |
| this->_M_impl._M_finish = |
| this->_M_allocate (this->_M_impl._M_finish - this->_M_impl._M_start) + 1; |
| } |
| }; |
| |
| int |
| main () |
| { |
| for (int i = 0; i <= 1; i++) |
| for (int j = 0; j <= 1; j++) |
| { |
| vector a[2]; |
| a[i].push_back (); |
| } |
| } |