| // PR c++/12253 | |
| // We should not 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"); ++c; } | |
| A(const A&) { printf ("A(const A&)\n"); ++c; } | |
| ~A() { printf ("~A()\n"); --c; } | |
| }; | |
| struct B | |
| { | |
| B(int i, const A& = A()) { | |
| printf ("B()\n"); | |
| if (c != i) r = 1; | |
| } | |
| }; | |
| int main() | |
| { | |
| B b[] = { 1, 2 }; | |
| return r; | |
| } |