// { dg-do run } // Bug: the temporary returned from f is elided, causing a to be constructed // twice but only destroyed once. extern "C" int printf (const char *, ...); int c,d; struct A { A (int) { c++; } ~A () { d++; } A (const A&) { c++; } int i; }; A f () { return 1; } int main () { { A a (1); a = f (); } printf ("%d %d\n", c, d); return c != d; }