OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.dg/] [cpp0x/] [rv2n.C] - Blame information for rev 338

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 301 jeremybenn
// 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  struct sa;
9
template <> struct sa {};
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
// 2 at a time
32
 
33
one   sink_2_12(               A&);  // { dg-message "candidates|argument" }
34
two   sink_2_12(const          A&);  // { dg-message "note|argument" }
35
 
36
int test2_12()
37
{
38
                   A a;
39
    const          A ca = a;
40
          volatile A va;
41
    const volatile A cva = a;
42
    sink_2_12(va);           // { dg-error "no match" }
43
    sink_2_12(cva);          // { dg-error "no match" }
44
    sink_2_12(v_source());   // { dg-error "no match" }
45
    sink_2_12(cv_source());  // { dg-error "no match" }
46
    return 0;
47
}
48
 
49
one   sink_2_13(               A&);  // { dg-message "candidates|argument" }
50
three sink_2_13(volatile       A&);  // { dg-message "note|argument" }
51
 
52
int test2_13()
53
{
54
                   A a;
55
    const          A ca = a;
56
          volatile A va;
57
    const volatile A cva = a;
58
    sink_2_13(ca);           // { dg-error "no match" }
59
    sink_2_13(cva);          // { dg-error "no match" }
60
    sink_2_13(source());     // { dg-error "no match" }
61
    sink_2_13(c_source());   // { dg-error "no match" }
62
    sink_2_13(v_source());   // { dg-error "no match" }
63
    sink_2_13(cv_source());  // { dg-error "no match" }
64
    return 0;
65
}
66
 
67
one   sink_2_14(               A&);  // { dg-message "candidates|argument" }
68
four  sink_2_14(const volatile A&);  // { dg-message "note|argument" }
69
 
70
int test2_14()
71
{
72
                   A a;
73
    const          A ca = a;
74
          volatile A va;
75
    const volatile A cva = a;
76
    sink_2_14(source());     // { dg-error "no match" }
77
    sink_2_14(c_source());   // { dg-error "no match" }
78
    sink_2_14(v_source());   // { dg-error "no match" }
79
    sink_2_14(cv_source());  // { dg-error "no match" }
80
    return 0;
81
}
82
 
83
one   sink_2_15(               A&);  // { dg-message "candidates|argument" }
84
five  sink_2_15(               A&&);  // { dg-message "note|argument" }
85
 
86
int test2_15()
87
{
88
                   A a;
89
    const          A ca = a;
90
          volatile A va;
91
    const volatile A cva = a;
92
   sink_2_15(ca);           // { dg-error "no match" }
93
   sink_2_15(va);           // { dg-error "no match" }
94
   sink_2_15(cva);          // { dg-error "no match" }
95
   sink_2_15(c_source());   // { dg-error "no match" }
96
   sink_2_15(v_source());   // { dg-error "no match" }
97
   sink_2_15(cv_source());  // { dg-error "no match" }
98
    return 0;
99
}
100
 
101
one   sink_2_16(               A&);  // { dg-message "candidates|argument" }
102
six   sink_2_16(const          A&&);  // { dg-message "note|argument" }
103
 
104
int test2_16()
105
{
106
                   A a;
107
    const          A ca = a;
108
          volatile A va;
109
    const volatile A cva = a;
110
    sink_2_16(ca);           // { dg-error "lvalue" }
111
    sink_2_16(va);           // { dg-error "no match" }
112
    sink_2_16(cva);          // { dg-error "no match" }
113
    sink_2_16(v_source());   // { dg-error "no match" }
114
    sink_2_16(cv_source());  // { dg-error "no match" }
115
    return 0;
116
}
117
 
118
one   sink_2_17(               A&);  // { dg-message "candidates|argument" }
119
seven sink_2_17(volatile       A&&);  // { dg-message "note|argument" }
120
 
121
int test2_17()
122
{
123
                   A a;
124
    const          A ca = a;
125
          volatile A va;
126
    const volatile A cva = a;
127
    sink_2_17(ca);           // { dg-error "no match" }
128
    sink_2_17(va);           // { dg-error "lvalue" }
129
    sink_2_17(cva);          // { dg-error "no match" }
130
    sink_2_17(c_source());   // { dg-error "no match" }
131
    sink_2_17(cv_source());  // { dg-error "no match" }
132
    return 0;
133
}
134
 
