3a729cb21652950cf80f78a010f89af1a1cb5e59
[gcc.git] / gcc / testsuite / g++.dg / cpp0x / rv3n.C
1 // I, Howard Hinnant, hereby place this code in the public domain.
2
3 // Test overload resolution among reference types
4
5 // { dg-do compile { target c++11 } }
6 // { dg-options "" }
7
8 template <bool> struct sa;
9 template <> struct sa<true> {};
10
11 struct one {char x[1];};
12 struct two {char x[2];};
13 struct three {char x[3];};
14 struct four {char x[4];};
15 struct five {char x[5];};
16 struct six {char x[6];};
17 struct seven {char x[7];};
18 struct eight {char x[8];};
19
20 struct A
21 {
22 A();
23 A(const volatile A&&);
24 };
25
26 A source();
27 const A c_source();
28 volatile A v_source();
29 const volatile A cv_source();
30
31 // 3 at a time
32
33 one sink_3_123( A&); // { dg-message "one sink_3_123|no known conversion" }
34 two sink_3_123(const A&); // { dg-message "two sink_3_123|no known conversion" }
35 three sink_3_123(volatile A&); // { dg-message "three sink_3_123|no known conversion" }
36
37 int test3_123()
38 {
39 A a;
40 const A ca = a; // { dg-error "deleted" }
41 volatile A va;
42 const volatile A cva = a; // { dg-error "deleted" }
43 sink_3_123(cva); // { dg-error "no match" }
44 // { dg-message "candidate" "candidate note" { target *-*-* } 43 }
45 sink_3_123(v_source()); // { dg-error "no match" }
46 // { dg-message "candidate" "candidate note" { target *-*-* } 45 }
47 sink_3_123(cv_source()); // { dg-error "no match" }
48 // { dg-message "candidate" "candidate note" { target *-*-* } 47 }
49 return 0;
50 }
51
52 one sink_3_125( A&); // { dg-message "one sink_3_125|no known conversion" }
53 two sink_3_125(const A&); // { dg-message "two sink_3_125|no known conversion" }
54 five sink_3_125( A&&); // { dg-message "five sink_3_125|no known conversion" }
55
56 one sink_3_124( A&); // { dg-message "one sink_3_124|no known conversion" }
57 two sink_3_124(const A&); // { dg-message "two sink_3_124|no known conversion" }
58 four sink_3_124(const volatile A&); // { dg-message "four sink_3_124|no known conversion" }
59
60 int test3_124()
61 {
62 A a;
63 const A ca = a; // { dg-error "deleted" }
64 volatile A va;
65 const volatile A cva = a; // { dg-error "deleted" }
66 sink_3_124(v_source()); // { dg-error "no match" }
67 // { dg-message "candidate" "candidate note" { target *-*-* } 66 }
68 sink_3_124(cv_source()); // { dg-error "no match" }
69 // { dg-message "candidate" "candidate note" { target *-*-* } 68 }
70 return 0;
71 }
72
73 int test3_125()
74 {
75 A a;
76 const A ca = a; // { dg-error "deleted" }
77 volatile A va;
78 const volatile A cva = a; // { dg-error "deleted" }
79 sink_3_125(va); // { dg-error "no match" }
80 // { dg-message "candidate" "candidate note" { target *-*-* } 79 }
81 sink_3_125(cva); // { dg-error "no match" }
82 // { dg-message "candidate" "candidate note" { target *-*-* } 81 }
83 sink_3_125(v_source()); // { dg-error "no match" }
84 // { dg-message "candidate" "candidate note" { target *-*-* } 83 }
85 sink_3_125(cv_source()); // { dg-error "no match" }
86 // { dg-message "candidate" "candidate note" { target *-*-* } 85 }
87 return 0;
88 }
89
90 one sink_3_126( A&); // { dg-message "one sink_3_126|no known conversion" }
91 two sink_3_126(const A&); // { dg-message "two sink_3_126|no known conversion" }
92 six sink_3_126(const A&&); // { dg-message "six sink_3_126|no known conversion" }
93
94 int test3_126()
95 {
96 A a;
97 const A ca = a; // { dg-error "deleted" }
98 volatile A va;
99 const volatile A cva = a; // { dg-error "deleted" }
100 sink_3_126(va); // { dg-error "no match" }
101 // { dg-message "candidate" "candidate note" { target *-*-* } 100 }
102 sink_3_126(cva); // { dg-error "no match" }
103 // { dg-message "candidate" "candidate note" { target *-*-* } 102 }
104 sink_3_126(v_source()); // { dg-error "no match" }
105 // { dg-message "candidate" "candidate note" { target *-*-* } 104 }
106 sink_3_126(cv_source()); // { dg-error "no match" }
107 // { dg-message "candidate" "candidate note" { target *-*-* } 106 }
108 return 0;
109 }
110
111 one sink_3_127( A&); // { dg-message "one sink_3_127|no known conversion" }
112 two sink_3_127(const A&); // { dg-message "two sink_3_127|no known conversion" }
113 seven sink_3_127(volatile A&&); // { dg-message "seven sink_3_127|no known conversion" }
114
115 int test3_127()
116 {
117 A a;
118 const A ca = a; // { dg-error "deleted" }
119 volatile A va;
120 const volatile A cva = a; // { dg-error "deleted" }
121 sink_3_127(va); // { dg-error "lvalue" }
122 sink_3_127(cva); // { dg-error "no match" }
123 // { dg-message "candidate" "candidate note" { target *-*-* } 122 }
124 sink_3_127(cv_source()); // { dg-error "no match" }
125 // { dg-message "candidate" "candidate note" { target *-*-* } 124 }
126 return 0;
127 }
128
129 one sink_3_128( A&);
130 two sink_3_128(const A&);
131 eight sink_3_128(const volatile A&&); // { dg-message "" }
132
133 int test3_128()
134 {
135 A a;
136 const A ca = a; // { dg-error "deleted" }
137 volatile A va;
138 const volatile A cva = a; // { dg-error "deleted" }
139
140 sink_3_128(va); // { dg-error "lvalue" }
141 sink_3_128(cva); // { dg-error "lvalue" }
142 }
143
144 one sink_3_134( A&); // { dg-message "one sink_3_134|no known conversion" }
145 three sink_3_134(volatile A&); // { dg-message "three sink_3_134|no known conversion" }
146 four sink_3_134(const volatile A&); // { dg-message "four sink_3_134|no known conversion" }
147
148 int test3_134()
149 {
150 A a;
151 const A ca = a; // { dg-error "deleted" }
152 volatile A va;
153 const volatile A cva = a; // { dg-error "deleted" }
154 sink_3_134(source()); // { dg-error "no match" }
155 // { dg-message "candidate" "candidate note" { target *-*-* } 154 }
156 sink_3_134(c_source()); // { dg-error "no match" }
157 // { dg-message "candidate" "candidate note" { target *-*-* } 156 }
158 sink_3_134(v_source()); // { dg-error "no match" }
159 // { dg-message "candidate" "candidate note" { target *-*-* } 158 }
160 sink_3_134(cv_source()); // { dg-error "no match" }
161 // { dg-message "candidate" "candidate note" { target *-*-* } 160 }
162 return 0;
163 }
164
165 one sink_3_135( A&); // { dg-message "one sink_3_135|no known conversion" }
166 three sink_3_135(volatile A&); // { dg-message "three sink_3_135|no known conversion" }
167 five sink_3_135( A&&); // { dg-message "five sink_3_135|no known conversion" }
168
169 int test3_135()
170 {
171 A a;
172 const A ca = a; // { dg-error "deleted" }
173 volatile A va;
174 const volatile A cva = a; // { dg-error "deleted" }
175 sink_3_135(ca); // { dg-error "no match" }
176 // { dg-message "candidate" "candidate note" { target *-*-* } 175 }
177 sink_3_135(cva); // { dg-error "no match" }
178 // { dg-message "candidate" "candidate note" { target *-*-* } 177 }
179 sink_3_135(c_source()); // { dg-error "no match" }
180 // { dg-message "candidate" "candidate note" { target *-*-* } 179 }
181 sink_3_135(v_source()); // { dg-error "no match" }
182 // { dg-message "candidate" "candidate note" { target *-*-* } 181 }
183 sink_3_135(cv_source()); // { dg-error "no match" }
184 // { dg-message "candidate" "candidate note" { target *-*-* } 183 }
185 return 0;
186 }
187
188 one sink_3_136( A&); // { dg-message "one sink_3_136|no known conversion" }
189 three sink_3_136(volatile A&); // { dg-message "note" }
190 six sink_3_136(const A&&); // { dg-message "" }
191
192 int test3_136()
193 {
194 A a;
195 const A ca = a; // { dg-error "deleted" }
196 volatile A va;
197 const volatile A cva = a; // { dg-error "deleted" }
198 sink_3_136(ca); // { dg-error "lvalue" }
199 sink_3_136(cva); // { dg-error "no match" }
200 // { dg-message "candidate" "candidate note" { target *-*-* } 199 }
201 sink_3_136(v_source()); // { dg-error "no match" }
202 // { dg-message "candidate" "candidate note" { target *-*-* } 201 }
203 sink_3_136(cv_source()); // { dg-error "no match" }
204 // { dg-message "candidate" "candidate note" { target *-*-* } 203 }
205 return 0;
206 }
207
208 one sink_3_137( A&); // { dg-message "one sink_3_137|no known conversion" }
209 three sink_3_137(volatile A&); // { dg-message "note" }
210 seven sink_3_137(volatile A&&); // { dg-message "note" }
211
212 int test3_137()
213 {
214 A a;
215 const A ca = a; // { dg-error "deleted" }
216 volatile A va;
217 const volatile A cva = a; // { dg-error "deleted" }
218 sink_3_137(ca); // { dg-error "no match" }
219 // { dg-message "candidate" "candidate note" { target *-*-* } 218 }
220 sink_3_137(cva); // { dg-error "no match" }
221 // { dg-message "candidate" "candidate note" { target *-*-* } 220 }
222 sink_3_137(c_source()); // { dg-error "no match" }
223 // { dg-message "candidate" "candidate note" { target *-*-* } 222 }
224 sink_3_137(cv_source()); // { dg-error "no match" }
225 // { dg-message "candidate" "candidate note" { target *-*-* } 224 }
226 return 0;
227 }
228
229 one sink_3_138( A&);
230 three sink_3_138(volatile A&);
231 eight sink_3_138(const volatile A&&); // { dg-message "" }
232
233 int test3_138()
234 {
235 A a;
236 const A ca = a; // { dg-error "deleted" }
237 volatile A va;
238 const volatile A cva = a; // { dg-error "deleted" }
239 sink_3_138(ca); // { dg-error "lvalue" }
240 sink_3_138(cva); // { dg-error "lvalue" }
241 return 0;
242 }
243
244 one sink_3_145( A&); // { dg-message "one sink_3_145|no known conversion" }
245 four sink_3_145(const volatile A&); // { dg-message "note" }
246 five sink_3_145( A&&); // { dg-message "note" }
247
248 int test3_145()
249 {
250 A a;
251 const A ca = a; // { dg-error "deleted" }
252 volatile A va;
253 const volatile A cva = a; // { dg-error "deleted" }
254 sink_3_145(c_source()); // { dg-error "no match" }
255 // { dg-message "candidate" "candidate note" { target *-*-* } 254 }
256 sink_3_145(v_source()); // { dg-error "no match" }
257 // { dg-message "candidate" "candidate note" { target *-*-* } 256 }
258 sink_3_145(cv_source()); // { dg-error "no match" }
259 // { dg-message "candidate" "candidate note" { target *-*-* } 258 }
260 return 0;
261 }
262
263 one sink_3_146( A&); // { dg-message "one sink_3_146|no known conversion" }
264 four sink_3_146(const volatile A&); // { dg-message "note" }
265 six sink_3_146(const A&&); // { dg-message "note" }
266
267 int test3_146()
268 {
269 A a;
270 const A ca = a; // { dg-error "deleted" }
271 volatile A va;
272 const volatile A cva = a; // { dg-error "deleted" }
273 sink_3_146(v_source()); // { dg-error "no match" }
274 // { dg-message "candidate" "candidate note" { target *-*-* } 273 }
275 sink_3_146(cv_source()); // { dg-error "no match" }
276 // { dg-message "candidate" "candidate note" { target *-*-* } 275 }
277 return 0;
278 }
279
280 one sink_3_147( A&); // { dg-message "one sink_3_147|no known conversion" }
281 four sink_3_147(const volatile A&); // { dg-message "note" }
282 seven sink_3_147(volatile A&&); // { dg-message "note" }
283
284 int test3_147()
285 {
286 A a;
287 const A ca = a; // { dg-error "deleted" }
288 volatile A va;
289 const volatile A cva = a; // { dg-error "deleted" }
290 sink_3_147(c_source()); // { dg-error "no match" }
291 // { dg-message "candidate" "candidate note" { target *-*-* } 290 }
292 sink_3_147(cv_source()); // { dg-error "no match" }
293 // { dg-message "candidate" "candidate note" { target *-*-* } 292 }
294 return 0;
295 }
296
297 one sink_3_156( A&); // { dg-message "one sink_3_156|no known conversion" }
298 five sink_3_156( A&&); // { dg-message "note" }
299 six sink_3_156(const A&&); // { dg-message "" }
300
301 int test3_156()
302 {
303 A a;
304 const A ca = a; // { dg-error "deleted" }
305 volatile A va;
306 const volatile A cva = a; // { dg-error "deleted" }
307 sink_3_156(ca); // { dg-error "lvalue" }
308 sink_3_156(va); // { dg-error "no match" }
309 // { dg-message "candidate" "candidate note" { target *-*-* } 308 }
310 sink_3_156(cva); // { dg-error "no match" }
311 // { dg-message "candidate" "candidate note" { target *-*-* } 310 }
312 sink_3_156(v_source()); // { dg-error "no match" }
313 // { dg-message "candidate" "candidate note" { target *-*-* } 312 }
314 sink_3_156(cv_source()); // { dg-error "no match" }
315 // { dg-message "candidate" "candidate note" { target *-*-* } 314 }
316 return 0;
317 }
318
319 one sink_3_157( A&); // { dg-message "one sink_3_157|no known conversion" }
320 five sink_3_157( A&&); // { dg-message "note" }
321 seven sink_3_157(volatile A&&); // { dg-message "" }
322
323 int test3_157()
324 {
325 A a;
326 const A ca = a; // { dg-error "deleted" }
327 volatile A va;
328 const volatile A cva = a; // { dg-error "deleted" }
329 sink_3_157(ca); // { dg-error "no match" }
330 // { dg-message "candidate" "candidate note" { target *-*-* } 329 }
331 sink_3_157(va); // { dg-error "lvalue" }
332 sink_3_157(cva); // { dg-error "no match" }
333 // { dg-message "candidate" "candidate note" { target *-*-* } 332 }
334 sink_3_157(c_source()); // { dg-error "no match" }
335 // { dg-message "candidate" "candidate note" { target *-*-* } 334 }
336 sink_3_157(cv_source()); // { dg-error "no match" }
337 // { dg-message "candidate" "candidate note" { target *-*-* } 336 }
338 return 0;
339 }
340
341 one sink_3_158( A&);
342 five sink_3_158( A&&);
343 eight sink_3_158(const volatile A&&); // { dg-message "" }
344
345 int test3_158()
346 {
347 A a;
348 const A ca = a; // { dg-error "deleted" }
349 volatile A va;
350 const volatile A cva = a; // { dg-error "deleted" }
351 sink_3_158(ca); // { dg-error "lvalue" }
352 sink_3_158(va); // { dg-error "lvalue" }
353 sink_3_158(cva); // { dg-error "lvalue" }
354 return 0;
355 }
356
357 one sink_3_167( A&); // { dg-message "one sink_3_167|no known conversion" }
358 six sink_3_167(const A&&); // { dg-message "" }
359 seven sink_3_167(volatile A&&); // { dg-message "" }
360
361 int test3_167()
362 {
363 A a;
364 const A ca = a; // { dg-error "deleted" }
365 volatile A va;
366 const volatile A cva = a; // { dg-error "deleted" }
367 sink_3_167(ca); // { dg-error "lvalue" }
368 sink_3_167(va); // { dg-error "lvalue" }
369 sink_3_167(cva); // { dg-error "no match" }
370 // { dg-message "candidate" "candidate note" { target *-*-* } 369 }
371 sink_3_167(source()); // { dg-error "ambiguous" }
372 // { dg-message "candidate" "candidate note" { target *-*-* } 371 }
373 sink_3_167(cv_source()); // { dg-error "no match" }
374 // { dg-message "candidate" "candidate note" { target *-*-* } 373 }
375 return 0;
376 }
377
378 one sink_3_168( A&);
379 six sink_3_168(const A&&); // { dg-message "" }
380 eight sink_3_168(const volatile A&&); // { dg-message "" }
381
382 int test3_168()
383 {
384 A a;
385 const A ca = a; // { dg-error "deleted" }
386 volatile A va;
387 const volatile A cva = a; // { dg-error "deleted" }
388 sink_3_168(ca); // { dg-error "lvalue" }
389 sink_3_168(va); // { dg-error "lvalue" }
390 sink_3_168(cva); // { dg-error "lvalue" }
391 return 0;
392 }
393
394 one sink_3_178( A&);
395 seven sink_3_178(volatile A&&); // { dg-message "" }
396 eight sink_3_178(const volatile A&&); // { dg-message "" }
397
398 int test3_178()
399 {
400 A a;
401 const A ca = a; // { dg-error "deleted" }
402 volatile A va;
403 const volatile A cva = a; // { dg-error "deleted" }
404 sink_3_178(ca); // { dg-error "lvalue" }
405 sink_3_178(va); // { dg-error "lvalue" }
406 sink_3_178(cva); // { dg-error "lvalue" }
407 return 0;
408 }
409
410 two sink_3_234(const A&); // { dg-message "two sink_3_234|no known conversion" }
411 three sink_3_234(volatile A&); // { dg-message "note" }
412 four sink_3_234(const volatile A&); // { dg-message "note" }
413
414 int test3_234()
415 {
416 A a;
417 const A ca = a; // { dg-error "deleted" }
418 volatile A va;
419 const volatile A cva = a; // { dg-error "deleted" }
420 sink_3_234(a); // { dg-error "ambiguous" }
421 // { dg-message "candidate" "candidate note" { target *-*-* } 420 }
422 sink_3_234(v_source()); // { dg-error "no match" }
423 // { dg-message "candidate" "candidate note" { target *-*-* } 422 }
424 sink_3_234(cv_source()); // { dg-error "no match" }
425 // { dg-message "candidate" "candidate note" { target *-*-* } 424 }
426 return 0;
427 }
428
429 two sink_3_235(const A&); // { dg-message "two sink_3_235|no known conversion" }
430 three sink_3_235(volatile A&); // { dg-message "note" }
431 five sink_3_235( A&&); // { dg-message "note" }
432
433 int test3_235()
434 {
435 A a;
436 const A ca = a; // { dg-error "deleted" }
437 volatile A va;
438 const volatile A cva = a; // { dg-error "deleted" }
439 sink_3_235(a); // { dg-error "ambiguous" }
440 // { dg-message "candidate" "candidate note" { target *-*-* } 439 }
441 sink_3_235(cva); // { dg-error "no match" }
442 // { dg-message "candidate" "candidate note" { target *-*-* } 441 }
443 sink_3_235(v_source()); // { dg-error "no match" }
444 // { dg-message "candidate" "candidate note" { target *-*-* } 443 }
445 sink_3_235(cv_source()); // { dg-error "no match" }
446 // { dg-message "candidate" "candidate note" { target *-*-* } 445 }
447 return 0;
448 }
449
450 two sink_3_236(const A&); // { dg-message "two sink_3_236|no known conversion" }
451 three sink_3_236(volatile A&); // { dg-message "note" }
452 six sink_3_236(const A&&); // { dg-message "note" }
453
454 int test3_236()
455 {
456 A a;
457 const A ca = a; // { dg-error "deleted" }
458 volatile A va;
459 const volatile A cva = a; // { dg-error "deleted" }
460 sink_3_236(a); // { dg-error "ambiguous" }
461 // { dg-message "candidate" "candidate note" { target *-*-* } 460 }
462 sink_3_236(cva); // { dg-error "no match" }
463 // { dg-message "candidate" "candidate note" { target *-*-* } 462 }
464 sink_3_236(v_source()); // { dg-error "no match" }
465 // { dg-message "candidate" "candidate note" { target *-*-* } 464 }
466 sink_3_236(cv_source()); // { dg-error "no match" }
467 // { dg-message "candidate" "candidate note" { target *-*-* } 466 }
468 return 0;
469 }
470
471 two sink_3_237(const A&); // { dg-message "two sink_3_237|no known conversion" }
472 three sink_3_237(volatile A&); // { dg-message "note" }
473 seven sink_3_237(volatile A&&); // { dg-message "note" }
474
475 int test3_237()
476 {
477 A a;
478 const A ca = a; // { dg-error "deleted" }
479 volatile A va;
480 const volatile A cva = a; // { dg-error "deleted" }
481 sink_3_237(a); // { dg-error "ambiguous" }
482 // { dg-message "candidate" "candidate note" { target *-*-* } 481 }
483 sink_3_237(cva); // { dg-error "no match" }
484 // { dg-message "candidate" "candidate note" { target *-*-* } 483 }
485 sink_3_237(cv_source()); // { dg-error "no match" }
486 // { dg-message "candidate" "candidate note" { target *-*-* } 485 }
487 return 0;
488 }
489
490 two sink_3_238(const A&); // { dg-message "two sink_3_238|no known conversion" }
491 three sink_3_238(volatile A&); // { dg-message "three sink_3_238|no known conversion" }
492 eight sink_3_238(const volatile A&&); // { dg-message "eight sink_3_238|no known conversion" }
493
494 int test3_238()
495 {
496 A a;
497 const A ca = a; // { dg-error "deleted" }
498 volatile A va;
499 const volatile A cva = a; // { dg-error "deleted" }
500 sink_3_238(a); // { dg-error "ambiguous" }
501 // { dg-message "candidate" "candidate note" { target *-*-* } 500 }
502 sink_3_238(cva); // { dg-error "lvalue" }
503 return 0;
504 }
505
506 two sink_3_245(const A&); // { dg-message "two sink_3_245|no known conversion" }
507 four sink_3_245(const volatile A&); // { dg-message "four sink_3_245|no known conversion" }
508 five sink_3_245( A&&); // { dg-message "five sink_3_245|no known conversion" }
509
510 int test3_245()
511 {
512 A a;
513 const A ca = a; // { dg-error "deleted" }
514 volatile A va;
515 const volatile A cva = a; // { dg-error "deleted" }
516 sink_3_245(v_source()); // { dg-error "no match" }
517 // { dg-message "candidate" "candidate note" { target *-*-* } 516 }
518 sink_3_245(cv_source()); // { dg-error "no match" }
519 // { dg-message "candidate" "candidate note" { target *-*-* } 518 }
520 return 0;
521 }
522
523 two sink_3_246(const A&); // { dg-message "two sink_3_246|no known conversion" }
524 four sink_3_246(const volatile A&); // { dg-message "four sink_3_246|no known conversion" }
525 six sink_3_246(const A&&); // { dg-message "six sink_3_246|no known conversion" }
526
527 int test3_246()
528 {
529 A a;
530 const A ca = a; // { dg-error "deleted" }
531 volatile A va;
532 const volatile A cva = a; // { dg-error "deleted" }
533 sink_3_246(v_source()); // { dg-error "no match" }
534 // { dg-message "candidate" "candidate note" { target *-*-* } 533 }
535 sink_3_246(cv_source()); // { dg-error "no match" }
536 // { dg-message "candidate" "candidate note" { target *-*-* } 535 }
537 return 0;
538 }
539
540 two sink_3_247(const A&); // { dg-message "two sink_3_247|no known conversion" }
541 four sink_3_247(const volatile A&); // { dg-message "four sink_3_247|no known conversion" }
542 seven sink_3_247(volatile A&&); // { dg-message "seven sink_3_247|no known conversion" }
543
544 int test3_247()
545 {
546 A a;
547 const A ca = a; // { dg-error "deleted" }
548 volatile A va;
549 const volatile A cva = a; // { dg-error "deleted" }
550 sink_3_247(cv_source()); // { dg-error "no match" }
551 // { dg-message "candidate" "candidate note" { target *-*-* } 550 }
552 return 0;
553 }
554
555 two sink_3_256(const A&); // { dg-message "two sink_3_256|no known conversion" }
556 five sink_3_256( A&&); // { dg-message "five sink_3_256|no known conversion" }
557 six sink_3_256(const A&&); // { dg-message "six sink_3_256|no known conversion" }
558
559 int test3_256()
560 {
561 A a;
562 const A ca = a; // { dg-error "deleted" }
563 volatile A va;
564 const volatile A cva = a; // { dg-error "deleted" }
565 sink_3_256(va); // { dg-error "no match" }
566 // { dg-message "candidate" "candidate note" { target *-*-* } 565 }
567 sink_3_256(cva); // { dg-error "no match" }
568 // { dg-message "candidate" "candidate note" { target *-*-* } 567 }
569 sink_3_256(v_source()); // { dg-error "no match" }
570 // { dg-message "candidate" "candidate note" { target *-*-* } 569 }
571 sink_3_256(cv_source()); // { dg-error "no match" }
572 // { dg-message "candidate" "candidate note" { target *-*-* } 571 }
573 return 0;
574 }
575
576 two sink_3_257(const A&); // { dg-message "two sink_3_257|no known conversion" }
577 five sink_3_257( A&&); // { dg-message "five sink_3_257|no known conversion" }
578 seven sink_3_257(volatile A&&); // { dg-message "seven sink_3_257|no known conversion" }
579
580 int test3_257()
581 {
582 A a;
583 const A ca = a; // { dg-error "deleted" }
584 volatile A va;
585 const volatile A cva = a; // { dg-error "deleted" }
586 sink_3_257(va); // { dg-error "lvalue" }
587 sink_3_257(cva); // { dg-error "no match" }
588 // { dg-message "candidate" "candidate note" { target *-*-* } 587 }
589 sink_3_257(cv_source()); // { dg-error "no match" }
590 // { dg-message "candidate" "candidate note" { target *-*-* } 589 }
591 return 0;
592 }
593
594 two sink_3_258(const A&);
595 five sink_3_258( A&&);
596 eight sink_3_258(const volatile A&&); // { dg-message "" }
597
598 int test3_258()
599 {
600 A a;
601 const A ca = a; // { dg-error "deleted" }
602 volatile A va;
603 const volatile A cva = a; // { dg-error "deleted" }
604 sink_3_258(va); // { dg-error "lvalue" }
605 sink_3_258(cva); // { dg-error "lvalue" }
606 return 0;
607 }
608
609 two sink_3_267(const A&); // { dg-message "two sink_3_267|no known conversion" }
610 six sink_3_267(const A&&); // { dg-message "six sink_3_267|no known conversion" }
611 seven sink_3_267(volatile A&&); // { dg-message "seven sink_3_267|no known conversion" }
612
613 int test3_267()
614 {
615 A a;
616 const A ca = a; // { dg-error "deleted" }
617 volatile A va;
618 const volatile A cva = a; // { dg-error "deleted" }
619 sink_3_267(va); // { dg-error "lvalue" }
620 sink_3_267(cva); // { dg-error "no match" }
621 // { dg-message "candidate" "candidate note" { target *-*-* } 620 }
622 sink_3_267(source()); // { dg-error "ambiguous" }
623 // { dg-message "candidate" "candidate note" { target *-*-* } 622 }
624 sink_3_267(cv_source()); // { dg-error "no match" }
625 // { dg-message "candidate" "candidate note" { target *-*-* } 624 }
626 return 0;
627 }
628
629 two sink_3_268(const A&);
630 six sink_3_268(const A&&);
631 eight sink_3_268(const volatile A&&); // { dg-message "" }
632
633 int test3_268()
634 {
635 A a;
636 const A ca = a; // { dg-error "deleted" }
637 volatile A va;
638 const volatile A cva = a; // { dg-error "deleted" }
639 sink_3_268(va); // { dg-error "lvalue" }
640 sink_3_268(cva); // { dg-error "lvalue" }
641 return 0;
642 }
643
644 two sink_3_278(const A&);
645 seven sink_3_278(volatile A&&); // { dg-message "" }
646 eight sink_3_278(const volatile A&&); // { dg-message "" }
647
648 int test3_278()
649 {
650 A a;
651 const A ca = a; // { dg-error "deleted" }
652 volatile A va;
653 const volatile A cva = a; // { dg-error "deleted" }
654 sink_3_278(va); // { dg-error "lvalue" }
655 sink_3_278(cva); // { dg-error "lvalue" }
656 return 0;
657 }
658
659 three sink_3_345(volatile A&); // { dg-message "three sink_3_345|no known conversion" }
660 four sink_3_345(const volatile A&); // { dg-message "four sink_3_345|no known conversion" }
661 five sink_3_345( A&&); // { dg-message "five sink_3_345|no known conversion" }
662
663 int test3_345()
664 {
665 A a;
666 const A ca = a; // { dg-error "deleted" }
667 volatile A va;
668 const volatile A cva = a; // { dg-error "deleted" }
669 sink_3_345(c_source()); // { dg-error "no match" }
670 // { dg-message "candidate" "candidate note" { target *-*-* } 669 }
671 sink_3_345(v_source()); // { dg-error "no match" }
672 // { dg-message "candidate" "candidate note" { target *-*-* } 671 }
673 sink_3_345(cv_source()); // { dg-error "no match" }
674 // { dg-message "candidate" "candidate note" { target *-*-* } 673 }
675 return 0;
676 }
677
678 three sink_3_346(volatile A&); // { dg-message "three sink_3_346|no known conversion" }
679 four sink_3_346(const volatile A&); // { dg-message "four sink_3_346|no known conversion" }
680 six sink_3_346(const A&&); // { dg-message "six sink_3_346|no known conversion" }
681
682 int test3_346()
683 {
684 A a;
685 const A ca = a; // { dg-error "deleted" }
686 volatile A va;
687 const volatile A cva = a; // { dg-error "deleted" }
688 sink_3_346(v_source()); // { dg-error "no match" }
689 // { dg-message "candidate" "candidate note" { target *-*-* } 688 }
690 sink_3_346(cv_source()); // { dg-error "no match" }
691 // { dg-message "candidate" "candidate note" { target *-*-* } 690 }
692 return 0;
693 }
694
695 three sink_3_347(volatile A&); // { dg-message "three sink_3_347|no known conversion" }
696 four sink_3_347(const volatile A&); // { dg-message "four sink_3_347|no known conversion" }
697 seven sink_3_347(volatile A&&); // { dg-message "seven sink_3_347|no known conversion" }
698
699 int test3_347()
700 {
701 A a;
702 const A ca = a; // { dg-error "deleted" }
703 volatile A va;
704 const volatile A cva = a; // { dg-error "deleted" }
705 sink_3_347(c_source()); // { dg-error "no match" }
706 // { dg-message "candidate" "candidate note" { target *-*-* } 705 }
707 sink_3_347(cv_source()); // { dg-error "no match" }
708 // { dg-message "candidate" "candidate note" { target *-*-* } 707 }
709 return 0;
710 }
711
712 three sink_3_356(volatile A&); // { dg-message "three sink_3_356|no known conversion" }
713 five sink_3_356( A&&); // { dg-message "five sink_3_356|no known conversion" }
714 six sink_3_356(const A&&); // { dg-message "six sink_3_356|no known conversion" }
715
716 int test3_356()
717 {
718 A a;
719 const A ca = a; // { dg-error "deleted" }
720 volatile A va;
721 const volatile A cva = a; // { dg-error "deleted" }
722 sink_3_356(ca); // { dg-error "lvalue" }
723 sink_3_356(cva); // { dg-error "no match" }
724 // { dg-message "candidate" "candidate note" { target *-*-* } 723 }
725 sink_3_356(v_source()); // { dg-error "no match" }
726 // { dg-message "candidate" "candidate note" { target *-*-* } 725 }
727 sink_3_356(cv_source()); // { dg-error "no match" }
728 // { dg-message "candidate" "candidate note" { target *-*-* } 727 }
729 return 0;
730 }
731
732 three sink_3_357(volatile A&); // { dg-message "three sink_3_357|no known conversion" }
733 five sink_3_357( A&&); // { dg-message "five sink_3_357|no known conversion" }
734 seven sink_3_357(volatile A&&); // { dg-message "seven sink_3_357|no known conversion" }
735
736 int test3_357()
737 {
738 A a;
739 const A ca = a; // { dg-error "deleted" }
740 volatile A va;
741 const volatile A cva = a; // { dg-error "deleted" }
742 sink_3_357(ca); // { dg-error "no match" }
743 // { dg-message "candidate" "candidate note" { target *-*-* } 742 }
744 sink_3_357(cva); // { dg-error "no match" }
745 // { dg-message "candidate" "candidate note" { target *-*-* } 744 }
746 sink_3_357(c_source()); // { dg-error "no match" }
747 // { dg-message "candidate" "candidate note" { target *-*-* } 746 }
748 sink_3_357(cv_source()); // { dg-error "no match" }
749 // { dg-message "candidate" "candidate note" { target *-*-* } 748 }
750 return 0;
751 }
752
753 three sink_3_358(volatile A&);
754 five sink_3_358( A&&);
755 eight sink_3_358(const volatile A&&); // { dg-message "" }
756
757 int test3_358()
758 {
759 A a;
760 const A ca = a; // { dg-error "deleted" }
761 volatile A va;
762 const volatile A cva = a; // { dg-error "deleted" }
763 sink_3_358(ca); // { dg-error "lvalue" }
764 sink_3_358(cva); // { dg-error "lvalue" }
765 return 0;
766 }
767
768 three sink_3_367(volatile A&); // { dg-message "three sink_3_367|no known conversion" }
769 six sink_3_367(const A&&); // { dg-message "six sink_3_367|no known conversion" }
770 seven sink_3_367(volatile A&&); // { dg-message "seven sink_3_367|no known conversion" }
771
772 int test3_367()
773 {
774 A a;
775 const A ca = a; // { dg-error "deleted" }
776 volatile A va;
777 const volatile A cva = a; // { dg-error "deleted" }
778 sink_3_367(ca); // { dg-error "lvalue" }
779 sink_3_367(cva); // { dg-error "no match" }
780 // { dg-message "candidate" "candidate note" { target *-*-* } 779 }
781 sink_3_367(source()); // { dg-error "ambiguous" }
782 // { dg-message "candidate" "candidate note" { target *-*-* } 781 }
783 sink_3_367(cv_source()); // { dg-error "no match" }
784 // { dg-message "candidate" "candidate note" { target *-*-* } 783 }
785 return 0;
786 }
787
788 three sink_3_368(volatile A&);
789 six sink_3_368(const A&&); // { dg-message "" }
790 eight sink_3_368(const volatile A&&); // { dg-message "" }
791
792 int test3_368()
793 {
794 A a;
795 const A ca = a; // { dg-error "deleted" }
796 volatile A va;
797 const volatile A cva = a; // { dg-error "deleted" }
798 sink_3_368(ca); // { dg-error "lvalue" }
799 sink_3_368(cva); // { dg-error "lvalue" }
800 return 0;
801 }
802
803 three sink_3_378(volatile A&);
804 seven sink_3_378(volatile A&&);
805 eight sink_3_378(const volatile A&&); // { dg-message "" }
806
807 int test3_378()
808 {
809 A a;
810 const A ca = a; // { dg-error "deleted" }
811 volatile A va;
812 const volatile A cva = a; // { dg-error "deleted" }
813 sink_3_378(ca); // { dg-error "lvalue" }
814 sink_3_378(cva); // { dg-error "lvalue" }
815 return 0;
816 }
817
818 four sink_3_456(const volatile A&); // { dg-message "note" }
819 five sink_3_456( A&&); // { dg-message "note" }
820 six sink_3_456(const A&&); // { dg-message "note" }
821
822 int test3_456()
823 {
824 A a;
825 const A ca = a; // { dg-error "deleted" }
826 volatile A va;
827 const volatile A cva = a; // { dg-error "deleted" }
828 sink_3_456(v_source()); // { dg-error "no match" }
829 // { dg-message "candidate" "candidate note" { target *-*-* } 828 }
830 sink_3_456(cv_source()); // { dg-error "no match" }
831 // { dg-message "candidate" "candidate note" { target *-*-* } 830 }
832 return 0;
833 }
834
835 four sink_3_457(const volatile A&); // { dg-message "note" }
836 five sink_3_457( A&&); // { dg-message "note" }
837 seven sink_3_457(volatile A&&); // { dg-message "note" }
838
839 int test3_457()
840 {
841 A a;
842 const A ca = a; // { dg-error "deleted" }
843 volatile A va;
844 const volatile A cva = a; // { dg-error "deleted" }
845 sink_3_457(c_source()); // { dg-error "no match" }
846 // { dg-message "candidate" "candidate note" { target *-*-* } 845 }
847 sink_3_457(cv_source()); // { dg-error "no match" }
848 // { dg-message "candidate" "candidate note" { target *-*-* } 847 }
849 return 0;
850 }
851
852 four sink_3_467(const volatile A&); // { dg-message "note" }
853 six sink_3_467(const A&&); // { dg-message "note" }
854 seven sink_3_467(volatile A&&); // { dg-message "note" }
855
856 int test3_467()
857 {
858 A a;
859 const A ca = a; // { dg-error "deleted" }
860 volatile A va;
861 const volatile A cva = a; // { dg-error "deleted" }
862 sink_3_467(source()); // { dg-error "ambiguous" }
863 // { dg-message "candidate" "candidate note" { target *-*-* } 862 }
864 sink_3_467(cv_source()); // { dg-error "no match" }
865 // { dg-message "candidate" "candidate note" { target *-*-* } 864 }
866 return 0;
867 }
868
869 five sink_3_567( A&&); // { dg-message "five sink_3_567|no known conversion" }
870 six sink_3_567(const A&&); // { dg-message "six sink_3_567|no known conversion" }
871 seven sink_3_567(volatile A&&); // { dg-message "seven sink_3_567|no known conversion" }
872
873 int test3_567()
874 {
875 A a;
876 const A ca = a; // { dg-error "deleted" }
877 volatile A va;
878 const volatile A cva = a; // { dg-error "deleted" }
879 sink_3_567(a); // { dg-error "lvalue" }
880 sink_3_567(ca); // { dg-error "lvalue" }
881 sink_3_567(va); // { dg-error "lvalue" }
882 sink_3_567(cva); // { dg-error "no match" }
883 // { dg-message "candidate" "candidate note" { target *-*-* } 882 }
884 sink_3_567(cv_source()); // { dg-error "no match" }
885 // { dg-message "candidate" "candidate note" { target *-*-* } 884 }
886 return 0;
887 }
888
889 five sink_3_568( A&&); // { dg-message "" }
890 six sink_3_568(const A&&); // { dg-message "" }
891 eight sink_3_568(const volatile A&&); // { dg-message "" }
892
893 int test3_568()
894 {
895 A a;
896 const A ca = a; // { dg-error "deleted" }
897 volatile A va;
898 const volatile A cva = a; // { dg-error "deleted" }
899 sink_3_568(a); // { dg-error "lvalue" }
900 sink_3_568(ca); // { dg-error "lvalue" }
901 sink_3_568(va); // { dg-error "lvalue" }
902 sink_3_568(cva); // { dg-error "lvalue" }
903 return 0;
904 }
905
906 five sink_3_578( A&&); // { dg-message "" }
907 seven sink_3_578(volatile A&&); // { dg-message "" }
908 eight sink_3_578(const volatile A&&); // { dg-message "" }
909
910 int test3_578()
911 {
912 A a;
913 const A ca = a; // { dg-error "deleted" }
914 volatile A va;
915 const volatile A cva = a; // { dg-error "deleted" }
916 sink_3_578(a); // { dg-error "lvalue" }
917 sink_3_578(ca); // { dg-error "lvalue" }
918 sink_3_578(va); // { dg-error "lvalue" }
919 sink_3_578(cva); // { dg-error "lvalue" }
920 return 0;
921 }
922
923 six sink_3_678(const A&&); // { dg-message "six sink_3_678|no known conversion" }
924 seven sink_3_678(volatile A&&); // { dg-message "seven sink_3_678|no known conversion" }
925 eight sink_3_678(const volatile A&&); // { dg-message "eight sink_3_678|no known conversion" }
926
927 int test3_678()
928 {
929 A a;
930 const A ca = a; // { dg-error "deleted" }
931 volatile A va;
932 const volatile A cva = a; // { dg-error "deleted" }
933 sink_3_678(a); // { dg-error "no match" }
934 // { dg-message "candidate" "candidate note" { target *-*-* } 933 }
935 sink_3_678(ca); // { dg-error "lvalue" }
936 sink_3_678(va); // { dg-error "lvalue" }
937 sink_3_678(cva); // { dg-error "lvalue" }
938 sink_3_678(source()); // { dg-error "ambiguous" }
939 // { dg-message "candidate" "candidate note" { target *-*-* } 938 }
940 return 0;
941 }
942
943 int main()
944 {
945 return test3_123() + test3_125() + test3_126() + test3_127() +
946 test3_135() + test3_136() + test3_137() + test3_156() +
947 test3_157() + test3_167() + test3_234() + test3_235() +
948 test3_236() + test3_237() + test3_238() + test3_256() +
949 test3_257() + test3_267() + test3_356() + test3_357() +
950 test3_367() + test3_467() + test3_567() + test3_678();
951 }