Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/cpp0x/ref-qual19.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 // PR c++/87109 | |
2 // { dg-do run { target c++11 } } | |
3 | |
4 #include <utility> | |
5 | |
6 struct C { int i; }; | |
7 struct D { int i; }; | |
8 | |
9 struct A { | |
10 int j; | |
11 operator C() & { return { 1 }; } | |
12 operator C() && { return { 2 }; } | |
13 }; | |
14 | |
15 struct B : public A { | |
16 operator D() & { return { 3 }; } | |
17 operator D() && { return { 4 }; } | |
18 }; | |
19 | |
20 C | |
21 f (A a) | |
22 { | |
23 return a; | |
24 } | |
25 | |
26 C | |
27 f2 (A a) | |
28 { | |
29 return std::move (a); | |
30 } | |
31 | |
32 C | |
33 f3 () | |
34 { | |
35 A a; | |
36 return a; | |
37 } | |
38 | |
39 C | |
40 f4 () | |
41 { | |
42 A a; | |
43 return std::move (a); | |
44 } | |
45 | |
46 C | |
47 f5 () | |
48 { | |
49 return A(); | |
50 } | |
51 | |
52 D | |
53 f6 (B b) | |
54 { | |
55 return b; | |
56 } | |
57 | |
58 D | |
59 f7 (B b) | |
60 { | |
61 return std::move (b); | |
62 } | |
63 | |
64 D | |
65 f8 () | |
66 { | |
67 B b; | |
68 return b; | |
69 } | |
70 | |
71 D | |
72 f9 () | |
73 { | |
74 B b; | |
75 return std::move (b); | |
76 } | |
77 | |
78 D | |
79 f10 () | |
80 { | |
81 return B(); | |
82 } | |
83 | |
84 int | |
85 main () | |
86 { | |
87 C c1 = f (A()); | |
88 if (c1.i != 2) | |
89 __builtin_abort (); | |
90 C c2 = f2 (A()); | |
91 if (c2.i != 2) | |
92 __builtin_abort (); | |
93 C c3 = f3 (); | |
94 if (c3.i != 2) | |
95 __builtin_abort (); | |
96 C c4 = f4 (); | |
97 if (c4.i != 2) | |
98 __builtin_abort (); | |
99 C c5 = f5 (); | |
100 if (c5.i != 2) | |
101 __builtin_abort (); | |
102 D c6 = f6 (B()); | |
103 if (c6.i != 4) | |
104 __builtin_abort (); | |
105 D c7 = f7 (B()); | |
106 if (c7.i != 4) | |
107 __builtin_abort (); | |
108 D c8 = f8 (); | |
109 if (c8.i != 4) | |
110 __builtin_abort (); | |
111 D c9 = f9 (); | |
112 if (c9.i != 4) | |
113 __builtin_abort (); | |
114 D c10 = f10 (); | |
115 if (c10.i != 4) | |
116 __builtin_abort (); | |
117 } |