135
one   sink_2_18(               A&);
136
eight sink_2_18(const volatile A&&); // { dg-error "argument" }
137
 
138
int test2_18()
139
{
140
                   A a;
141
    const          A ca = a;
142
          volatile A va;
143
    const volatile A cva = a;
144
    sink_2_18(ca);              // { dg-error "lvalue" }
145
    sink_2_18(va);              // { dg-error "lvalue" }
146
    sink_2_18(cva);             // { dg-error "lvalue" }
147
}
148
 
149
two   sink_2_23(const          A&);  // { dg-message "candidates|argument" }
150
three sink_2_23(volatile       A&);  // { dg-message "note|argument" }
151
 
152
int test2_23()
153
{
154
                   A a;
155
    const          A ca = a;
156
          volatile A va;
157
    const volatile A cva = a;
158
    sink_2_23(a);            // { dg-error "ambiguous" }
159
    sink_2_23(cva);          // { dg-error "no match" }
160
    sink_2_23(v_source());   // { dg-error "no match" }
161
    sink_2_23(cv_source());  // { dg-error "no match" }
162
    return 0;
163
}
164
 
165
two   sink_2_24(const          A&);  // { dg-message "candidates|argument" }
166
four  sink_2_24(const volatile A&);  // { dg-message "note|argument" }
167
 
168
int test2_24()
169
{
170
                   A a;
171
    const          A ca = a;
172
          volatile A va;
173
    const volatile A cva = a;
174
    sink_2_24(v_source());   // { dg-error "no match" }
175
    sink_2_24(cv_source());  // { dg-error "no match" }
176
    return 0;
177
}
178
 
179
three sink_2_34(volatile       A&);  // { dg-message "candidate" }
180
four  sink_2_34(const volatile A&);  // { dg-message "note|argument" }
181
 
182
int test2_34()
183
{
184
                   A a;
185
    const          A ca = a;
186
          volatile A va;
187
    const volatile A cva = a;
188
    sink_2_34(source());     // { dg-error "no match" }
189
    sink_2_34(c_source());   // { dg-error "no match" }
190
    sink_2_34(v_source());   // { dg-error "no match" }
191
    sink_2_34(cv_source());  // { dg-error "no match" }
192
    return 0;
193
}
194
 
195
two   sink_2_25(const          A&);  // { dg-message "candidate" }
196
five  sink_2_25(               A&&);  // { dg-message "note|argument" }
197
 
198
int test2_25()
199
{
200
                   A a;
201
    const          A ca = a;
202
          volatile A va;
203
    const volatile A cva = a;
204
   sink_2_25(va);           // { dg-error "no match" }
205
   sink_2_25(cva);          // { dg-error "no match" }
206
   sink_2_25(v_source());   // { dg-error "no match" }
207
   sink_2_25(cv_source());  // { dg-error "no match" }
208
    return 0;
209
}
210
 
211
two   sink_2_26(const          A&);  // { dg-message "candidate" }
212
six   sink_2_26(const          A&&);  // { dg-message "note|argument" }
213
 
214
int test2_26()
215
{
216
                   A a;
217
    const          A ca = a;
218
          volatile A va;
219
    const volatile A cva = a;
220
    sink_2_26(va);           // { dg-error "no match" }
221
    sink_2_26(cva);          // { dg-error "no match" }
222
    sink_2_26(v_source());   // { dg-error "no match" }
223
    sink_2_26(cv_source());  // { dg-error "no match" }
224
    return 0;
225
}
226
 
227
two   sink_2_27(const          A&);  // { dg-message "candidate" }
228
seven sink_2_27(volatile       A&&);  // { dg-message "note|argument" }
229
 
230
int test2_27()
231
{
232
                   A a;
233
    const          A ca = a;
234
          volatile A va;
235
    const volatile A cva = a;
236
    sink_2_27(va);           // { dg-error "lvalue" }
237
    sink_2_27(cva);          // { dg-error "no match" }
238
    sink_2_27(cv_source());  // { dg-error "no match" }
239
    return 0;
240
}
241
 
242
two   sink_2_28(const          A&);
243
eight sink_2_28(const volatile A&&); // { dg-error "argument" }
244
 
