1 // PR c++/13944
2
3 // Bug: When eliding the copy from the A temporary into the exception
4 // object, we extended the throw prohibition to the constructor for the
5 // temporary. This is wrong; the throw from A() should propagate normally
6 // regardless of the elision of the temporary.
7
8 // { dg-do run }
9
10 struct A
11 {
AA12 A() { throw 0; }
13 };
14
main()15 int main()
16 {
17 try
18 {
19 throw A();
20 }
21 catch(int i)
22 {
23 return i;
24 }
25 catch (...)
26 {
27 return 2;
28 }
29 return 3;
30 }
31