diff gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,31 @@
+// { dg-do run { target c++11 } }
+// PR78495 failed to propagate pass-by-value struct to base ctor.
+
+struct Ptr {
+  void *ptr = 0;
+
+  Ptr() {}
+  Ptr(Ptr const&) = delete;
+  Ptr(Ptr&& other) : ptr (other.ptr) {}
+};
+
+struct Base {
+  Ptr val;
+  Base(Ptr val_) : val(static_cast<Ptr&&>(val_)) {}
+};
+
+struct Derived: Base {
+  using Base::Base;
+};
+
+void *Foo () {
+  Ptr ptr;
+
+  Derived d(static_cast<Ptr&&>(ptr));
+
+  return d.val.ptr;
+}
+
+int main () {
+  return Foo () != 0;
+}