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 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&); 34two sink_4_1234(const A&); 35three sink_4_1234(volatile A&); 36four sink_4_1234(const volatile A&); 37 38int test4_1234() 39{ 40 A a; 41 const A ca = a; // { dg-error "deleted" } 42 volatile A va; 43 const volatile A cva = a; // { dg-error "deleted" } 44 sink_4_1234(v_source()); // { dg-error "" } 45 sink_4_1234(cv_source()); // { dg-error "" } 46 return 0; 47} 48 49one sink_4_1235( A&); 50two sink_4_1235(const A&); 51three sink_4_1235(volatile A&); 52five sink_4_1235( A&&); 53 54int test4_1235() 55{ 56 A a; 57 const A ca = a; // { dg-error "deleted" } 58 volatile A va; 59 const volatile A cva = a; // { dg-error "deleted" } 60 sink_4_1235(cva); // { dg-error "" } 61 sink_4_1235(v_source()); // { dg-error "" } 62 sink_4_1235(cv_source()); // { dg-error "" } 63 return 0; 64} 65 66one sink_4_1236( A&); 67two sink_4_1236(const A&); 68three sink_4_1236(volatile A&); 69six sink_4_1236(const A&&); 70 71int test4_1236() 72{ 73 A a; 74 const A ca = a; // { dg-error "deleted" } 75 volatile A va; 76 const volatile A cva = a; // { dg-error "deleted" } 77 sink_4_1236(cva); // { dg-error "" } 78 sink_4_1236(v_source()); // { dg-error "" } 79 sink_4_1236(cv_source()); // { dg-error "" } 80 return 0; 81} 82 83one sink_4_1237( A&); 84two sink_4_1237(const A&); 85three sink_4_1237(volatile A&); 86seven sink_4_1237(volatile A&&); 87 88int test4_1237() 89{ 90 A a; 91 const A ca = a; // { dg-error "deleted" } 92 volatile A va; 93 const volatile A cva = a; // { dg-error "deleted" } 94 sink_4_1237(cva); // { dg-error "" } 95 sink_4_1237(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 108 volatile A va; 109 const volatile A cva = a; // { dg-error "deleted" } 110 sink_4_1238(cva); // { dg-error "" } 111 return 0; 112} 113 114one sink_4_1245( A&); 115two sink_4_1245(const A&); 116four sink_4_1245(const volatile A&); 117five sink_4_1245( A&&); 118 119int test4_1245() 120{ 121 A a; 122 const A ca = a; // { dg-error "deleted" } 123 volatile A va; 124 const volatile A cva = a; // { dg-error "deleted" } 125 sink_4_1245(v_source()); // { dg-error "" } 126 sink_4_1245(cv_source()); // { dg-error "" } 127 return 0; 128} 129 130one sink_4_1246( A&); 131two sink_4_1246(const A&); 132four sink_4_1246(const volatile A&); 133six sink_4_1246(const A&&); 134 135int test4_1246() 136{ 137 A a; 138 const A ca = a; // { dg-error "deleted" } 139 volatile A va; 140 const volatile A cva = a; // { dg-error "deleted" } 141 sink_4_1246(v_source()); // { dg-error "" } 142 sink_4_1246(cv_source()); // { dg-error "" } 143 return 0; 144} 145 146one sink_4_1247( A&); 147two sink_4_1247(const A&); 148four sink_4_1247(const volatile A&); 149seven sink_4_1247(volatile A&&); 150 151int test4_1247() 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_4_1247(cv_source()); // { dg-error "" } 158 return 0; 159} 160 161one sink_4_1256( A&); 162two sink_4_1256(const A&); 163five sink_4_1256( A&&); 164six sink_4_1256(const A&&); 165 166int test4_1256() 167{ 168 A a; 169 const A ca = a; // { dg-error "deleted" } 170 volatile A va; 171 const volatile A cva = a; // { dg-error "deleted" } 172 sink_4_1256(va); // { dg-error "" } 173 sink_4_1256(cva); // { dg-error "" } 174 sink_4_1256(v_source()); // { dg-error "" } 175 sink_4_1256(cv_source()); // { dg-error "" } 176 return 0; 177} 178 179one sink_4_1257( A&); 180two sink_4_1257(const A&); 181five sink_4_1257( A&&); 182seven sink_4_1257(volatile A&&); 183 184int test4_1257() 185{ 186 A a; 187 const A ca = a; // { dg-error "deleted" } 188 volatile A va; 189 const volatile A cva = a; // { dg-error "deleted" } 190 sink_4_1257(va); // { dg-error "" } 191 sink_4_1257(cva); // { dg-error "" } 192 sink_4_1257(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 205 volatile A va; 206 const volatile A cva = a; // { dg-error "deleted" } 207 sink_4_1258(va); // { dg-error "" } 208 sink_4_1258(cva); // { dg-error "" } 209 return 0; 210} 211 212one sink_4_1267( A&); 213two sink_4_1267(const A&); 214six sink_4_1267(const A&&); 215seven sink_4_1267(volatile A&&); 216 217int test4_1267() 218{ 219 A a; 220 const A ca = a; // { dg-error "deleted" } 221 volatile A va; 222 const volatile A cva = a; // { dg-error "deleted" } 223 sink_4_1267(va); // { dg-error "" } 224 sink_4_1267(cva); // { dg-error "" } 225 sink_4_1267(source()); // { dg-error "" } 226 sink_4_1267(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 239 volatile A va; 240 const volatile A cva = a; // { dg-error "deleted" } 241 sink_4_1268(va); // { dg-error "" } 242 sink_4_1268(cva); // { dg-error "" } 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; // { dg-error "deleted" } 255 volatile A va; 256 const volatile A cva = a; // { dg-error "deleted" } 257 sink_4_1278(va); // { dg-error "" } 258 sink_4_1278(cva); // { dg-error "" } 259 return 0; 260} 261 262one sink_4_1345( A&); 263three sink_4_1345(volatile A&); 264four sink_4_1345(const volatile A&); 265five sink_4_1345( A&&); 266 267int test4_1345() 268{ 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_4_1345(c_source()); // { dg-error "" } 274 sink_4_1345(v_source()); // { dg-error "" } 275 sink_4_1345(cv_source()); // { dg-error "" } 276 return 0; 277} 278 279one sink_4_1346( A&); 280three sink_4_1346(volatile A&); 281four sink_4_1346(const volatile A&); 282six sink_4_1346(const A&&); 283 284int test4_1346() 285{ 286 A a; 287 const A ca = a; // { dg-error "deleted" } 288 volatile A va; 289 const volatile A cva = a; // { dg-error "deleted" } 290 sink_4_1346(v_source()); // { dg-error "" } 291 sink_4_1346(cv_source()); // { dg-error "" } 292 return 0; 293} 294 295one sink_4_1347( A&); 296three sink_4_1347(volatile A&); 297four sink_4_1347(const volatile A&); 298seven sink_4_1347(volatile A&&); 299 300int test4_1347() 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_4_1347(c_source()); // { dg-error "" } 307 sink_4_1347(cv_source()); // { dg-error "" } 308 return 0; 309} 310 311one sink_4_1356( A&); 312three sink_4_1356(volatile A&); 313five sink_4_1356( A&&); 314six sink_4_1356(const A&&); 315 316int test4_1356() 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_4_1356(ca); // { dg-error "" } 323 sink_4_1356(cva); // { dg-error "" } 324 sink_4_1356(v_source()); // { dg-error "" } 325 sink_4_1356(cv_source()); // { dg-error "" } 326 return 0; 327} 328 329one sink_4_1357( A&); 330three sink_4_1357(volatile A&); 331five sink_4_1357( A&&); 332seven sink_4_1357(volatile A&&); 333 334int test4_1357() 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_4_1357(ca); // { dg-error "" } 341 sink_4_1357(cva); // { dg-error "" } 342 sink_4_1357(c_source()); // { dg-error "" } 343 sink_4_1357(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 356 volatile A va; 357 const volatile A cva = a; // { dg-error "deleted" } 358 sink_4_1358(ca); // { dg-error "" } 359 sink_4_1358(cva); // { dg-error "" } 360 return 0; 361} 362 363one sink_4_1367( A&); 364three sink_4_1367(volatile A&); 365six sink_4_1367(const A&&); 366seven sink_4_1367(volatile A&&); 367 368int test4_1367() 369{ 370 A a; 371 const A ca = a; // { dg-error "deleted" } 372 volatile A va; 373 const volatile A cva = a; // { dg-error "deleted" } 374 sink_4_1367(ca); // { dg-error "" } 375 sink_4_1367(cva); // { dg-error "" } 376 sink_4_1367(source()); // { dg-error "" } 377 sink_4_1367(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 390 volatile A va; 391 const volatile A cva = a; // { dg-error "deleted" } 392 sink_4_1368(ca); // { dg-error "" } 393 sink_4_1368(cva); // { dg-error "" } 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; // { dg-error "deleted" } 406 volatile A va; 407 const volatile A cva = a; // { dg-error "deleted" } 408 sink_4_1378(ca); // { dg-error "" } 409 sink_4_1378(cva); // { dg-error "" } 410 return 0; 411} 412 413one sink_4_1456( A&); 414four sink_4_1456(const volatile A&); 415five sink_4_1456( A&&); 416six sink_4_1456(const A&&); 417 418int test4_1456() 419{ 420 A a; 421 const A ca = a; // { dg-error "deleted" } 422 volatile A va; 423 const volatile A cva = a; // { dg-error "deleted" } 424 sink_4_1456(v_source()); // { dg-error "" } 425 sink_4_1456(cv_source()); // { dg-error "" } 426 return 0; 427} 428 429one sink_4_1457( A&); 430four sink_4_1457(const volatile A&); 431five sink_4_1457( A&&); 432seven sink_4_1457(volatile A&&); 433 434int test4_1457() 435{ 436 A a; 437 const A ca = a; // { dg-error "deleted" } 438 volatile A va; 439 const volatile A cva = a; // { dg-error "deleted" } 440 sink_4_1457(c_source()); // { dg-error "" } 441 sink_4_1457(cv_source()); // { dg-error "" } 442 return 0; 443} 444 445one sink_4_1467( A&); 446four sink_4_1467(const volatile A&); 447six sink_4_1467(const A&&); 448seven sink_4_1467(volatile A&&); 449 450int test4_1467() 451{ 452 A a; 453 const A ca = a; // { dg-error "deleted" } 454 volatile A va; 455 const volatile A cva = a; // { dg-error "deleted" } 456 sink_4_1467(source()); // { dg-error "" } 457 sink_4_1467(cv_source()); // { dg-error "" } 458 return 0; 459} 460 461one sink_4_1567( A&); 462five sink_4_1567( A&&); 463six sink_4_1567(const A&&); 464seven sink_4_1567(volatile A&&); 465 466int test4_1567() 467{ 468 A a; 469 const A ca = a; // { dg-error "deleted" } 470 volatile A va; 471 const volatile A cva = a; // { dg-error "deleted" } 472 sink_4_1567(ca); // { dg-error "" } 473 sink_4_1567(va); // { dg-error "" } 474 sink_4_1567(cva); // { dg-error "" } 475 sink_4_1567(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 488 volatile A va; 489 const volatile A cva = a; // { dg-error "deleted" } 490 sink_4_1568(ca); // { dg-error "" } 491 sink_4_1568(va); // { dg-error "" } 492 sink_4_1568(cva); // { dg-error "" } 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; // { dg-error "deleted" } 505 volatile A va; 506 const volatile A cva = a; // { dg-error "deleted" } 507 sink_4_1578(ca); // { dg-error "" } 508 sink_4_1578(va); // { dg-error "" } 509 sink_4_1578(cva); // { dg-error "" } 510 return 0; 511} 512 513one sink_4_1678( A&); 514six sink_4_1678(const A&&); 515seven sink_4_1678(volatile A&&); 516eight sink_4_1678(const volatile A&&); 517 518int test4_1678() 519{ 520 A a; 521 const A ca = a; // { dg-error "deleted" } 522 volatile A va; 523 const volatile A cva = a; // { dg-error "deleted" } 524 sink_4_1678(ca); // { dg-error "" } 525 sink_4_1678(va); // { dg-error "" } 526 sink_4_1678(cva); // { dg-error "" } 527 sink_4_1678(source()); // { dg-error "" } 528 return 0; 529} 530 531two sink_4_2345(const A&); 532three sink_4_2345(volatile A&); 533four sink_4_2345(const volatile A&); 534five sink_4_2345( A&&); 535 536int test4_2345() 537{ 538 A a; 539 const A ca = a; // { dg-error "deleted" } 540 volatile A va; 541 const volatile A cva = a; // { dg-error "deleted" } 542 sink_4_2345(a); // { dg-error "" } 543 sink_4_2345(v_source()); // { dg-error "" } 544 sink_4_2345(cv_source()); // { dg-error "" } 545 return 0; 546} 547 548two sink_4_2346(const A&); 549three sink_4_2346(volatile A&); 550four sink_4_2346(const volatile A&); 551six sink_4_2346(const A&&); 552 553int test4_2346() 554{ 555 A a; 556 const A ca = a; // { dg-error "deleted" } 557 volatile A va; 558 const volatile A cva = a; // { dg-error "deleted" } 559 sink_4_2346(a); // { dg-error "" } 560 sink_4_2346(v_source()); // { dg-error "" } 561 sink_4_2346(cv_source()); // { dg-error "" } 562 return 0; 563} 564 565two sink_4_2347(const A&); 566three sink_4_2347(volatile A&); 567four sink_4_2347(const volatile A&); 568seven sink_4_2347(volatile A&&); 569 570int test4_2347() 571{ 572 A a; 573 const A ca = a; // { dg-error "deleted" } 574 volatile A va; 575 const volatile A cva = a; // { dg-error "deleted" } 576 sink_4_2347(a); // { dg-error "" } 577 sink_4_2347(cv_source()); // { dg-error "" } 578 return 0; 579} 580 581two sink_4_2348(const A&); 582three sink_4_2348(volatile A&); 583four sink_4_2348(const volatile A&); 584eight sink_4_2348(const volatile A&&); 585 586int test4_2348() 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_4_2348(a); // { dg-error "" } 593 return 0; 594} 595 596two sink_4_2356(const A&); 597three sink_4_2356(volatile A&); 598five sink_4_2356( A&&); 599six sink_4_2356(const A&&); 600 601int test4_2356() 602{ 603 A a; 604 const A ca = a; // { dg-error "deleted" } 605 volatile A va; 606 const volatile A cva = a; // { dg-error "deleted" } 607 sink_4_2356(a); // { dg-error "" } 608 sink_4_2356(cva); // { dg-error "" } 609 sink_4_2356(v_source()); // { dg-error "" } 610 sink_4_2356(cv_source()); // { dg-error "" } 611 return 0; 612} 613 614two sink_4_2357(const A&); 615three sink_4_2357(volatile A&); 616five sink_4_2357( A&&); 617seven sink_4_2357(volatile A&&); 618 619int test4_2357() 620{ 621 A a; 622 const A ca = a; // { dg-error "deleted" } 623 volatile A va; 624 const volatile A cva = a; // { dg-error "deleted" } 625 sink_4_2357(a); // { dg-error "" } 626 sink_4_2357(cva); // { dg-error "" } 627 sink_4_2357(cv_source()); // { dg-error "" } 628 return 0; 629} 630 631two sink_4_2358(const A&); 632three sink_4_2358(volatile A&); 633five sink_4_2358( A&&); 634eight sink_4_2358(const volatile A&&); 635 636int test4_2358() 637{ 638 A a; 639 const A ca = a; // { dg-error "deleted" } 640 volatile A va; 641 const volatile A cva = a; // { dg-error "deleted" } 642 sink_4_2358(a); // { dg-error "" } 643 sink_4_2358(cva); // { dg-error "" } 644 return 0; 645} 646 647two sink_4_2367(const A&); 648three sink_4_2367(volatile A&); 649six sink_4_2367(const A&&); 650seven sink_4_2367(volatile A&&); 651 652int test4_2367() 653{ 654 A a; 655 const A ca = a; // { dg-error "deleted" } 656 volatile A va; 657 const volatile A cva = a; // { dg-error "deleted" } 658 sink_4_2367(a); // { dg-error "" } 659 sink_4_2367(cva); // { dg-error "" } 660 sink_4_2367(source()); // { dg-error "" } 661 sink_4_2367(cv_source()); // { dg-error "" } 662 return 0; 663} 664 665two sink_4_2368(const A&); 666three sink_4_2368(volatile A&); 667six sink_4_2368(const A&&); 668eight sink_4_2368(const volatile A&&); 669 670int test4_2368() 671{ 672 A a; 673 const A ca = a; // { dg-error "deleted" } 674 volatile A va; 675 const volatile A cva = a; // { dg-error "deleted" } 676 sink_4_2368(a); // { dg-error "" } 677 sink_4_2368(cva); // { dg-error "" } 678 return 0; 679} 680 681two sink_4_2378(const A&); 682three sink_4_2378(volatile A&); 683seven sink_4_2378(volatile A&&); 684eight sink_4_2378(const volatile A&&); 685 686int test4_2378() 687{ 688 A a; 689 const A ca = a; // { dg-error "deleted" } 690 volatile A va; 691 const volatile A cva = a; // { dg-error "deleted" } 692 sink_4_2378(a); // { dg-error "" } 693 sink_4_2378(cva); // { dg-error "" } 694 return 0; 695} 696 697two sink_4_2456(const A&); 698four sink_4_2456(const volatile A&); 699five sink_4_2456( A&&); 700six sink_4_2456(const A&&); 701 702int test4_2456() 703{ 704 A a; 705 const A ca = a; // { dg-error "deleted" } 706 volatile A va; 707 const volatile A cva = a; // { dg-error "deleted" } 708 sink_4_2456(v_source()); // { dg-error "" } 709 sink_4_2456(cv_source()); // { dg-error "" } 710 return 0; 711} 712 713two sink_4_2457(const A&); 714four sink_4_2457(const volatile A&); 715five sink_4_2457( A&&); 716seven sink_4_2457(volatile A&&); 717 718int test4_2457() 719{ 720 A a; 721 const A ca = a; // { dg-error "deleted" } 722 volatile A va; 723 const volatile A cva = a; // { dg-error "deleted" } 724 sink_4_2457(cv_source()); // { dg-error "" } 725 return 0; 726} 727 728two sink_4_2467(const A&); 729four sink_4_2467(const volatile A&); 730six sink_4_2467(const A&&); 731seven sink_4_2467(volatile A&&); 732 733int test4_2467() 734{ 735 A a; 736 const A ca = a; // { dg-error "deleted" } 737 volatile A va; 738 const volatile A cva = a; // { dg-error "deleted" } 739 sink_4_2467(source()); // { dg-error "" } 740 sink_4_2467(cv_source()); // { dg-error "" } 741 return 0; 742} 743 744two sink_4_2567(const A&); 745five sink_4_2567( A&&); 746six sink_4_2567(const A&&); 747seven sink_4_2567(volatile A&&); 748 749int test4_2567() 750{ 751 A a; 752 const A ca = a; // { dg-error "deleted" } 753 volatile A va; 754 const volatile A cva = a; // { dg-error "deleted" } 755 sink_4_2567(va); // { dg-error "" } 756 sink_4_2567(cva); // { dg-error "" } 757 sink_4_2567(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 770 volatile A va; 771 const volatile A cva = a; // { dg-error "deleted" } 772 sink_4_2568(va); // { dg-error "" } 773 sink_4_2568(cva); // { dg-error "" } 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; // { dg-error "deleted" } 786 volatile A va; 787 const volatile A cva = a; // { dg-error "deleted" } 788 sink_4_2578(va); // { dg-error "" } 789 sink_4_2578(cva); // { dg-error "" } 790 return 0; 791} 792 793two sink_4_2678(const A&); 794six sink_4_2678(const A&&); 795seven sink_4_2678(volatile A&&); 796eight sink_4_2678(const volatile A&&); 797 798int test4_2678() 799{ 800 A a; 801 const A ca = a; // { dg-error "deleted" } 802 volatile A va; 803 const volatile A cva = a; // { dg-error "deleted" } 804 sink_4_2678(va); // { dg-error "" } 805 sink_4_2678(cva); // { dg-error "" } 806 sink_4_2678(source()); // { dg-error "" } 807 return 0; 808} 809 810three sink_4_3456(volatile A&); 811four sink_4_3456(const volatile A&); 812five sink_4_3456( A&&); 813six sink_4_3456(const A&&); 814 815int test4_3456() 816{ 817 A a; 818 const A ca = a; // { dg-error "deleted" } 819 volatile A va; 820 const volatile A cva = a; // { dg-error "deleted" } 821 sink_4_3456(v_source()); // { dg-error "" } 822 sink_4_3456(cv_source()); // { dg-error "" } 823 return 0; 824} 825 826three sink_4_3457(volatile A&); 827four sink_4_3457(const volatile A&); 828five sink_4_3457( A&&); 829seven sink_4_3457(volatile A&&); 830 831int test4_3457() 832{ 833 A a; 834 const A ca = a; // { dg-error "deleted" } 835 volatile A va; 836 const volatile A cva = a; // { dg-error "deleted" } 837 sink_4_3457(c_source()); // { dg-error "" } 838 sink_4_3457(cv_source()); // { dg-error "" } 839 return 0; 840} 841 842three sink_4_3467(volatile A&); 843four sink_4_3467(const volatile A&); 844six sink_4_3467(const A&&); 845seven sink_4_3467(volatile A&&); 846 847int test4_3467() 848{ 849 A a; 850 const A ca = a; // { dg-error "deleted" } 851 volatile A va; 852 const volatile A cva = a; // { dg-error "deleted" } 853 sink_4_3467(source()); // { dg-error "" } 854 sink_4_3467(cv_source()); // { dg-error "" } 855 return 0; 856} 857 858three sink_4_3567(volatile A&); 859five sink_4_3567( A&&); 860six sink_4_3567(const A&&); 861seven sink_4_3567(volatile A&&); 862 863int test4_3567() 864{ 865 A a; 866 const A ca = a; // { dg-error "deleted" } 867 volatile A va; 868 const volatile A cva = a; // { dg-error "deleted" } 869 sink_4_3567(ca); // { dg-error "" } 870 sink_4_3567(cva); // { dg-error "" } 871 sink_4_3567(cv_source()); // { dg-error "" } 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; // { dg-error "deleted" } 884 volatile A va; 885 const volatile A cva = a; // { dg-error "deleted" } 886 sink_4_3568(ca); // { dg-error "" } 887 sink_4_3568(cva); // { dg-error "" } 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; // { dg-error "deleted" } 900 volatile A va; 901 const volatile A cva = a; // { dg-error "deleted" } 902 sink_4_3578(ca); // { dg-error "" } 903 sink_4_3578(cva); // { dg-error "" } 904 return 0; 905} 906 907three sink_4_3678(volatile A&); 908six sink_4_3678(const A&&); 909seven sink_4_3678(volatile A&&); 910eight sink_4_3678(const volatile A&&); 911 912int test4_3678() 913{ 914 A a; 915 const A ca = a; // { dg-error "deleted" } 916 volatile A va; 917 const volatile A cva = a; // { dg-error "deleted" } 918 sink_4_3678(ca); // { dg-error "" } 919 sink_4_3678(cva); // { dg-error "" } 920 sink_4_3678(source()); // { dg-error "" } 921 return 0; 922} 923 924four sink_4_4567(const volatile A&); 925five sink_4_4567( A&&); 926six sink_4_4567(const A&&); 927seven sink_4_4567(volatile A&&); 928 929int test4_4567() 930{ 931 A a; 932 const A ca = a; // { dg-error "deleted" } 933 volatile A va; 934 const volatile A cva = a; // { dg-error "deleted" } 935 sink_4_4567(cv_source()); // { dg-error "" } 936 return 0; 937} 938 939four sink_4_4678(const volatile A&); 940six sink_4_4678(const A&&); 941seven sink_4_4678(volatile A&&); 942eight sink_4_4678(const volatile A&&); 943 944int test4_4678() 945{ 946 A a; 947 const A ca = a; // { dg-error "deleted" } 948 volatile A va; 949 const volatile A cva = a; // { dg-error "deleted" } 950 sink_4_4678(source()); // { dg-error "" } 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; // { dg-error "deleted" } 963 volatile A va; 964 const volatile A cva = a; // { dg-error "deleted" } 965 sink_4_5678(a); // { dg-error "" } 966 sink_4_5678(ca); // { dg-error "" } 967 sink_4_5678(va); // { dg-error "" } 968 sink_4_5678(cva); // { dg-error "" } 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