1// PR c++/43024 2// { dg-options "-O2" } 3 4void foo(); 5 6template<int> struct X 7{ 8 enum { e }; 9 typedef int Y; 10}; 11 12template<int N = 0> struct A 13{ 14 ~A() { foo(); } 15 A() { a<0>(0); } 16 template<int> void a(typename X<!X<N>::e>::Y); 17 struct B b(); 18}; 19 20struct B 21{ 22 A<> b0, b1, b2, b3; 23 B operator+ (const B&); 24}; 25 26struct C 27{ 28 A<> c0, c1, c2, c3, c4, c5, c6, c7, c8; 29}; 30 31inline void bar(int i) 32{ 33 A<> a0, a1; 34 if (i) a0.b() + a0.b() + a0.b() + a0.b(); 35} 36 37void baz() 38{ 39 C c; 40 bar(0); 41} 42