245
int test2_28()
246
{
247
                   A a;
248
    const          A ca = a;
249
          volatile A va;
250
    const volatile A cva = a;
251
    sink_2_28(va);              // { dg-error "lvalue" }
252
    sink_2_28(cva);             // { dg-error "lvalue" }
253
}
254
 
255
three sink_2_35(volatile       A&);  // { dg-message "candidate" }
256
five  sink_2_35(               A&&);  // { dg-message "note|argument" }
257
 
258
int test2_35()
259
{
260
                   A a;
261
    const          A ca = a;
262
          volatile A va;
263
    const volatile A cva = a;
264
    sink_2_35(ca);           // { dg-error "no match" }
265
    sink_2_35(cva);          // { dg-error "no match" }
266
    sink_2_35(c_source());   // { dg-error "no match" }
267
    sink_2_35(v_source());   // { dg-error "no match" }
268
    sink_2_35(cv_source());  // { dg-error "no match" }
269
    return 0;
270
}
271
 
272
three sink_2_36(volatile       A&);  // { dg-message "candidate" }
273
six   sink_2_36(const          A&&);  // { dg-message "note|argument" }
274
 
275
int test2_36()
276
{
277
                   A a;
278
    const          A ca = a;
279
          volatile A va;
280
    const volatile A cva = a;
281
    sink_2_36(ca);              // { dg-error "lvalue" }
282
    sink_2_36(cva);          // { dg-error "no match" }
283
    sink_2_36(v_source());   // { dg-error "no match" }
284
    sink_2_36(cv_source());  // { dg-error "no match" }
285
    return 0;
286
}
287
 
288
three sink_2_37(volatile       A&);  // { dg-message "candidate" }
289
seven sink_2_37(volatile       A&&);  // { dg-message "note|argument" }
290
 
291
int test2_37()
292
{
293
                   A a;
294
    const          A ca = a;
295
          volatile A va;
296
    const volatile A cva = a;
297
    sink_2_37(ca);           // { dg-error "no match" }
298
    sink_2_37(cva);          // { dg-error "no match" }
299
    sink_2_37(c_source());   // { dg-error "no match" }
300
    sink_2_37(cv_source());  // { dg-error "no match" }
301
    return 0;
302
}
303
 
304
three sink_2_38(volatile       A&);
305
eight sink_2_38(const volatile A&&); // { dg-error "argument" }
306
 
307
int test2_38()
308
{
309
                   A a;
310
    const          A ca = a;
311
          volatile A va;
312
    const volatile A cva = a;
313
    sink_2_38(ca);              // { dg-error "lvalue" }
314
    sink_2_38(cva);             // { dg-error "lvalue" }
315
}
316
 
317
four  sink_2_45(const volatile A&);   // { dg-message "candidate" }
318
five  sink_2_45(               A&&);  // { dg-message "note|argument" }
319
 
320
int test2_45()
321
{
322
                   A a;
323
    const          A ca = a;
324
          volatile A va;
325
    const volatile A cva = a;
326
    sink_2_45(c_source());   // { dg-error "no match" }
327
    sink_2_45(v_source());   // { dg-error "no match" }
328
    sink_2_45(cv_source());  // { dg-error "no match" }
329
    return 0;
330
}
331
 
332
four  sink_2_46(const volatile A&);   // { dg-message "candidate" }
333
six   sink_2_46(const          A&&);  // { dg-message "note|argument" }
334
 
335
int test2_46()
336
{
337
                   A a;
338
    const          A ca = a;
339
          volatile A va;
340
    const volatile A cva = a;
341
    sink_2_46(v_source());   // { dg-error "no match" }
342
    sink_2_46(cv_source());  // { dg-error "no match" }
343
    return 0;
344
}
345
 
346
four  sink_2_47(const volatile A&);   // { dg-message "candidate" }
347
seven sink_2_47(volatile       A&&);  // { dg-message "note|argument" }
348
 
349
int test2_47()
350
{
351
                   A a;
352
    const          A ca = a;
353
          volatile A va;
354
    const volatile A cva = a;
355
    sink_2_47(c_source());   // { dg-error "no match" }
356
    sink_2_47(cv_source());  // { dg-error "no match" }
357
    return 0;
358
}
359
 
360
five  sink_2_56(               A&&);  // { dg-message "candidate|argument" }
361
six   sink_2_56(const          A&&);  // { dg-message "note|argument" }
362
 
