* decl.c (make_typename_type): s/parameters/arguments/.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / rv6n.C
blob0ebbe33e1d1bf530f56b7a106ae31687e048d179
1 // I, Howard Hinnant, hereby place this code in the public domain.
3 // Test overload resolution among reference types
5 // { dg-do compile { target c++11 } }
6 // { dg-options "-fno-ipa-icf" }
8 template <bool> struct sa;
9 template <> struct sa<true> {};
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];};
20 struct A
22     A();
23     A(const volatile A&&);
26                A    source();
27 const          A  c_source();
28       volatile A  v_source();
29 const volatile A cv_source();
31 // 6 at a time
33 one   sink_6_123456(               A&);  // { dg-message "one sink_6_123456|no known conversion" }
34 two   sink_6_123456(const          A&);
35 three sink_6_123456(volatile       A&);
36 four  sink_6_123456(const volatile A&);
37 five  sink_6_123456(               A&&);
38 six   sink_6_123456(const          A&&);
40 int test6_123456()
42                    A a;
43     const          A ca = a; // { dg-error "deleted" }
44           volatile A va;
45     const volatile A cva = a; // { dg-error "deleted" }
46     sink_6_123456(v_source());   // { dg-error "" }
47     sink_6_123456(cv_source());  // { dg-error "" }
48     return 0;
51 one   sink_6_123457(               A&);  // { dg-message "one sink_6_123457|no known conversion" }
52 two   sink_6_123457(const          A&);
53 three sink_6_123457(volatile       A&);
54 four  sink_6_123457(const volatile A&);
55 five  sink_6_123457(               A&&);
56 seven sink_6_123457(volatile       A&&);
58 int test6_123457()
60                    A a;
61     const          A ca = a; // { dg-error "deleted" }
62           volatile A va;
63     const volatile A cva = a; // { dg-error "deleted" }
64     sink_6_123457(cv_source());  // { dg-error "" }
65     return 0;
68 two   sink_6_235678(const          A&);
69 three sink_6_235678(volatile       A&);
70 five  sink_6_235678(               A&&);
71 six   sink_6_235678(const          A&&);
72 seven sink_6_235678(volatile       A&&);
73 eight sink_6_235678(const volatile A&&);  // { dg-message "" }
75 int test6_235678()
77                    A a;
78     const          A ca = a; // { dg-error "deleted" }
79           volatile A va;
80     const volatile A cva = a; // { dg-error "deleted" }
81     sink_6_235678(a);  // { dg-error "" }
82     sink_6_235678(cva);         // { dg-error "" }
83     return 0;
86 two   sink_6_234678(const          A&);
87 three sink_6_234678(volatile       A&);
88 four  sink_6_234678(const volatile A&);
89 six   sink_6_234678(const          A&&);
90 seven sink_6_234678(volatile       A&&);
91 eight sink_6_234678(const volatile A&&);
93 int test6_234678()
95                    A a;
96     const          A ca = a; // { dg-error "deleted" }
97           volatile A va;
98     const volatile A cva = a; // { dg-error "deleted" }
99     sink_6_234678(a);         // { dg-error "" }
100     sink_6_234678(source());  // { dg-error "" }
101     return 0;
104 two   sink_6_234578(const          A&);
105 three sink_6_234578(volatile       A&);
106 four  sink_6_234578(const volatile A&);
107 five  sink_6_234578(               A&&);
108 seven sink_6_234578(volatile       A&&);
109 eight sink_6_234578(const volatile A&&);
111 int test6_234578()
113                    A a;
114     const          A ca = a; // { dg-error "deleted" }
115           volatile A va;
116     const volatile A cva = a; // { dg-error "deleted" }
117     sink_6_234578(a);  // { dg-error "" }
118     return 0;
121 two   sink_6_234568(const          A&);
122 three sink_6_234568(volatile       A&);
123 four  sink_6_234568(const volatile A&);
124 five  sink_6_234568(               A&&);
125 six   sink_6_234568(const          A&&);
126 eight sink_6_234568(const volatile A&&);
128 int test6_234568()
130                    A a;
131     const          A ca = a; // { dg-error "deleted" }
132           volatile A va;
133     const volatile A cva = a; // { dg-error "deleted" }
134     sink_6_234568(a);  // { dg-error "" }
135     return 0;
138 two   sink_6_234567(const          A&);  // { dg-message "two sink_6_234567|no known conversion" }
139 three sink_6_234567(volatile       A&);
140 four  sink_6_234567(const volatile A&);
141 five  sink_6_234567(               A&&);
142 six   sink_6_234567(const          A&&);
143 seven sink_6_234567(volatile       A&&);
145 int test6_234567()
147                    A a;
148     const          A ca = a; // { dg-error "deleted" }
149           volatile A va;
150     const volatile A cva = a; // { dg-error "deleted" }
151     sink_6_234567(a);            // { dg-error "" }
152     sink_6_234567(cv_source());  // { dg-error "" }
153     return 0;
156 one   sink_6_134678(               A&);
157 three sink_6_134678(volatile       A&);
158 four  sink_6_134678(const volatile A&);
159 six   sink_6_134678(const          A&&);
160 seven sink_6_134678(volatile       A&&);
161 eight sink_6_134678(const volatile A&&);
163 int test6_134678()
165                    A a;
166     const          A ca = a; // { dg-error "deleted" }
167           volatile A va;
168     const volatile A cva = a; // { dg-error "deleted" }
169     sink_6_134678(source());  // { dg-error "" }
170     return 0;
173 one   sink_6_124678(               A&);
174 two   sink_6_124678(const          A&);
175 four  sink_6_124678(const volatile A&);
176 six   sink_6_124678(const          A&&);
177 seven sink_6_124678(volatile       A&&);
178 eight sink_6_124678(const volatile A&&);
180 int test6_124678()
182                    A a;
183     const          A ca = a; // { dg-error "deleted" }
184           volatile A va;
185     const volatile A cva = a; // { dg-error "deleted" }
186     sink_6_124678(source());  // { dg-error "" }
187     return 0;
190 one   sink_6_123678(               A&);
191 two   sink_6_123678(const          A&);
192 three sink_6_123678(volatile       A&);
193 six   sink_6_123678(const          A&&);
194 seven sink_6_123678(volatile       A&&);
195 eight sink_6_123678(const volatile A&&);  // { dg-message "" }
197 int test6_123678()
199                    A a;
200     const          A ca = a; // { dg-error "deleted" }
201           volatile A va;
202     const volatile A cva = a; // { dg-error "deleted" }
203     sink_6_123678(cva);         // { dg-error "" }
204     sink_6_123678(source());  // { dg-error "" }
205     return 0;
208 one   sink_6_123567(               A&);  // { dg-message "one sink_6_123567|no known conversion" }
209 two   sink_6_123567(const          A&);
210 three sink_6_123567(volatile       A&);
211 five  sink_6_123567(               A&&);
212 six   sink_6_123567(const          A&&);
213 seven sink_6_123567(volatile       A&&);
215 int test6_123567()
217                    A a;
218     const          A ca = a; // { dg-error "deleted" }
219           volatile A va;
220     const volatile A cva = a; // { dg-error "deleted" }
221     sink_6_123567(cva);          // { dg-error "" }
222     sink_6_123567(cv_source());  // { dg-error "" }
223     return 0;
226 one   sink_6_123568(               A&);
227 two   sink_6_123568(const          A&);
228 three sink_6_123568(volatile       A&);
229 five  sink_6_123568(               A&&);
230 six   sink_6_123568(const          A&&);
231 eight sink_6_123568(const volatile A&&); // { dg-message "" }
233 int test6_123568()
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_6_123568(cva); // { dg-error "" }
240     return 0;
243 one   sink_6_123578(               A&);
244 two   sink_6_123578(const          A&);
245 three sink_6_123578(volatile       A&);
246 five  sink_6_123578(               A&&);
247 seven sink_6_123578(volatile       A&&);
248 eight sink_6_123578(const volatile A&&); // { dg-message "" }
250 int test6_123578()
252                    A a;
253     const          A ca = a; // { dg-error "deleted" }
254           volatile A va;
255     const volatile A cva = a; // { dg-error "deleted" }
256     sink_6_123578(cva);         // { dg-error "" }
257     return 0;
260 one   sink_6_123467(               A&);  // { dg-message "one sink_6_123467|no known conversion" }
261 two   sink_6_123467(const          A&);
262 three sink_6_123467(volatile       A&);
263 four  sink_6_123467(const volatile A&);
264 six   sink_6_123467(const          A&&);
265 seven sink_6_123467(volatile       A&&);
267 int test6_123467()
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_6_123467(source());     // { dg-error "" }
274     sink_6_123467(cv_source());  // { dg-error "" }
275     return 0;
278 one   sink_6_124567(               A&);  // { dg-message "one sink_6_124567|no known conversion" }
279 two   sink_6_124567(const          A&);
280 four  sink_6_124567(const volatile A&);
281 five  sink_6_124567(               A&&);
282 six   sink_6_124567(const          A&&);
283 seven sink_6_124567(volatile       A&&);
285 int test6_124567()
287                    A a;
288     const          A ca = a; // { dg-error "deleted" }
289           volatile A va;
290     const volatile A cva = a; // { dg-error "deleted" }
291     sink_6_124567(cv_source());  // { dg-error "" }
292     return 0;
295 one   sink_6_125678(               A&);
296 two   sink_6_125678(const          A&);
297 five  sink_6_125678(               A&&);
298 six   sink_6_125678(const          A&&);
299 seven sink_6_125678(volatile       A&&); // { dg-message "" }
300 eight sink_6_125678(const volatile A&&); // { dg-message "" }
302 int test6_125678()
304                    A a;
305     const          A ca = a; // { dg-error "deleted" }
306           volatile A va;
307     const volatile A cva = a; // { dg-error "deleted" }
308     sink_6_125678(va);          // { dg-error "" }
309     sink_6_125678(cva);         // { dg-error "" }
310     return 0;
313 one   sink_6_134567(               A&);  // { dg-message "one sink_6_134567|no known conversion" }
314 three sink_6_134567(volatile       A&);
315 four  sink_6_134567(const volatile A&);
316 five  sink_6_134567(               A&&);
317 six   sink_6_134567(const          A&&);
318 seven sink_6_134567(volatile       A&&);
320 int test6_134567()
322                    A a;
323     const          A ca = a; // { dg-error "deleted" }
324           volatile A va;
325     const volatile A cva = a; // { dg-error "deleted" }
326     sink_6_134567(cv_source());  // { dg-error "" }
327     return 0;
330 one   sink_6_135678(               A&);
331 three sink_6_135678(volatile       A&);
332 five  sink_6_135678(               A&&);
333 six   sink_6_135678(const          A&&); // { dg-message "" }
334 seven sink_6_135678(volatile       A&&);
335 eight sink_6_135678(const volatile A&&); // { dg-message "" }
337 int test6_135678()
339                    A a;
340     const          A ca = a; // { dg-error "deleted" }
341           volatile A va;
342     const volatile A cva = a; // { dg-error "deleted" }
343     sink_6_135678(ca);          // { dg-error "" }
344     sink_6_135678(cva);         // { dg-error "" }
345     return 0;
348 int main()
350     return test6_235678() + test6_234678() + test6_234578() + test6_234568() +
351            test6_234567() + test6_134678() + test6_124678() + test6_123678() +
352            test6_123567();