// PR c++/13944 // Bug: When eliding the copy from the A temporary into the exception // object, we extended the throw prohibition to the constructor for the // temporary. This is wrong; the throw from A() should propagate normally // regardless of the elision of the temporary. // { dg-do run } struct A { A() { throw 0; } }; int main() { try { throw A(); } catch(int i) { return i; } catch (...) { return 2; } return 3; }