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 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&&); 24 }; 25 26 A source(); 27 const A c_source(); 28 volatile A v_source(); 29 const volatile A cv_source(); 30 31 // 4 at a time 32 33 one sink_4_1234( A&); 34 two sink_4_1234(const A&); 35 three sink_4_1234(volatile A&); 36 four sink_4_1234(const volatile A&); 37 38 int 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 49 one sink_4_1235( A&); 50 two sink_4_1235(const A&); 51 three sink_4_1235(volatile A&); 52 five sink_4_1235( A&&); 53 54 int 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 66 one sink_4_1236( A&); 67 two sink_4_1236(const A&); 68 three sink_4_1236(volatile A&); 69 six sink_4_1236(const A&&); 70 71 int 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 83 one sink_4_1237( A&); 84 two sink_4_1237(const A&); 85 three sink_4_1237(volatile A&); 86 seven sink_4_1237(volatile A&&); 87 88 int 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 99 one sink_4_1238( A&); 100 two sink_4_1238(const A&); 101 three sink_4_1238(volatile A&); 102 eight sink_4_1238(const volatile A&&); // { dg-message "" } 103 104 int 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 114 one sink_4_1245( A&); 115 two sink_4_1245(const A&); 116 four sink_4_1245(const volatile A&); 117 five sink_4_1245( A&&); 118 119 int 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 130 one sink_4_1246( A&); 131 two sink_4_1246(const A&); 132 four sink_4_1246(const volatile A&); 133 six sink_4_1246(const A&&); 134 135 int 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 146 one sink_4_1247( A&); 147 two sink_4_1247(const A&); 148 four sink_4_1247(const volatile A&); 149 seven sink_4_1247(volatile A&&); 150 151 int 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 161 one sink_4_1256( A&); 162 two sink_4_1256(const A&); 163 five sink_4_1256( A&&); 164 six sink_4_1256(const A&&); 165 166 int 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 179 one sink_4_1257( A&); 180 two sink_4_1257(const A&); 181 five sink_4_1257( A&&); 182 seven sink_4_1257(volatile A&&); 183 184 int 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 196 one sink_4_1258( A&); 197 two sink_4_1258(const A&); 198 five sink_4_1258( A&&); 199 eight sink_4_1258(const volatile A&&); // { dg-message "" } 200 201 int 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 212 one sink_4_1267( A&); 213 two sink_4_1267(const A&); 214 six sink_4_1267(const A&&); 215 seven sink_4_1267(volatile A&&); 216 217 int 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 230 one sink_4_1268( A&); 231 two sink_4_1268(const A&); 232 six sink_4_1268(const A&&); 233 eight sink_4_1268(const volatile A&&); // { dg-message "" } 234 235 int 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 246 one sink_4_1278( A&); 247 two sink_4_1278(const A&); 248 seven sink_4_1278(volatile A&&); // { dg-message "" } 249 eight sink_4_1278(const volatile A&&); // { dg-message "" } 250 251 int 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 262 one sink_4_1345( A&); 263 three sink_4_1345(volatile A&); 264 four sink_4_1345(const volatile A&); 265 five sink_4_1345( A&&); 266 267 int 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 279 one sink_4_1346( A&); 280 three sink_4_1346(volatile A&); 281 four sink_4_1346(const volatile A&); 282 six sink_4_1346(const A&&); 283 284 int 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 295 one sink_4_1347( A&); 296 three sink_4_1347(volatile A&); 297 four sink_4_1347(const volatile A&); 298 seven sink_4_1347(volatile A&&); 299 300 int 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 311 one sink_4_1356( A&); 312 three sink_4_1356(volatile A&); 313 five sink_4_1356( A&&); 314 six sink_4_1356(const A&&); 315 316 int 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 329 one sink_4_1357( A&); 330 three sink_4_1357(volatile A&); 331 five sink_4_1357( A&&); 332 seven sink_4_1357(volatile A&&); 333 334 int 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 347 one sink_4_1358( A&); 348 three sink_4_1358(volatile A&); 349 five sink_4_1358( A&&); 350 eight sink_4_1358(const volatile A&&); // { dg-message "" } 351 352 int 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 363 one sink_4_1367( A&); 364 three sink_4_1367(volatile A&); 365 six sink_4_1367(const A&&); 366 seven sink_4_1367(volatile A&&); 367 368 int 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 381 one sink_4_1368( A&); 382 three sink_4_1368(volatile A&); 383 six sink_4_1368(const A&&); // { dg-message "" } 384 eight sink_4_1368(const volatile A&&); // { dg-message "" } 385 386 int 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 397 one sink_4_1378( A&); 398 three sink_4_1378(volatile A&); 399 seven sink_4_1378(volatile A&&); 400 eight sink_4_1378(const volatile A&&); // { dg-message "" } 401 402 int 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 413 one sink_4_1456( A&); 414 four sink_4_1456(const volatile A&); 415 five sink_4_1456( A&&); 416 six sink_4_1456(const A&&); 417 418 int 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 429 one sink_4_1457( A&); 430 four sink_4_1457(const volatile A&); 431 five sink_4_1457( A&&); 432 seven sink_4_1457(volatile A&&); 433 434 int 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 445 one sink_4_1467( A&); 446 four sink_4_1467(const volatile A&); 447 six sink_4_1467(const A&&); 448 seven sink_4_1467(volatile A&&); 449 450 int 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 461 one sink_4_1567( A&); 462 five sink_4_1567( A&&); 463 six sink_4_1567(const A&&); 464 seven sink_4_1567(volatile A&&); 465 466 int 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 479 one sink_4_1568( A&); 480 five sink_4_1568( A&&); 481 six sink_4_1568(const A&&); // { dg-message "" } 482 eight sink_4_1568(const volatile A&&); // { dg-message "" } 483 484 int 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 496 one sink_4_1578( A&); 497 five sink_4_1578( A&&); 498 seven sink_4_1578(volatile A&&); // { dg-message "" } 499 eight sink_4_1578(const volatile A&&); // { dg-message "" } 500 501 int 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 513 one sink_4_1678( A&); 514 six sink_4_1678(const A&&); 515 seven sink_4_1678(volatile A&&); 516 eight sink_4_1678(const volatile A&&); 517 518 int 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 531 two sink_4_2345(const A&); 532 three sink_4_2345(volatile A&); 533 four sink_4_2345(const volatile A&); 534 five sink_4_2345( A&&); 535 536 int 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 548 two sink_4_2346(const A&); 549 three sink_4_2346(volatile A&); 550 four sink_4_2346(const volatile A&); 551 six sink_4_2346(const A&&); 552 553 int 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 565 two sink_4_2347(const A&); 566 three sink_4_2347(volatile A&); 567 four sink_4_2347(const volatile A&); 568 seven sink_4_2347(volatile A&&); 569 570 int 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 581 two sink_4_2348(const A&); 582 three sink_4_2348(volatile A&); 583 four sink_4_2348(const volatile A&); 584 eight sink_4_2348(const volatile A&&); 585 586 int 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 596 two sink_4_2356(const A&); 597 three sink_4_2356(volatile A&); 598 five sink_4_2356( A&&); 599 six sink_4_2356(const A&&); 600 601 int 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 614 two sink_4_2357(const A&); 615 three sink_4_2357(volatile A&); 616 five sink_4_2357( A&&); 617 seven sink_4_2357(volatile A&&); 618 619 int 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 631 two sink_4_2358(const A&); 632 three sink_4_2358(volatile A&); 633 five sink_4_2358( A&&); 634 eight sink_4_2358(const volatile A&&); 635 636 int 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 647 two sink_4_2367(const A&); 648 three sink_4_2367(volatile A&); 649 six sink_4_2367(const A&&); 650 seven sink_4_2367(volatile A&&); 651 652 int 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 665 two sink_4_2368(const A&); 666 three sink_4_2368(volatile A&); 667 six sink_4_2368(const A&&); 668 eight sink_4_2368(const volatile A&&); 669 670 int 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 681 two sink_4_2378(const A&); 682 three sink_4_2378(volatile A&); 683 seven sink_4_2378(volatile A&&); 684 eight sink_4_2378(const volatile A&&); 685 686 int 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 697 two sink_4_2456(const A&); 698 four sink_4_2456(const volatile A&); 699 five sink_4_2456( A&&); 700 six sink_4_2456(const A&&); 701 702 int 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 713 two sink_4_2457(const A&); 714 four sink_4_2457(const volatile A&); 715 five sink_4_2457( A&&); 716 seven sink_4_2457(volatile A&&); 717 718 int 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 728 two sink_4_2467(const A&); 729 four sink_4_2467(const volatile A&); 730 six sink_4_2467(const A&&); 731 seven sink_4_2467(volatile A&&); 732 733 int 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 744 two sink_4_2567(const A&); 745 five sink_4_2567( A&&); 746 six sink_4_2567(const A&&); 747 seven sink_4_2567(volatile A&&); 748 749 int 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 761 two sink_4_2568(const A&); 762 five sink_4_2568( A&&); 763 six sink_4_2568(const A&&); 764 eight sink_4_2568(const volatile A&&); // { dg-message "" } 765 766 int 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 777 two sink_4_2578(const A&); 778 five sink_4_2578( A&&); 779 seven sink_4_2578(volatile A&&); // { dg-message "" } 780 eight sink_4_2578(const volatile A&&); // { dg-message "" } 781 782 int 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 793 two sink_4_2678(const A&); 794 six sink_4_2678(const A&&); 795 seven sink_4_2678(volatile A&&); 796 eight sink_4_2678(const volatile A&&); 797 798 int 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 810 three sink_4_3456(volatile A&); 811 four sink_4_3456(const volatile A&); 812 five sink_4_3456( A&&); 813 six sink_4_3456(const A&&); 814 815 int 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 826 three sink_4_3457(volatile A&); 827 four sink_4_3457(const volatile A&); 828 five sink_4_3457( A&&); 829 seven sink_4_3457(volatile A&&); 830 831 int 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 842 three sink_4_3467(volatile A&); 843 four sink_4_3467(const volatile A&); 844 six sink_4_3467(const A&&); 845 seven sink_4_3467(volatile A&&); 846 847 int 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 858 three sink_4_3567(volatile A&); 859 five sink_4_3567( A&&); 860 six sink_4_3567(const A&&); 861 seven sink_4_3567(volatile A&&); 862 863 int 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 875 three sink_4_3568(volatile A&); 876 five sink_4_3568( A&&); 877 six sink_4_3568(const A&&); // { dg-message "" } 878 eight sink_4_3568(const volatile A&&); // { dg-message "" } 879 880 int 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 891 three sink_4_3578(volatile A&); 892 five sink_4_3578( A&&); 893 seven sink_4_3578(volatile A&&); 894 eight sink_4_3578(const volatile A&&); // { dg-message "" } 895 896 int 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 907 three sink_4_3678(volatile A&); 908 six sink_4_3678(const A&&); 909 seven sink_4_3678(volatile A&&); 910 eight sink_4_3678(const volatile A&&); 911 912 int 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 924 four sink_4_4567(const volatile A&); 925 five sink_4_4567( A&&); 926 six sink_4_4567(const A&&); 927 seven sink_4_4567(volatile A&&); 928 929 int 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 939 four sink_4_4678(const volatile A&); 940 six sink_4_4678(const A&&); 941 seven sink_4_4678(volatile A&&); 942 eight sink_4_4678(const volatile A&&); 943 944 int 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 954 five sink_4_5678( A&&); // { dg-message "" } 955 six sink_4_5678(const A&&); // { dg-message "" } 956 seven sink_4_5678(volatile A&&); // { dg-message "" } 957 eight sink_4_5678(const volatile A&&); // { dg-message "" } 958 959 int 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 972 int 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