// { dg-do run } | |
// Bug: g++ initializes both B::i and B::j before destroying any temps. | |
extern "C" int printf (const char *, ...); | |
int c = 0; | |
int d = 0; | |
int r = 0; | |
struct A { | |
A() { if (c != d) r = 1; ++c; } | |
A(const A&); // declare so g++ returns A on the stack | |
~A() { ++d; } | |
operator int () { return 0; } | |
}; | |
A foo () | |
{ | |
return A(); | |
} | |
struct B { | |
int i; | |
int j; | |
B(): i(foo()), j(foo()) { } | |
}; | |
int main() | |
{ | |
B b; | |
return r; | |
} |