/* { dg-do compile } */ /* { dg-options "-O -Wuninitialized" } */ struct S8 { template S8(T) { } }; template struct S10; template struct S10 { typedef T S12; typedef S8 S1(); }; template struct S3 { }; template struct S11 { S11(S3); }; struct S2 { template operator S11() { return S11(S5()); } template struct S5:public S3 { virtual typename S10::S12 S13() { return 0; } }; }; template S11 S6(S3) { return S11(S3()); } template struct S7 { typedef S12 S15(); }; struct S4 { template operator S11() { struct S14:public S3 { S14(S2 x):S11_(x) { } S11::S12>::S15> S11_; }; return S6(S14(S11_)); } S2 S11_; }; struct S9 { template operator S11() { return S11(S14(S11_)); } template struct S14:public S3 { S14(S4 x):S11_(x) { } S11::S1> S11_; }; S4 S11_; }; void S15(S11); void S16() { S9 x; S15(x); }