blob: 4761bedf2cc48ea8f4adbfb5770cc903fcceb6e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// PRMS Id: 5286
// Bug: g++ forgets side-effects of object in call to nonexistent destructor.
#include <new>
int r;
template <class T> struct A {
T *p;
int i;
A() { i = 0; p = (T*) new char[sizeof (T)]; new (p + i++) T; }
~A() { p[--i].~T(); r = i; }
};
int main()
{
{ A<int> a; }
int* p = (int*) new char[sizeof (int)];
new (p + r++) int;
p[--r].~int();
return r;
}
|