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