// PR c++/12253 // Bug: We were failing to destroy the temporary A passed to the // constructor for b[0] before going on to construct b[1]. // { dg-do run } extern "C" int printf (const char *, ...); int c; int r; struct A { A() { printf ("A()\n"); if (c++) r = 1; } A(const A&) { printf ("A(const A&)\n"); ++c; } ~A() { printf ("~A()\n"); --c; } }; struct B { B(int, const A& = A()) { printf ("B()\n"); } }; int main() { B b[] = { 0, 0 }; return r; }