OSDN Git Service

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