| /* [depr.impldec] The implicit definition of a copy constructor as defaulted is |
| deprecated if the class has a user-declared copy assignment operator or a |
| user-declared destructor. The implicit definition of a copy assignment |
| operator as defaulted is deprecated if the class has a user-declared copy |
| constructor or a user-declared destructor (15.4, 15.8). In a future revision |
| of this International Standard, these implicit definitions could become |
| deleted (11.4). */ |
| |
| // { dg-additional-options -Wdeprecated-copy-dtor } |
| |
| struct X |
| { |
| X(); |
| X(const X&); |
| }; |
| struct A |
| { |
| X x; |
| ~A(); |
| }; |
| |
| void f(bool b) |
| { |
| A a; |
| if (b) |
| throw A(); // Don't warn about elided copy |
| A a2 = A(); // Here either. |
| A a3 (a); // { dg-warning "deprecated" "" { target c++11 } } |
| } |