1 // PR c++/15172
2 // { dg-do run }
3 
4 extern "C" int printf (const char *, ...);
5 extern "C" void abort ();
6 
7 struct A {
8   static A* p;
9 
AA10   A() { p = this; }
11   A(const A&);
~AA12   ~A() { if (this != p) abort (); }
printA13   void print () { }
14 };
15 
16 A* A::p;
17 
18 struct B {
19   A a;
20 };
21 
22 B b = { A () };
23 
24 struct A2 {
25   static A2* p;
26 
A2A227   A2() { p = this; }
28   A2(const A2&);
~A2A229   ~A2() { if (this != p) abort (); }
printA230   void print () { }
31 };
32 
33 A2* A2::p;
34 
35 struct B2 {
36   A2 a2;
37 };
38 
main()39 int main () {
40   b.a.print ();
41   {
42     B2 b2 = { A2() };
43     b2.a2.print ();
44   }
45 }
46 
47