1 // { dg-do run } 2 // prms-id: 3579 3 4 extern "C" int printf(const char *, ...); 5 6 int num_x; 7 8 class Y { 9 public: Y()10 Y () { printf("Y() this: %x\n", this); } ~Y()11 ~Y () { printf("~Y() this: %x\n", this); } 12 }; 13 14 class X { 15 public: X()16 X () { 17 ++num_x; 18 printf("X() this: %x\n", this); 19 Y y; 20 *this = (X) y; 21 } 22 X(const Y & yy)23 X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } 24 X & operator = (const X & xx) { 25 printf("X.op=(X&) this: %x\n", this); 26 return *this; 27 } 28 ~X()29 ~X () { printf("~X() this: %x\n", this); --num_x; } 30 }; 31 main(int,char **)32int main (int, char **) { 33 { X anX; } 34 if (num_x) { 35 printf("FAIL\n"); 36 return 1; 37 } 38 printf("PASS\n"); 39 return 0; 40 } 41