| // 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; | |
| } |