363
int test2_56()
364
{
365
                   A a;
366
    const          A ca = a;
367
          volatile A va;
368
    const volatile A cva = a;
369
    sink_2_56(a);               // { dg-error "lvalue" }
370
    sink_2_56(ca);              // { dg-error "lvalue" }
371
    sink_2_56(va);           // { dg-error "no match" }
372
    sink_2_56(cva);          // { dg-error "no match" }
373
    sink_2_56(v_source());   // { dg-error "no match" }
374
    sink_2_56(cv_source());  // { dg-error "no match" }
375
    return 0;
376
}
377
 
378
five  sink_2_57(               A&&);  // { dg-message "candidate|argument" }
379
seven sink_2_57(volatile       A&&);  // { dg-message "note|argument" }
380
 
381
int test2_57()
382
{
383
                   A a;
384
    const          A ca = a;
385
          volatile A va;
386
    const volatile A cva = a;
387
    sink_2_57(a);               // { dg-error "lvalue" }
388
    sink_2_57(va);              // { dg-error "lvalue" }
389
    sink_2_57(ca);           // { dg-error "no match" }
390
    sink_2_57(cva);          // { dg-error "no match" }
391
    sink_2_57(c_source());   // { dg-error "no match" }
392
    sink_2_57(cv_source());  // { dg-error "no match" }
393
    return 0;
394
}
395
 
396
five  sink_2_58(               A&&); // { dg-error "argument" }
397
eight sink_2_58(const volatile A&&); // { dg-error "argument" }
398
 
399
int test2_58()
400
{
401
                   A a;
402
    const          A ca = a;
403
          volatile A va;
404
    const volatile A cva = a;
405
    sink_2_58(a);               // { dg-error "lvalue" }
406
    sink_2_58(ca);              // { dg-error "lvalue" }
407
    sink_2_58(va);              // { dg-error "lvalue" }
408
    sink_2_58(cva);             // { dg-error "lvalue" }
409
}
410
 
411
six   sink_2_67(const          A&&);  // { dg-message "candidate|argument" }
412
seven sink_2_67(volatile       A&&);  // { dg-message "note|argument" }
413
 
414
int test2_67()
415
{
416
                   A a;
417
    const          A ca = a;
418
          volatile A va;
419
    const volatile A cva = a;
420
    sink_2_67(a);            // { dg-error "ambiguous" }
421
    sink_2_67(ca);           // { dg-error "lvalue" }
422
    sink_2_67(va);           // { dg-error "lvalue" }
423
    sink_2_67(cva);          // { dg-error "no match" }
424
    sink_2_67(source());     // { dg-error "ambiguous" }
425
    sink_2_67(cv_source());  // { dg-error "no match" }
426
    return 0;
427
}
428
 
429
six   sink_2_68(const          A&&); // { dg-error "argument" }
430
eight sink_2_68(const volatile A&&); // { dg-error "argument" }
431
 
432
int test2_68()
433
{
434
                   A a;
435
    const          A ca = a;
436
          volatile A va;
437
    const volatile A cva = a;
438
    sink_2_68(a);               // { dg-error "lvalue" }
439
    sink_2_68(ca);              // { dg-error "lvalue" }
440
    sink_2_68(va);              // { dg-error "lvalue" }
441
    sink_2_68(cva);             // { dg-error "lvalue" }
442
}
443
 
444
seven sink_2_78(volatile       A&&); // { dg-error "argument" }
445
eight sink_2_78(const volatile A&&); // { dg-error "argument" }
446
 
447
int test2_78()
448
{
449
                   A a;
450
    const          A ca = a;
451
          volatile A va;
452
    const volatile A cva = a;
453
    sink_2_78(a);               // { dg-error "lvalue" }
454
    sink_2_78(ca);              // { dg-error "lvalue" }
455
    sink_2_78(va);              // { dg-error "lvalue" }
456
    sink_2_78(cva);             // { dg-error "lvalue" }
457
}
458
 
459
int main()
460
{
461
    return test2_12() + test2_13() + test2_15() + test2_16() +
462
           test2_17() + test2_23() + test2_25() + test2_26() +
463
           test2_27() + test2_35() + test2_36() + test2_37() +
464
           test2_56() + test2_57() + test2_67();
465
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.