diff gcc/testsuite/g++.dg/cpp0x/depr-copy1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/cpp0x/depr-copy1.C	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,29 @@
+/* [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 }
+
+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 } }
+}