annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do run { target c++11 } }
kono
parents:
diff changeset
2 // PR78495 failed to propagate pass-by-value struct to base ctor.
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 struct Ptr {
kono
parents:
diff changeset
5 void *ptr = 0;
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 Ptr() {}
kono
parents:
diff changeset
8 Ptr(Ptr const&) = delete;
kono
parents:
diff changeset
9 Ptr(Ptr&& other) : ptr (other.ptr) {}
kono
parents:
diff changeset
10 };
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 struct Base {
kono
parents:
diff changeset
13 Ptr val;
kono
parents:
diff changeset
14 Base(Ptr val_) : val(static_cast<Ptr&&>(val_)) {}
kono
parents:
diff changeset
15 };
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 struct Derived: Base {
kono
parents:
diff changeset
18 using Base::Base;
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 void *Foo () {
kono
parents:
diff changeset
22 Ptr ptr;
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 Derived d(static_cast<Ptr&&>(ptr));
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 return d.val.ptr;
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 int main () {
kono
parents:
diff changeset
30 return Foo () != 0;
kono
parents:
diff changeset
31 }