// Test that we properly clean up if we get an exception in the middle of | |
// constructing the closure object. | |
// This test fails because of PR 41449; it isn't a lambda issue. | |
// { dg-do run { xfail *-*-* } } | |
// { dg-require-effective-target c++11 } | |
struct A | |
{ | |
A() {} | |
A(const A&) { throw 1; } | |
}; | |
int bs; | |
struct B | |
{ | |
B() { ++bs; } | |
B(const B&) { ++bs; } | |
~B() { --bs; } | |
}; | |
int main() | |
{ | |
{ | |
B b1, b2; | |
A a; | |
try | |
{ | |
[b1, a, b2]{ }; | |
} | |
catch(...) {} | |
} | |
return bs; | |
} |