]> gcc.gnu.org Git - gcc.git/blame - gcc/testsuite/g++.dg/cpp0x/rv6n.C
PR c++/92590 - wrong handling of inherited default ctor.
[gcc.git] / gcc / testsuite / g++.dg / cpp0x / rv6n.C
CommitLineData
8af2fec4
RY
1// I, Howard Hinnant, hereby place this code in the public domain.
2
e7f1930f 3// Test overload resolution among reference types
8af2fec4 4
4b2e63de 5// { dg-do compile { target c++11 } }
c74459ea 6// { dg-options "-fno-ipa-icf" }
8af2fec4
RY
7
8template <bool> struct sa;
9template <> struct sa<true> {};
10
11struct one {char x[1];};
12struct two {char x[2];};
13struct three {char x[3];};
14struct four {char x[4];};
15struct five {char x[5];};
16struct six {char x[6];};
17struct seven {char x[7];};
18struct eight {char x[8];};
19
20struct A
21{
22 A();
a2e70335 23 A(const volatile A&&);
8af2fec4
RY
24};
25
26 A source();
27const A c_source();
8a902edb
MP
28 volatile A v_source(); // { dg-warning "deprecated" "" { target c++2a } }
29const volatile A cv_source(); // { dg-warning "deprecated" "" { target c++2a } }
8af2fec4
RY
30
31// 6 at a time
32
feb6efc1 33one sink_6_123456( A&); // { dg-message "one sink_6_123456|no known conversion" }
89606913
JM
34two sink_6_123456(const A&);
35three sink_6_123456(volatile A&);
36four sink_6_123456(const volatile A&);
37five sink_6_123456( A&&);
38six sink_6_123456(const A&&);
8af2fec4
RY
39
40int test6_123456()
41{
42 A a;
a2e70335 43 const A ca = a; // { dg-error "deleted" }
8af2fec4 44 volatile A va;
a2e70335 45 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
46 sink_6_123456(v_source()); // { dg-error "" }
47 sink_6_123456(cv_source()); // { dg-error "" }
8af2fec4
RY
48 return 0;
49}
50
feb6efc1 51one sink_6_123457( A&); // { dg-message "one sink_6_123457|no known conversion" }
89606913
JM
52two sink_6_123457(const A&);
53three sink_6_123457(volatile A&);
54four sink_6_123457(const volatile A&);
55five sink_6_123457( A&&);
56seven sink_6_123457(volatile A&&);
8af2fec4
RY
57
58int test6_123457()
59{
60 A a;
a2e70335 61 const A ca = a; // { dg-error "deleted" }
8af2fec4 62 volatile A va;
a2e70335 63 const volatile A cva = a; // { dg-error "deleted" }
89606913 64 sink_6_123457(cv_source()); // { dg-error "" }
8af2fec4
RY
65 return 0;
66}
67
89606913
JM
68two sink_6_235678(const A&);
69three sink_6_235678(volatile A&);
70five sink_6_235678( A&&);
71six sink_6_235678(const A&&);
72seven sink_6_235678(volatile A&&);
e7f1930f 73eight sink_6_235678(const volatile A&&); // { dg-message "" }
8af2fec4
RY
74
75int test6_235678()
76{
77 A a;
a2e70335 78 const A ca = a; // { dg-error "deleted" }
8af2fec4 79 volatile A va;
a2e70335 80 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
81 sink_6_235678(a); // { dg-error "" }
82 sink_6_235678(cva); // { dg-error "" }
8af2fec4
RY
83 return 0;
84}
85
89606913
JM
86two sink_6_234678(const A&);
87three sink_6_234678(volatile A&);
88four sink_6_234678(const volatile A&);
89six sink_6_234678(const A&&);
90seven sink_6_234678(volatile A&&);
91eight sink_6_234678(const volatile A&&);
8af2fec4
RY
92
93int test6_234678()
94{
95 A a;
a2e70335 96 const A ca = a; // { dg-error "deleted" }
8af2fec4 97 volatile A va;
a2e70335 98 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
99 sink_6_234678(a); // { dg-error "" }
100 sink_6_234678(source()); // { dg-error "" }
8af2fec4
RY
101 return 0;
102}
103
89606913
JM
104two sink_6_234578(const A&);
105three sink_6_234578(volatile A&);
106four sink_6_234578(const volatile A&);
107five sink_6_234578( A&&);
108seven sink_6_234578(volatile A&&);
109eight sink_6_234578(const volatile A&&);
8af2fec4
RY
110
111int test6_234578()
112{
113 A a;
a2e70335 114 const A ca = a; // { dg-error "deleted" }
8af2fec4 115 volatile A va;
a2e70335 116 const volatile A cva = a; // { dg-error "deleted" }
89606913 117 sink_6_234578(a); // { dg-error "" }
8af2fec4
RY
118 return 0;
119}
120
89606913
JM
121two sink_6_234568(const A&);
122three sink_6_234568(volatile A&);
123four sink_6_234568(const volatile A&);
124five sink_6_234568( A&&);
125six sink_6_234568(const A&&);
126eight sink_6_234568(const volatile A&&);
8af2fec4
RY
127
128int test6_234568()
129{
130 A a;
a2e70335 131 const A ca = a; // { dg-error "deleted" }
8af2fec4 132 volatile A va;
a2e70335 133 const volatile A cva = a; // { dg-error "deleted" }
89606913 134 sink_6_234568(a); // { dg-error "" }
8af2fec4
RY
135 return 0;
136}
137
feb6efc1 138two sink_6_234567(const A&); // { dg-message "two sink_6_234567|no known conversion" }
89606913
JM
139three sink_6_234567(volatile A&);
140four sink_6_234567(const volatile A&);
141five sink_6_234567( A&&);
142six sink_6_234567(const A&&);
143seven sink_6_234567(volatile A&&);
8af2fec4
RY
144
145int test6_234567()
146{
147 A a;
a2e70335 148 const A ca = a; // { dg-error "deleted" }
8af2fec4 149 volatile A va;
a2e70335 150 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
151 sink_6_234567(a); // { dg-error "" }
152 sink_6_234567(cv_source()); // { dg-error "" }
8af2fec4
RY
153 return 0;
154}
155
156one sink_6_134678( A&);
157three sink_6_134678(volatile A&);
158four sink_6_134678(const volatile A&);
89606913
JM
159six sink_6_134678(const A&&);
160seven sink_6_134678(volatile A&&);
161eight sink_6_134678(const volatile A&&);
8af2fec4
RY
162
163int test6_134678()
164{
165 A a;
a2e70335 166 const A ca = a; // { dg-error "deleted" }
8af2fec4 167 volatile A va;
a2e70335 168 const volatile A cva = a; // { dg-error "deleted" }
89606913 169 sink_6_134678(source()); // { dg-error "" }
8af2fec4
RY
170 return 0;
171}
172
173one sink_6_124678( A&);
89606913 174two sink_6_124678(const A&);
8af2fec4 175four sink_6_124678(const volatile A&);
89606913
JM
176six sink_6_124678(const A&&);
177seven sink_6_124678(volatile A&&);
178eight sink_6_124678(const volatile A&&);
8af2fec4
RY
179
180int test6_124678()
181{
182 A a;
a2e70335 183 const A ca = a; // { dg-error "deleted" }
8af2fec4 184 volatile A va;
a2e70335 185 const volatile A cva = a; // { dg-error "deleted" }
89606913 186 sink_6_124678(source()); // { dg-error "" }
8af2fec4
RY
187 return 0;
188}
189
190one sink_6_123678( A&);
89606913 191two sink_6_123678(const A&);
8af2fec4 192three sink_6_123678(volatile A&);
89606913
JM
193six sink_6_123678(const A&&);
194seven sink_6_123678(volatile A&&);
e7f1930f 195eight sink_6_123678(const volatile A&&); // { dg-message "" }
8af2fec4
RY
196
197int test6_123678()
198{
199 A a;
a2e70335 200 const A ca = a; // { dg-error "deleted" }
8af2fec4 201 volatile A va;
a2e70335 202 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
203 sink_6_123678(cva); // { dg-error "" }
204 sink_6_123678(source()); // { dg-error "" }
8af2fec4
RY
205 return 0;
206}
207
feb6efc1 208one sink_6_123567( A&); // { dg-message "one sink_6_123567|no known conversion" }
89606913
JM
209two sink_6_123567(const A&);
210three sink_6_123567(volatile A&);
211five sink_6_123567( A&&);
212six sink_6_123567(const A&&);
213seven sink_6_123567(volatile A&&);
8af2fec4
RY
214
215int test6_123567()
216{
217 A a;
a2e70335 218 const A ca = a; // { dg-error "deleted" }
8af2fec4 219 volatile A va;
a2e70335 220 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
221 sink_6_123567(cva); // { dg-error "" }
222 sink_6_123567(cv_source()); // { dg-error "" }
8af2fec4
RY
223 return 0;
224}
225
e7f1930f
JM
226one sink_6_123568( A&);
227two sink_6_123568(const A&);
228three sink_6_123568(volatile A&);
229five sink_6_123568( A&&);
230six sink_6_123568(const A&&);
231eight sink_6_123568(const volatile A&&); // { dg-message "" }
232
233int test6_123568()
234{
235 A a;
a2e70335 236 const A ca = a; // { dg-error "deleted" }
e7f1930f 237 volatile A va;
a2e70335 238 const volatile A cva = a; // { dg-error "deleted" }
89606913 239 sink_6_123568(cva); // { dg-error "" }
e7f1930f
JM
240 return 0;
241}
242
243one sink_6_123578( A&);
244two sink_6_123578(const A&);
245three sink_6_123578(volatile A&);
246five sink_6_123578( A&&);
247seven sink_6_123578(volatile A&&);
248eight sink_6_123578(const volatile A&&); // { dg-message "" }
249
250int test6_123578()
251{
252 A a;
a2e70335 253 const A ca = a; // { dg-error "deleted" }
e7f1930f 254 volatile A va;
a2e70335 255 const volatile A cva = a; // { dg-error "deleted" }
89606913 256 sink_6_123578(cva); // { dg-error "" }
e7f1930f
JM
257 return 0;
258}
259
feb6efc1 260one sink_6_123467( A&); // { dg-message "one sink_6_123467|no known conversion" }
89606913
JM
261two sink_6_123467(const A&);
262three sink_6_123467(volatile A&);
263four sink_6_123467(const volatile A&);
264six sink_6_123467(const A&&);
265seven sink_6_123467(volatile A&&);
8af2fec4
RY
266
267int test6_123467()
268{
269 A a;
a2e70335 270 const A ca = a; // { dg-error "deleted" }
8af2fec4 271 volatile A va;
a2e70335 272 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
273 sink_6_123467(source()); // { dg-error "" }
274 sink_6_123467(cv_source()); // { dg-error "" }
8af2fec4
RY
275 return 0;
276}
277
feb6efc1 278one sink_6_124567( A&); // { dg-message "one sink_6_124567|no known conversion" }
89606913
JM
279two sink_6_124567(const A&);
280four sink_6_124567(const volatile A&);
281five sink_6_124567( A&&);
282six sink_6_124567(const A&&);
283seven sink_6_124567(volatile A&&);
8af2fec4
RY
284
285int test6_124567()
286{
287 A a;
a2e70335 288 const A ca = a; // { dg-error "deleted" }
8af2fec4 289 volatile A va;
a2e70335 290 const volatile A cva = a; // { dg-error "deleted" }
89606913 291 sink_6_124567(cv_source()); // { dg-error "" }
8af2fec4
RY
292 return 0;
293}
294
e7f1930f
JM
295one sink_6_125678( A&);
296two sink_6_125678(const A&);
297five sink_6_125678( A&&);
298six sink_6_125678(const A&&);
299seven sink_6_125678(volatile A&&); // { dg-message "" }
300eight sink_6_125678(const volatile A&&); // { dg-message "" }
301
302int test6_125678()
303{
304 A a;
a2e70335 305 const A ca = a; // { dg-error "deleted" }
e7f1930f 306 volatile A va;
a2e70335 307 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
308 sink_6_125678(va); // { dg-error "" }
309 sink_6_125678(cva); // { dg-error "" }
e7f1930f
JM
310 return 0;
311}
312
feb6efc1 313one sink_6_134567( A&); // { dg-message "one sink_6_134567|no known conversion" }
89606913
JM
314three sink_6_134567(volatile A&);
315four sink_6_134567(const volatile A&);
316five sink_6_134567( A&&);
317six sink_6_134567(const A&&);
318seven sink_6_134567(volatile A&&);
8af2fec4
RY
319
320int test6_134567()
321{
322 A a;
a2e70335 323 const A ca = a; // { dg-error "deleted" }
8af2fec4 324 volatile A va;
a2e70335 325 const volatile A cva = a; // { dg-error "deleted" }
89606913 326 sink_6_134567(cv_source()); // { dg-error "" }
8af2fec4
RY
327 return 0;
328}
329
e7f1930f
JM
330one sink_6_135678( A&);
331three sink_6_135678(volatile A&);
332five sink_6_135678( A&&);
333six sink_6_135678(const A&&); // { dg-message "" }
334seven sink_6_135678(volatile A&&);
335eight sink_6_135678(const volatile A&&); // { dg-message "" }
336
337int test6_135678()
338{
339 A a;
a2e70335 340 const A ca = a; // { dg-error "deleted" }
e7f1930f 341 volatile A va;
a2e70335 342 const volatile A cva = a; // { dg-error "deleted" }
89606913
JM
343 sink_6_135678(ca); // { dg-error "" }
344 sink_6_135678(cva); // { dg-error "" }
e7f1930f
JM
345 return 0;
346}
347
8af2fec4
RY
348int main()
349{
350 return test6_235678() + test6_234678() + test6_234578() + test6_234568() +
351 test6_234567() + test6_134678() + test6_124678() + test6_123678() +
352 test6_123567();
353}
This page took 8.488185 seconds and 5 git commands to generate.