// PR c++/15172 | |
// { dg-do run } | |
extern "C" int printf (const char *, ...); | |
extern "C" void abort (); | |
struct A { | |
static A* p; | |
A() { p = this; } | |
A(const A&); | |
~A() { if (this != p) abort (); } | |
void print () { } | |
}; | |
A* A::p; | |
struct B { | |
A a; | |
}; | |
B b = { A () }; | |
struct A2 { | |
static A2* p; | |
A2() { p = this; } | |
A2(const A2&); | |
~A2() { if (this != p) abort (); } | |
void print () { } | |
}; | |
A2* A2::p; | |
struct B2 { | |
A2 a2; | |
}; | |
int main () { | |
b.a.print (); | |
{ | |
B2 b2 = { A2() }; | |
b2.a2.print (); | |
} | |
} | |