// prms-id: 3579 extern "C" int printf(const char *, ...); int num_x; class Y { public: Y () { printf("Y() this: %x\n", this); } ~Y () { printf("~Y() this: %x\n", this); } }; class X { public: X () { ++num_x; printf("X() this: %x\n", this); Y y; *this = (X) y; } X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } X & operator = (const X & xx) { printf("X.op=(X&) this: %x\n", this); return *this; } ~X () { printf("~X() this: %x\n", this); --num_x; } }; int main (int, char **) { { X anX; } if (num_x) { printf("FAIL\n"); return 1; } printf("PASS\n"); return 0; };