1 // Test that we properly clean up if we get an exception in the middle of
2 // constructing the closure object.
3
4 // This test fails because of PR 41449; it isn't a lambda issue.
5 // { dg-do run { xfail *-*-* } }
6 // { dg-require-effective-target c++11 }
7
8 struct A
9 {
AA10 A() {}
AA11 A(const A&) { throw 1; }
12 };
13
14 int bs;
15 struct B
16 {
BB17 B() { ++bs; }
BB18 B(const B&) { ++bs; }
~BB19 ~B() { --bs; }
20 };
21
main()22 int main()
23 {
24 {
25 B b1, b2;
26 A a;
27
28 try
29 {
30 [b1, a, b2]{ };
31 }
32 catch(...) {}
33 }
34 return bs;
35 }
36