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 8template <bool> struct sa; 9template <> struct sa<true> {}; 10 11struct one {char x[1];}; 12struct two {char x[2];}; 13struct three {char x[3];}; 14struct four {char x[4];}; 15struct five {char x[5];}; 16struct six {char x[6];}; 17struct seven {char x[7];}; 18struct eight {char x[8];}; 19 20struct A 21{ 22 A(); 23 A(const volatile A&&); 24}; 25 26 A source(); 27const A c_source(); 28 volatile A v_source(); 29const volatile A cv_source(); 30 31// 4 at a time 32 33one sink_4_1234( A&); // { dg-message "candidates" } 34two sink_4_1234(const A&); // { dg-message "note" } 35three sink_4_1234(volatile A&); // { dg-message "note" } 36four sink_4_1234(const volatile A&); // { dg-message "note" } 37 38int test4_1234() 39{ 40 A a; 41 const A ca = a; 42 volatile A va; 43 const volatile A cva = a; 44 sink_4_1234(v_source()); // { dg-error "no match" } 45 sink_4_1234(cv_source()); // { dg-error "no match" } 46 return 0; 47} 48 49one sink_4_1235( A&); // { dg-message "candidates" } 50two sink_4_1235(const A&); // { dg-message "note" } 51three sink_4_1235(volatile A&); // { dg-message "note" } 52five sink_4_1235( A&&); // { dg-message "note" } 53 54int test4_1235() 55{ 56 A a; 57 const A ca = a; 58 volatile A va; 59 const volatile A cva = a; 60 sink_4_1235(cva); // { dg-error "no match" } 61 sink_4_1235(v_source()); // { dg-error "no match" } 62 sink_4_1235(cv_source()); // { dg-error "no match" } 63 return 0; 64} 65 66one sink_4_1236( A&); // { dg-message "candidates" } 67two sink_4_1236(const A&); // { dg-message "note" } 68three sink_4_1236(volatile A&); // { dg-message "note" } 69six sink_4_1236(const A&&); // { dg-message "note" } 70 71int test4_1236() 72{ 73 A a; 74 const A ca = a; 75 volatile A va; 76 const volatile A cva = a; 77 sink_4_1236(cva); // { dg-error "no match" } 78 sink_4_1236(v_source()); // { dg-error "no match" } 79 sink_4_1236(cv_source()); // { dg-error "no match" } 80 return 0; 81} 82 83one sink_4_1237( A&); // { dg-message "candidates" } 84two sink_4_1237(const A&); // { dg-message "note" } 85three sink_4_1237(volatile A&); // { dg-message "note" } 86seven sink_4_1237(volatile A&&); // { dg-message "note" } 87 88int test4_1237() 89{ 90 A a; 91 const A ca = a; 92 volatile A va; 93 const volatile A cva = a; 94 sink_4_1237(cva); // { dg-error "no match" } 95 sink_4_1237(cv_source()); // { dg-error "no match" } 96 return 0; 97} 98 99one sink_4_1238( A&); 100two sink_4_1238(const A&); 101three sink_4_1238(volatile A&); 102eight sink_4_1238(const volatile A&&); // { dg-message "" } 103 104int test4_1238() 105{ 106 A a; 107 const A ca = a; 108 volatile A va; 109 const volatile A cva = a; 110 sink_4_1238(cva); // { dg-error "lvalue" } 111 return 0; 112} 113 114one sink_4_1245( A&); // { dg-message "candidates" } 115two sink_4_1245(const A&); // { dg-message "note" } 116four sink_4_1245(const volatile A&); // { dg-message "note" } 117five sink_4_1245( A&&); // { dg-message "note" } 118 119int test4_1245() 120{ 121 A a; 122 const A ca = a; 123 volatile A va; 124 const volatile A cva = a; 125 sink_4_1245(v_source()); // { dg-error "no match" } 126 sink_4_1245(cv_source()); // { dg-error "no match" } 127 return 0; 128} 129 130one sink_4_1246( A&); // { dg-message "candidates" } 131two sink_4_1246(const A&); // { dg-message "note" } 132four sink_4_1246(const volatile A&); // { dg-message "note" } 133six sink_4_1246(const A&&); // { dg-message "note" } 134 135int test4_1246() 136{ 137 A a; 138 const A ca = a; 139 volatile A va; 140 const volatile A cva = a; 141 sink_4_1246(v_source()); // { dg-error "no match" } 142 sink_4_1246(cv_source()); // { dg-error "no match" } 143 return 0; 144} 145 146one sink_4_1247( A&); // { dg-message "candidates" } 147two sink_4_1247(const A&); // { dg-message "note" } 148four sink_4_1247(const volatile A&); // { dg-message "note" } 149seven sink_4_1247(volatile A&&); // { dg-message "note" } 150 151int test4_1247() 152{ 153 A a; 154 const A ca = a; 155 volatile A va; 156 const volatile A cva = a; 157 sink_4_1247(cv_source()); // { dg-error "no match" } 158 return 0; 159} 160 161one sink_4_1256( A&); // { dg-message "candidates" } 162two sink_4_1256(const A&); // { dg-message "note" } 163five sink_4_1256( A&&); // { dg-message "note" } 164six sink_4_1256(const A&&); // { dg-message "note" } 165 166int test4_1256() 167{ 168 A a; 169 const A ca = a; 170 volatile A va; 171 const volatile A cva = a; 172 sink_4_1256(va); // { dg-error "no match" } 173 sink_4_1256(cva); // { dg-error "no match" } 174 sink_4_1256(v_source()); // { dg-error "no match" } 175 sink_4_1256(cv_source()); // { dg-error "no match" } 176 return 0; 177} 178 179one sink_4_1257( A&); // { dg-message "candidates" } 180two sink_4_1257(const A&); // { dg-message "note" } 181five sink_4_1257( A&&); // { dg-message "note" } 182seven sink_4_1257(volatile A&&); // { dg-message "" } 183 184int test4_1257() 185{ 186 A a; 187 const A ca = a; 188 volatile A va; 189 const volatile A cva = a; 190 sink_4_1257(va); // { dg-error "lvalue" } 191 sink_4_1257(cva); // { dg-error "no match" } 192 sink_4_1257(cv_source()); // { dg-error "no match" } 193 return 0; 194} 195 196one sink_4_1258( A&); 197two sink_4_1258(const A&); 198five sink_4_1258( A&&); 199eight sink_4_1258(const volatile A&&); // { dg-message "" } 200 201int test4_1258() 202{ 203 A a; 204 const A ca = a; 205 volatile A va; 206 const volatile A cva = a; 207 sink_4_1258(va); // { dg-error "lvalue" } 208 sink_4_1258(cva); // { dg-error "lvalue" } 209 return 0; 210} 211 212one sink_4_1267( A&); // { dg-message "candidates" } 213two sink_4_1267(const A&); // { dg-message "note" } 214six sink_4_1267(const A&&); // { dg-message "note" } 215seven sink_4_1267(volatile A&&); // { dg-message "" } 216 217int test4_1267() 218{ 219 A a; 220 const A ca = a; 221 volatile A va; 222 const volatile A cva = a; 223 sink_4_1267(va); // { dg-error "lvalue" } 224 sink_4_1267(cva); // { dg-error "no match" } 225 sink_4_1267(source()); // { dg-error "ambiguous" } 226 sink_4_1267(cv_source()); // { dg-error "no match" } 227 return 0; 228} 229 230one sink_4_1268( A&); 231two sink_4_1268(const A&); 232six sink_4_1268(const A&&); 233eight sink_4_1268(const volatile A&&); // { dg-message "" } 234 235int test4_1268() 236{ 237 A a; 238 const A ca = a; 239 volatile A va; 240 const volatile A cva = a; 241 sink_4_1268(va); // { dg-error "lvalue" } 242 sink_4_1268(cva); // { dg-error "lvalue" } 243 return 0; 244} 245 246one sink_4_1278( A&); 247two sink_4_1278(const A&); 248seven sink_4_1278(volatile A&&); // { dg-message "" } 249eight sink_4_1278(const volatile A&&); // { dg-message "" } 250 251int test4_1278() 252{ 253 A a; 254 const A ca = a; 255 volatile A va; 256 const volatile A cva = a; 257 sink_4_1278(va); // { dg-error "lvalue" } 258 sink_4_1278(cva); // { dg-error "lvalue" } 259 return 0; 260} 261 262one sink_4_1345( A&); // { dg-message "candidates" } 263three sink_4_1345(volatile A&); // { dg-message "note" } 264four sink_4_1345(const volatile A&); // { dg-message "note" } 265five sink_4_1345( A&&); // { dg-message "note" } 266 267int test4_1345() 268{ 269 A a; 270 const A ca = a; 271 volatile A va; 272 const volatile A cva = a; 273 sink_4_1345(c_source()); // { dg-error "no match" } 274 sink_4_1345(v_source()); // { dg-error "no match" } 275 sink_4_1345(cv_source()); // { dg-error "no match" } 276 return 0; 277} 278 279one sink_4_1346( A&); // { dg-message "candidates" } 280three sink_4_1346(volatile A&); // { dg-message "note" } 281four sink_4_1346(const volatile A&); // { dg-message "note" } 282six sink_4_1346(const A&&); // { dg-message "note" } 283 284int test4_1346() 285{ 286 A a; 287 const A ca = a; 288 volatile A va; 289 const volatile A cva = a; 290 sink_4_1346(v_source()); // { dg-error "no match" } 291 sink_4_1346(cv_source()); // { dg-error "no match" } 292 return 0; 293} 294 295one sink_4_1347( A&); // { dg-message "candidates" } 296three sink_4_1347(volatile A&); // { dg-message "note" } 297four sink_4_1347(const volatile A&); // { dg-message "note" } 298seven sink_4_1347(volatile A&&); // { dg-message "note" } 299 300int test4_1347() 301{ 302 A a; 303 const A ca = a; 304 volatile A va; 305 const volatile A cva = a; 306 sink_4_1347(c_source()); // { dg-error "no match" } 307 sink_4_1347(cv_source()); // { dg-error "no match" } 308 return 0; 309} 310 311one sink_4_1356( A&); // { dg-message "candidates" } 312three sink_4_1356(volatile A&); // { dg-message "note" } 313five sink_4_1356( A&&); // { dg-message "note" } 314six sink_4_1356(const A&&); // { dg-message "" } 315 316int test4_1356() 317{ 318 A a; 319 const A ca = a; 320 volatile A va; 321 const volatile A cva = a; 322 sink_4_1356(ca); // { dg-error "lvalue" } 323 sink_4_1356(cva); // { dg-error "no match" } 324 sink_4_1356(v_source()); // { dg-error "no match" } 325 sink_4_1356(cv_source()); // { dg-error "no match" } 326 return 0; 327} 328 329one sink_4_1357( A&); // { dg-message "candidates" } 330three sink_4_1357(volatile A&); // { dg-message "note" } 331five sink_4_1357( A&&); // { dg-message "note" } 332seven sink_4_1357(volatile A&&); // { dg-message "note" } 333 334int test4_1357() 335{ 336 A a; 337 const A ca = a; 338 volatile A va; 339 const volatile A cva = a; 340 sink_4_1357(ca); // { dg-error "no match" } 341 sink_4_1357(cva); // { dg-error "no match" } 342 sink_4_1357(c_source()); // { dg-error "no match" } 343 sink_4_1357(cv_source()); // { dg-error "no match" } 344 return 0; 345} 346 347one sink_4_1358( A&); 348three sink_4_1358(volatile A&); 349five sink_4_1358( A&&); 350eight sink_4_1358(const volatile A&&); // { dg-message "" } 351 352int test4_1358() 353{ 354 A a; 355 const A ca = a; 356 volatile A va; 357 const volatile A cva = a; 358 sink_4_1358(ca); // { dg-error "lvalue" } 359 sink_4_1358(cva); // { dg-error "lvalue" } 360 return 0; 361} 362 363one sink_4_1367( A&); // { dg-message "candidates" } 364three sink_4_1367(volatile A&); // { dg-message "note" } 365six sink_4_1367(const A&&); // { dg-message "" } 366seven sink_4_1367(volatile A&&); // { dg-message "note" } 367 368int test4_1367() 369{ 370 A a; 371 const A ca = a; 372 volatile A va; 373 const volatile A cva = a; 374 sink_4_1367(ca); // { dg-error "lvalue" } 375 sink_4_1367(cva); // { dg-error "no match" } 376 sink_4_1367(source()); // { dg-error "ambiguous" } 377 sink_4_1367(cv_source()); // { dg-error "no match" } 378 return 0; 379} 380 381one sink_4_1368( A&); 382three sink_4_1368(volatile A&); 383six sink_4_1368(const A&&); // { dg-message "" } 384eight sink_4_1368(const volatile A&&); // { dg-message "" } 385 386int test4_1368() 387{ 388 A a; 389 const A ca = a; 390 volatile A va; 391 const volatile A cva = a; 392 sink_4_1368(ca); // { dg-error "lvalue" } 393 sink_4_1368(cva); // { dg-error "lvalue" } 394 return 0; 395} 396 397one sink_4_1378( A&); 398three sink_4_1378(volatile A&); 399seven sink_4_1378(volatile A&&); 400eight sink_4_1378(const volatile A&&); // { dg-message "" } 401 402int test4_1378() 403{ 404 A a; 405 const A ca = a; 406 volatile A va; 407 const volatile A cva = a; 408 sink_4_1378(ca); // { dg-error "lvalue" } 409 sink_4_1378(cva); // { dg-error "lvalue" } 410 return 0; 411} 412 413one sink_4_1456( A&); // { dg-message "candidates" } 414four sink_4_1456(const volatile A&); // { dg-message "note" } 415five sink_4_1456( A&&); // { dg-message "note" } 416six sink_4_1456(const A&&); // { dg-message "note" } 417 418int test4_1456() 419{ 420 A a; 421 const A ca = a; 422 volatile A va; 423 const volatile A cva = a; 424 sink_4_1456(v_source()); // { dg-error "no match" } 425 sink_4_1456(cv_source()); // { dg-error "no match" } 426 return 0; 427} 428 429one sink_4_1457( A&); // { dg-message "candidates" } 430four sink_4_1457(const volatile A&); // { dg-message "note" } 431five sink_4_1457( A&&); // { dg-message "note" } 432seven sink_4_1457(volatile A&&); // { dg-message "note" } 433 434int test4_1457() 435{ 436 A a; 437 const A ca = a; 438 volatile A va; 439 const volatile A cva = a; 440 sink_4_1457(c_source()); // { dg-error "no match" } 441 sink_4_1457(cv_source()); // { dg-error "no match" } 442 return 0; 443} 444 445one sink_4_1467( A&); // { dg-message "candidates" } 446four sink_4_1467(const volatile A&); // { dg-message "note" } 447six sink_4_1467(const A&&); // { dg-message "note" } 448seven sink_4_1467(volatile A&&); // { dg-message "note" } 449 450int test4_1467() 451{ 452 A a; 453 const A ca = a; 454 volatile A va; 455 const volatile A cva = a; 456 sink_4_1467(source()); // { dg-error "ambiguous" } 457 sink_4_1467(cv_source()); // { dg-error "no match" } 458 return 0; 459} 460 461one sink_4_1567( A&); // { dg-message "candidates" } 462five sink_4_1567( A&&); // { dg-message "note" } 463six sink_4_1567(const A&&); // { dg-message "" } 464seven sink_4_1567(volatile A&&); // { dg-message "" } 465 466int test4_1567() 467{ 468 A a; 469 const A ca = a; 470 volatile A va; 471 const volatile A cva = a; 472 sink_4_1567(ca); // { dg-error "lvalue" } 473 sink_4_1567(va); // { dg-error "lvalue" } 474 sink_4_1567(cva); // { dg-error "no match" } 475 sink_4_1567(cv_source()); // { dg-error "no match" } 476 return 0; 477} 478 479one sink_4_1568( A&); 480five sink_4_1568( A&&); 481six sink_4_1568(const A&&); // { dg-message "" } 482eight sink_4_1568(const volatile A&&); // { dg-message "" } 483 484int test4_1568() 485{ 486 A a; 487 const A ca = a; 488 volatile A va; 489 const volatile A cva = a; 490 sink_4_1568(ca); // { dg-error "lvalue" } 491 sink_4_1568(va); // { dg-error "lvalue" } 492 sink_4_1568(cva); // { dg-error "lvalue" } 493 return 0; 494} 495 496one sink_4_1578( A&); 497five sink_4_1578( A&&); 498seven sink_4_1578(volatile A&&); // { dg-message "" } 499eight sink_4_1578(const volatile A&&); // { dg-message "" } 500 501int test4_1578() 502{ 503 A a; 504 const A ca = a; 505 volatile A va; 506 const volatile A cva = a; 507 sink_4_1578(ca); // { dg-error "lvalue" } 508 sink_4_1578(va); // { dg-error "lvalue" } 509 sink_4_1578(cva); // { dg-error "lvalue" } 510 return 0; 511} 512 513one sink_4_1678( A&); 514six sink_4_1678(const A&&); // { dg-message "" } 515seven sink_4_1678(volatile A&&); // { dg-message "" } 516eight sink_4_1678(const volatile A&&); // { dg-message "" } 517 518int test4_1678() 519{ 520 A a; 521 const A ca = a; 522 volatile A va; 523 const volatile A cva = a; 524 sink_4_1678(ca); // { dg-error "lvalue" } 525 sink_4_1678(va); // { dg-error "lvalue" } 526 sink_4_1678(cva); // { dg-error "lvalue" } 527 sink_4_1678(source()); // { dg-error "ambiguous" } 528 return 0; 529} 530 531two sink_4_2345(const A&); // { dg-message "candidates" } 532three sink_4_2345(volatile A&); // { dg-message "note" } 533four sink_4_2345(const volatile A&); // { dg-message "note" } 534five sink_4_2345( A&&); // { dg-message "note" } 535 536int test4_2345() 537{ 538 A a; 539 const A ca = a; 540 volatile A va; 541 const volatile A cva = a; 542 sink_4_2345(a); // { dg-error "ambiguous" } 543 sink_4_2345(v_source()); // { dg-error "no match" } 544 sink_4_2345(cv_source()); // { dg-error "no match" } 545 return 0; 546} 547 548two sink_4_2346(const A&); // { dg-message "candidates" } 549three sink_4_2346(volatile A&); // { dg-message "note" } 550four sink_4_2346(const volatile A&); // { dg-message "note" } 551six sink_4_2346(const A&&); // { dg-message "note" } 552 553int test4_2346() 554{ 555 A a; 556 const A ca = a; 557 volatile A va; 558 const volatile A cva = a; 559 sink_4_2346(a); // { dg-error "ambiguous" } 560 sink_4_2346(v_source()); // { dg-error "no match" } 561 sink_4_2346(cv_source()); // { dg-error "no match" } 562 return 0; 563} 564 565two sink_4_2347(const A&); // { dg-message "candidates" } 566three sink_4_2347(volatile A&); // { dg-message "note" } 567four sink_4_2347(const volatile A&); // { dg-message "note" } 568seven sink_4_2347(volatile A&&); // { dg-message "note" } 569 570int test4_2347() 571{ 572 A a; 573 const A ca = a; 574 volatile A va; 575 const volatile A cva = a; 576 sink_4_2347(a); // { dg-error "ambiguous" } 577 sink_4_2347(cv_source()); // { dg-error "no match" } 578 return 0; 579} 580 581two sink_4_2348(const A&); // { dg-message "candidates" } 582three sink_4_2348(volatile A&); // { dg-message "note" } 583four sink_4_2348(const volatile A&); // { dg-message "note" } 584eight sink_4_2348(const volatile A&&); // { dg-message "note" } 585 586int test4_2348() 587{ 588 A a; 589 const A ca = a; 590 volatile A va; 591 const volatile A cva = a; 592 sink_4_2348(a); // { dg-error "ambiguous" } 593 return 0; 594} 595 596two sink_4_2356(const A&); // { dg-message "candidates" } 597three sink_4_2356(volatile A&); // { dg-message "note" } 598five sink_4_2356( A&&); // { dg-message "note" } 599six sink_4_2356(const A&&); // { dg-message "note" } 600 601int test4_2356() 602{ 603 A a; 604 const A ca = a; 605 volatile A va; 606 const volatile A cva = a; 607 sink_4_2356(a); // { dg-error "ambiguous" } 608 sink_4_2356(cva); // { dg-error "no match" } 609 sink_4_2356(v_source()); // { dg-error "no match" } 610 sink_4_2356(cv_source()); // { dg-error "no match" } 611 return 0; 612} 613 614two sink_4_2357(const A&); // { dg-message "candidates" } 615three sink_4_2357(volatile A&); // { dg-message "note" } 616five sink_4_2357( A&&); // { dg-message "note" } 617seven sink_4_2357(volatile A&&); // { dg-message "note" } 618 619int test4_2357() 620{ 621 A a; 622 const A ca = a; 623 volatile A va; 624 const volatile A cva = a; 625 sink_4_2357(a); // { dg-error "ambiguous" } 626 sink_4_2357(cva); // { dg-error "no match" } 627 sink_4_2357(cv_source()); // { dg-error "no match" } 628 return 0; 629} 630 631two sink_4_2358(const A&); // { dg-message "candidates" } 632three sink_4_2358(volatile A&); // { dg-message "note" } 633five sink_4_2358( A&&); // { dg-message "note" } 634eight sink_4_2358(const volatile A&&); // { dg-message "" } 635 636int test4_2358() 637{ 638 A a; 639 const A ca = a; 640 volatile A va; 641 const volatile A cva = a; 642 sink_4_2358(a); // { dg-error "ambiguous" } 643 sink_4_2358(cva); // { dg-error "lvalue" } 644 return 0; 645} 646 647two sink_4_2367(const A&); // { dg-message "candidates" } 648three sink_4_2367(volatile A&); // { dg-message "note" } 649six sink_4_2367(const A&&); // { dg-message "note" } 650seven sink_4_2367(volatile A&&); // { dg-message "note" } 651 652int test4_2367() 653{ 654 A a; 655 const A ca = a; 656 volatile A va; 657 const volatile A cva = a; 658 sink_4_2367(a); // { dg-error "ambiguous" } 659 sink_4_2367(cva); // { dg-error "no match" } 660 sink_4_2367(source()); // { dg-error "ambiguous" } 661 sink_4_2367(cv_source()); // { dg-error "no match" } 662 return 0; 663} 664 665two sink_4_2368(const A&); // { dg-message "candidates" } 666three sink_4_2368(volatile A&); // { dg-message "note" } 667six sink_4_2368(const A&&); // { dg-message "note" } 668eight sink_4_2368(const volatile A&&); // { dg-message "" } 669 670int test4_2368() 671{ 672 A a; 673 const A ca = a; 674 volatile A va; 675 const volatile A cva = a; 676 sink_4_2368(a); // { dg-error "ambiguous" } 677 sink_4_2368(cva); // { dg-error "lvalue" } 678 return 0; 679} 680 681two sink_4_2378(const A&); // { dg-message "candidates" } 682three sink_4_2378(volatile A&); // { dg-message "note" } 683seven sink_4_2378(volatile A&&); // { dg-message "note" } 684eight sink_4_2378(const volatile A&&); // { dg-message "" } 685 686int test4_2378() 687{ 688 A a; 689 const A ca = a; 690 volatile A va; 691 const volatile A cva = a; 692 sink_4_2378(a); // { dg-error "ambiguous" } 693 sink_4_2378(cva); // { dg-error "lvalue" } 694 return 0; 695} 696 697two sink_4_2456(const A&); // { dg-message "candidates" } 698four sink_4_2456(const volatile A&); // { dg-message "note" } 699five sink_4_2456( A&&); // { dg-message "note" } 700six sink_4_2456(const A&&); // { dg-message "note" } 701 702int test4_2456() 703{ 704 A a; 705 const A ca = a; 706 volatile A va; 707 const volatile A cva = a; 708 sink_4_2456(v_source()); // { dg-error "no match" } 709 sink_4_2456(cv_source()); // { dg-error "no match" } 710 return 0; 711} 712 713two sink_4_2457(const A&); // { dg-message "candidates" } 714four sink_4_2457(const volatile A&); // { dg-message "note" } 715five sink_4_2457( A&&); // { dg-message "note" } 716seven sink_4_2457(volatile A&&); // { dg-message "note" } 717 718int test4_2457() 719{ 720 A a; 721 const A ca = a; 722 volatile A va; 723 const volatile A cva = a; 724 sink_4_2457(cv_source()); // { dg-error "no match" } 725 return 0; 726} 727 728two sink_4_2467(const A&); // { dg-message "candidates" } 729four sink_4_2467(const volatile A&); // { dg-message "note" } 730six sink_4_2467(const A&&); // { dg-message "note" } 731seven sink_4_2467(volatile A&&); // { dg-message "note" } 732 733int test4_2467() 734{ 735 A a; 736 const A ca = a; 737 volatile A va; 738 const volatile A cva = a; 739 sink_4_2467(source()); // { dg-error "ambiguous" } 740 sink_4_2467(cv_source()); // { dg-error "no match" } 741 return 0; 742} 743 744two sink_4_2567(const A&); // { dg-message "candidates" } 745five sink_4_2567( A&&); // { dg-message "note" } 746six sink_4_2567(const A&&); // { dg-message "note" } 747seven sink_4_2567(volatile A&&); // { dg-message "" } 748 749int test4_2567() 750{ 751 A a; 752 const A ca = a; 753 volatile A va; 754 const volatile A cva = a; 755 sink_4_2567(va); // { dg-error "lvalue" } 756 sink_4_2567(cva); // { dg-error "no match" } 757 sink_4_2567(cv_source()); // { dg-error "no match" } 758 return 0; 759} 760 761two sink_4_2568(const A&); 762five sink_4_2568( A&&); 763six sink_4_2568(const A&&); 764eight sink_4_2568(const volatile A&&); // { dg-message "" } 765 766int test4_2568() 767{ 768 A a; 769 const A ca = a; 770 volatile A va; 771 const volatile A cva = a; 772 sink_4_2568(va); // { dg-error "lvalue" } 773 sink_4_2568(cva); // { dg-error "lvalue" } 774 return 0; 775} 776 777two sink_4_2578(const A&); 778five sink_4_2578( A&&); 779seven sink_4_2578(volatile A&&); // { dg-message "" } 780eight sink_4_2578(const volatile A&&); // { dg-message "" } 781 782int test4_2578() 783{ 784 A a; 785 const A ca = a; 786 volatile A va; 787 const volatile A cva = a; 788 sink_4_2578(va); // { dg-error "lvalue" } 789 sink_4_2578(cva); // { dg-error "lvalue" } 790 return 0; 791} 792 793two sink_4_2678(const A&); // { dg-message "candidates" } 794six sink_4_2678(const A&&); // { dg-message "note" } 795seven sink_4_2678(volatile A&&); // { dg-message "" } 796eight sink_4_2678(const volatile A&&); // { dg-message "" } 797 798int test4_2678() 799{ 800 A a; 801 const A ca = a; 802 volatile A va; 803 const volatile A cva = a; 804 sink_4_2678(va); // { dg-error "lvalue" } 805 sink_4_2678(cva); // { dg-error "lvalue" } 806 sink_4_2678(source()); // { dg-error "ambiguous" } 807 return 0; 808} 809 810three sink_4_3456(volatile A&); // { dg-message "candidates" } 811four sink_4_3456(const volatile A&); // { dg-message "note" } 812five sink_4_3456( A&&); // { dg-message "note" } 813six sink_4_3456(const A&&); // { dg-message "note" } 814 815int test4_3456() 816{ 817 A a; 818 const A ca = a; 819 volatile A va; 820 const volatile A cva = a; 821 sink_4_3456(v_source()); // { dg-error "no match" } 822 sink_4_3456(cv_source()); // { dg-error "no match" } 823 return 0; 824} 825 826three sink_4_3457(volatile A&); // { dg-message "candidates" } 827four sink_4_3457(const volatile A&); // { dg-message "note" } 828five sink_4_3457( A&&); // { dg-message "note" } 829seven sink_4_3457(volatile A&&); // { dg-message "note" } 830 831int test4_3457() 832{ 833 A a; 834 const A ca = a; 835 volatile A va; 836 const volatile A cva = a; 837 sink_4_3457(c_source()); // { dg-error "no match" } 838 sink_4_3457(cv_source()); // { dg-error "no match" } 839 return 0; 840} 841 842three sink_4_3467(volatile A&); // { dg-message "candidates" } 843four sink_4_3467(const volatile A&); // { dg-message "note" } 844six sink_4_3467(const A&&); // { dg-message "note" } 845seven sink_4_3467(volatile A&&); // { dg-message "note" } 846 847int test4_3467() 848{ 849 A a; 850 const A ca = a; 851 volatile A va; 852 const volatile A cva = a; 853 sink_4_3467(source()); // { dg-error "ambiguous" } 854 sink_4_3467(cv_source()); // { dg-error "no match" } 855 return 0; 856} 857 858three sink_4_3567(volatile A&); // { dg-message "candidates" } 859five sink_4_3567( A&&); // { dg-message "note" } 860six sink_4_3567(const A&&); // { dg-message "" } 861seven sink_4_3567(volatile A&&); // { dg-message "note" } 862 863int test4_3567() 864{ 865 A a; 866 const A ca = a; 867 volatile A va; 868 const volatile A cva = a; 869 sink_4_3567(ca); // { dg-error "lvalue" } 870 sink_4_3567(cva); // { dg-error "no match" } 871 sink_4_3567(cv_source()); // { dg-error "no match" } 872 return 0; 873} 874 875three sink_4_3568(volatile A&); 876five sink_4_3568( A&&); 877six sink_4_3568(const A&&); // { dg-message "" } 878eight sink_4_3568(const volatile A&&); // { dg-message "" } 879 880int test4_3568() 881{ 882 A a; 883 const A ca = a; 884 volatile A va; 885 const volatile A cva = a; 886 sink_4_3568(ca); // { dg-error "lvalue" } 887 sink_4_3568(cva); // { dg-error "lvalue" } 888 return 0; 889} 890 891three sink_4_3578(volatile A&); 892five sink_4_3578( A&&); 893seven sink_4_3578(volatile A&&); 894eight sink_4_3578(const volatile A&&); // { dg-message "" } 895 896int test4_3578() 897{ 898 A a; 899 const A ca = a; 900 volatile A va; 901 const volatile A cva = a; 902 sink_4_3578(ca); // { dg-error "lvalue" } 903 sink_4_3578(cva); // { dg-error "lvalue" } 904 return 0; 905} 906 907three sink_4_3678(volatile A&); 908six sink_4_3678(const A&&); // { dg-message "" } 909seven sink_4_3678(volatile A&&); // { dg-message "note" } 910eight sink_4_3678(const volatile A&&); // { dg-message "" } 911 912int test4_3678() 913{ 914 A a; 915 const A ca = a; 916 volatile A va; 917 const volatile A cva = a; 918 sink_4_3678(ca); // { dg-error "lvalue" } 919 sink_4_3678(cva); // { dg-error "lvalue" } 920 sink_4_3678(source()); // { dg-error "ambiguous" } 921 return 0; 922} 923 924four sink_4_4567(const volatile A&); // { dg-message "candidates" } 925five sink_4_4567( A&&); // { dg-message "note" } 926six sink_4_4567(const A&&); // { dg-message "note" } 927seven sink_4_4567(volatile A&&); // { dg-message "note" } 928 929int test4_4567() 930{ 931 A a; 932 const A ca = a; 933 volatile A va; 934 const volatile A cva = a; 935 sink_4_4567(cv_source()); // { dg-error "no match" } 936 return 0; 937} 938 939four sink_4_4678(const volatile A&); 940six sink_4_4678(const A&&); // { dg-message "candidates" } 941seven sink_4_4678(volatile A&&); // { dg-message "note" } 942eight sink_4_4678(const volatile A&&); // { dg-message "note" } 943 944int test4_4678() 945{ 946 A a; 947 const A ca = a; 948 volatile A va; 949 const volatile A cva = a; 950 sink_4_4678(source()); // { dg-error "ambiguous" } 951 return 0; 952} 953 954five sink_4_5678( A&&); // { dg-message "" } 955six sink_4_5678(const A&&); // { dg-message "" } 956seven sink_4_5678(volatile A&&); // { dg-message "" } 957eight sink_4_5678(const volatile A&&); // { dg-message "" } 958 959int test4_5678() 960{ 961 A a; 962 const A ca = a; 963 volatile A va; 964 const volatile A cva = a; 965 sink_4_5678(a); // { dg-error "lvalue" } 966 sink_4_5678(ca); // { dg-error "lvalue" } 967 sink_4_5678(va); // { dg-error "lvalue" } 968 sink_4_5678(cva); // { dg-error "lvalue" } 969 return 0; 970} 971 972int main() 973{ 974 return test4_1235() + test4_1236() + test4_1237() + test4_1256() + test4_1257() + 975 test4_1267() + test4_1356() + test4_1357() + test4_1467() + test4_1567() + 976 test4_1678() + test4_2345() + test4_2346() + test4_2347() + test4_2348() + 977 test4_2356() + test4_2357() + test4_2358() + test4_2367() + test4_2368() + 978 test4_2378() + test4_2467() + test4_2567() + test4_2678() + test4_3467() + 979 test4_3567() + test4_3678() + test4_4678(); 980} 981