1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// { dg-do assemble } // PRMS Id: 5341 // Bug: g++ complains about the explicit destructor notation. #include <stddef.h> void *operator new(size_t Size, void* pThing) { return pThing; } template <class T> class Stack { public: Stack() { new (Data) T(); } ~Stack() { ((T*)Data)->~T(); } private: char Data[sizeof(T)]; }; Stack<int> a; Stack<Stack<int> > c;