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 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 // 5 at a time 32 33 one sink_5_12345( A&); // { dg-message "one sink_5_12345|no known conversion" } 34 two sink_5_12345(const A&); // { dg-message "note" } 35 three sink_5_12345(volatile A&); // { dg-message "note" } 36 four sink_5_12345(const volatile A&); // { dg-message "note" } 37 five sink_5_12345( A&&); // { dg-message "note" } 38 39 int test5_12345() 40 { 41 A a; 42 const A ca = a; // { dg-error "deleted" } 43 volatile A va; 44 const volatile A cva = a; // { dg-error "deleted" } 45 sink_5_12345(v_source()); // { dg-error "no match" } 46 // { dg-message "candidate" "candidate note" { target *-*-* } 45 } 47 sink_5_12345(cv_source()); // { dg-error "no match" } 48 // { dg-message "candidate" "candidate note" { target *-*-* } 47 } 49 return 0; 50 } 51 52 one sink_5_12346( A&); // { dg-message "one sink_5_12346|no known conversion" } 53 two sink_5_12346(const A&); // { dg-message "note" } 54 three sink_5_12346(volatile A&); // { dg-message "note" } 55 four sink_5_12346(const volatile A&); // { dg-message "note" } 56 six sink_5_12346(const A&&); // { dg-message "note" } 57 58 int test5_12346() 59 { 60 A a; 61 const A ca = a; // { dg-error "deleted" } 62 volatile A va; 63 const volatile A cva = a; // { dg-error "deleted" } 64 sink_5_12346(v_source()); // { dg-error "no match" } 65 // { dg-message "candidate" "candidate note" { target *-*-* } 64 } 66 sink_5_12346(cv_source()); // { dg-error "no match" } 67 // { dg-message "candidate" "candidate note" { target *-*-* } 66 } 68 return 0; 69 } 70 71 one sink_5_12347( A&); // { dg-message "one sink_5_12347|no known conversion" } 72 two sink_5_12347(const A&); // { dg-message "note" } 73 three sink_5_12347(volatile A&); // { dg-message "note" } 74 four sink_5_12347(const volatile A&); // { dg-message "note" } 75 seven sink_5_12347(volatile A&&); // { dg-message "note" } 76 77 int test5_12347() 78 { 79 A a; 80 const A ca = a; // { dg-error "deleted" } 81 volatile A va; 82 const volatile A cva = a; // { dg-error "deleted" } 83 sink_5_12347(cv_source()); // { dg-error "no match" } 84 // { dg-message "candidate" "candidate note" { target *-*-* } 83 } 85 return 0; 86 } 87 88 one sink_5_12356( A&); // { dg-message "one sink_5_12356|no known conversion" } 89 two sink_5_12356(const A&); // { dg-message "note" } 90 three sink_5_12356(volatile A&); // { dg-message "note" } 91 five sink_5_12356( A&&); // { dg-message "note" } 92 six sink_5_12356(const A&&); // { dg-message "note" } 93 94 int test5_12356() 95 { 96 A a; 97 const A ca = a; // { dg-error "deleted" } 98 volatile A va; 99 const volatile A cva = a; // { dg-error "deleted" } 100 sink_5_12356(cva); // { dg-error "no match" } 101 // { dg-message "candidate" "candidate note" { target *-*-* } 100 } 102 sink_5_12356(v_source()); // { dg-error "no match" } 103 // { dg-message "candidate" "candidate note" { target *-*-* } 102 } 104 sink_5_12356(cv_source()); // { dg-error "no match" } 105 // { dg-message "candidate" "candidate note" { target *-*-* } 104 } 106 return 0; 107 } 108 109 one sink_5_12357( A&); // { dg-message "one sink_5_12357|no known conversion" } 110 two sink_5_12357(const A&); // { dg-message "note" } 111 three sink_5_12357(volatile A&); // { dg-message "note" } 112 five sink_5_12357( A&&); // { dg-message "note" } 113 seven sink_5_12357(volatile A&&); // { dg-message "note" } 114 115 int test5_12357() 116 { 117 A a; 118 const A ca = a; // { dg-error "deleted" } 119 volatile A va; 120 const volatile A cva = a; // { dg-error "deleted" } 121 sink_5_12357(cva); // { dg-error "no match" } 122 // { dg-message "candidate" "candidate note" { target *-*-* } 121 } 123 sink_5_12357(cv_source()); // { dg-error "no match" } 124 // { dg-message "candidate" "candidate note" { target *-*-* } 123 } 125 return 0; 126 } 127 128 one sink_5_12358( A&); 129 two sink_5_12358(const A&); 130 three sink_5_12358(volatile A&); 131 five sink_5_12358( A&&); 132 eight sink_5_12358(const volatile A&&); // { dg-message "" } 133 134 int test5_12358() 135 { 136 A a; 137 const A ca = a; // { dg-error "deleted" } 138 volatile A va; 139 const volatile A cva = a; // { dg-error "deleted" } 140 sink_5_12358(cva); // { dg-error "lvalue" } 141 return 0; 142 } 143 144 one sink_5_12367( A&); // { dg-message "one sink_5_12367|no known conversion" } 145 two sink_5_12367(const A&); // { dg-message "note" } 146 three sink_5_12367(volatile A&); // { dg-message "note" } 147 six sink_5_12367(const A&&); // { dg-message "note" } 148 seven sink_5_12367(volatile A&&); // { dg-message "note" } 149 150 int test5_12367() 151 { 152 A a; 153 const A ca = a; // { dg-error "deleted" } 154 volatile A va; 155 const volatile A cva = a; // { dg-error "deleted" } 156 sink_5_12367(cva); // { dg-error "no match" } 157 // { dg-message "candidate" "candidate note" { target *-*-* } 156 } 158 sink_5_12367(source()); // { dg-error "ambiguous" } 159 // { dg-message "candidate" "candidate note" { target *-*-* } 158 } 160 sink_5_12367(cv_source()); // { dg-error "no match" } 161 // { dg-message "candidate" "candidate note" { target *-*-* } 160 } 162 return 0; 163 } 164 165 one sink_5_12368( A&); 166 two sink_5_12368(const A&); 167 three sink_5_12368(volatile A&); 168 six sink_5_12368(const A&&); 169 eight sink_5_12368(const volatile A&&); // { dg-message "" } 170 171 int test5_12368() 172 { 173 A a; 174 const A ca = a; // { dg-error "deleted" } 175 volatile A va; 176 const volatile A cva = a; // { dg-error "deleted" } 177 sink_5_12368(cva); // { dg-error "lvalue" } 178 return 0; 179 } 180 181 one sink_5_12378( A&); 182 two sink_5_12378(const A&); 183 three sink_5_12378(volatile A&); 184 seven sink_5_12378(volatile A&&); 185 eight sink_5_12378(const volatile A&&); // { dg-message "" } 186 187 int test5_12378() 188 { 189 A a; 190 const A ca = a; // { dg-error "deleted" } 191 volatile A va; 192 const volatile A cva = a; // { dg-error "deleted" } 193 sink_5_12378(cva); // { dg-error "lvalue" } 194 return 0; 195 } 196 197 one sink_5_12456( A&); // { dg-message "one sink_5_12456|no known conversion" } 198 two sink_5_12456(const A&); // { dg-message "note" } 199 four sink_5_12456(const volatile A&); // { dg-message "note" } 200 five sink_5_12456( A&&); // { dg-message "note" } 201 six sink_5_12456(const A&&); // { dg-message "note" } 202 203 int test5_12456() 204 { 205 A a; 206 const A ca = a; // { dg-error "deleted" } 207 volatile A va; 208 const volatile A cva = a; // { dg-error "deleted" } 209 sink_5_12456(v_source()); // { dg-error "no match" } 210 // { dg-message "candidate" "candidate note" { target *-*-* } 209 } 211 sink_5_12456(cv_source()); // { dg-error "no match" } 212 // { dg-message "candidate" "candidate note" { target *-*-* } 211 } 213 return 0; 214 } 215 216 one sink_5_12457( A&); // { dg-message "one sink_5_12457|no known conversion" } 217 two sink_5_12457(const A&); // { dg-message "note" } 218 four sink_5_12457(const volatile A&); // { dg-message "note" } 219 five sink_5_12457( A&&); // { dg-message "note" } 220 seven sink_5_12457(volatile A&&); // { dg-message "note" } 221 222 int test5_12457() 223 { 224 A a; 225 const A ca = a; // { dg-error "deleted" } 226 volatile A va; 227 const volatile A cva = a; // { dg-error "deleted" } 228 sink_5_12457(cv_source()); // { dg-error "no match" } 229 // { dg-message "candidate" "candidate note" { target *-*-* } 228 } 230 return 0; 231 } 232 233 one sink_5_12467( A&); // { dg-message "one sink_5_12467|no known conversion" } 234 two sink_5_12467(const A&); // { dg-message "note" } 235 four sink_5_12467(const volatile A&); // { dg-message "note" } 236 six sink_5_12467(const A&&); // { dg-message "note" } 237 seven sink_5_12467(volatile A&&); // { dg-message "note" } 238 239 int test5_12467() 240 { 241 A a; 242 const A ca = a; // { dg-error "deleted" } 243 volatile A va; 244 const volatile A cva = a; // { dg-error "deleted" } 245 sink_5_12467(source()); // { dg-error "ambiguous" } 246 // { dg-message "candidate" "candidate note" { target *-*-* } 245 } 247 sink_5_12467(cv_source()); // { dg-error "no match" } 248 // { dg-message "candidate" "candidate note" { target *-*-* } 247 } 249 return 0; 250 } 251 252 one sink_5_12567( A&); // { dg-message "one sink_5_12567|no known conversion" } 253 two sink_5_12567(const A&); // { dg-message "note" } 254 five sink_5_12567( A&&); // { dg-message "note" } 255 six sink_5_12567(const A&&); // { dg-message "note" } 256 seven sink_5_12567(volatile A&&); // { dg-message "" } 257 258 int test5_12567() 259 { 260 A a; 261 const A ca = a; // { dg-error "deleted" } 262 volatile A va; 263 const volatile A cva = a; // { dg-error "deleted" } 264 sink_5_12567(va); // { dg-error "lvalue" } 265 sink_5_12567(cva); // { dg-error "no match" } 266 // { dg-message "candidate" "candidate note" { target *-*-* } 265 } 267 sink_5_12567(cv_source()); // { dg-error "no match" } 268 // { dg-message "candidate" "candidate note" { target *-*-* } 267 } 269 return 0; 270 } 271 272 one sink_5_12568( A&); 273 two sink_5_12568(const A&); 274 five sink_5_12568( A&&); 275 six sink_5_12568(const A&&); 276 eight sink_5_12568(const volatile A&&); // { dg-message "" } 277 278 int test5_12568() 279 { 280 A a; 281 const A ca = a; // { dg-error "deleted" } 282 volatile A va; 283 const volatile A cva = a; // { dg-error "deleted" } 284 sink_5_12568(va); // { dg-error "lvalue" } 285 sink_5_12568(cva); // { dg-error "lvalue" } 286 return 0; 287 } 288 289 one sink_5_12578( A&); 290 two sink_5_12578(const A&); 291 five sink_5_12578( A&&); 292 seven sink_5_12578(volatile A&&); // { dg-message "" } 293 eight sink_5_12578(const volatile A&&); // { dg-message "" } 294 295 int test5_12578() 296 { 297 A a; 298 const A ca = a; // { dg-error "deleted" } 299 volatile A va; 300 const volatile A cva = a; // { dg-error "deleted" } 301 sink_5_12578(va); // { dg-error "lvalue" } 302 sink_5_12578(cva); // { dg-error "lvalue" } 303 return 0; 304 } 305 306 one sink_5_12678( A&); 307 two sink_5_12678(const A&); // { dg-message "note" } 308 six sink_5_12678(const A&&); // { dg-message "note" } 309 seven sink_5_12678(volatile A&&); // { dg-message "" } 310 eight sink_5_12678(const volatile A&&); // { dg-message "" } 311 312 int test5_12678() 313 { 314 A a; 315 const A ca = a; // { dg-error "deleted" } 316 volatile A va; 317 const volatile A cva = a; // { dg-error "deleted" } 318 sink_5_12678(va); // { dg-error "lvalue" } 319 sink_5_12678(cva); // { dg-error "lvalue" } 320 sink_5_12678(source()); // { dg-error "ambiguous" } 321 // { dg-message "candidate" "candidate note" { target *-*-* } 320 } 322 return 0; 323 } 324 325 one sink_5_13456( A&); // { dg-message "one sink_5_13456|no known conversion" } 326 three sink_5_13456(volatile A&); // { dg-message "note" } 327 four sink_5_13456(const volatile A&); // { dg-message "note" } 328 five sink_5_13456( A&&); // { dg-message "note" } 329 six sink_5_13456(const A&&); // { dg-message "note" } 330 331 int test5_13456() 332 { 333 A a; 334 const A ca = a; // { dg-error "deleted" } 335 volatile A va; 336 const volatile A cva = a; // { dg-error "deleted" } 337 sink_5_13456(v_source()); // { dg-error "no match" } 338 // { dg-message "candidate" "candidate note" { target *-*-* } 337 } 339 sink_5_13456(cv_source()); // { dg-error "no match" } 340 // { dg-message "candidate" "candidate note" { target *-*-* } 339 } 341 return 0; 342 } 343 344 one sink_5_13457( A&); // { dg-message "one sink_5_13457|no known conversion" } 345 three sink_5_13457(volatile A&); // { dg-message "note" } 346 four sink_5_13457(const volatile A&); // { dg-message "note" } 347 five sink_5_13457( A&&); // { dg-message "note" } 348 seven sink_5_13457(volatile A&&); // { dg-message "note" } 349 350 int test5_13457() 351 { 352 A a; 353 const A ca = a; // { dg-error "deleted" } 354 volatile A va; 355 const volatile A cva = a; // { dg-error "deleted" } 356 sink_5_13457(c_source()); // { dg-error "no match" } 357 // { dg-message "candidate" "candidate note" { target *-*-* } 356 } 358 sink_5_13457(cv_source()); // { dg-error "no match" } 359 // { dg-message "candidate" "candidate note" { target *-*-* } 358 } 360 return 0; 361 } 362 363 one sink_5_13467( A&); // { dg-message "one sink_5_13467|no known conversion" } 364 three sink_5_13467(volatile A&); // { dg-message "note" } 365 four sink_5_13467(const volatile A&); // { dg-message "note" } 366 six sink_5_13467(const A&&); // { dg-message "note" } 367 seven sink_5_13467(volatile A&&); // { dg-message "note" } 368 369 int test5_13467() 370 { 371 A a; 372 const A ca = a; // { dg-error "deleted" } 373 volatile A va; 374 const volatile A cva = a; // { dg-error "deleted" } 375 sink_5_13467(source()); // { dg-error "ambiguous" } 376 // { dg-message "candidate" "candidate note" { target *-*-* } 375 } 377 sink_5_13467(cv_source()); // { dg-error "no match" } 378 // { dg-message "candidate" "candidate note" { target *-*-* } 377 } 379 return 0; 380 } 381 382 one sink_5_13567( A&); // { dg-message "one sink_5_13567|no known conversion" } 383 three sink_5_13567(volatile A&); // { dg-message "note" } 384 five sink_5_13567( A&&); // { dg-message "note" } 385 six sink_5_13567(const A&&); // { dg-message "" } 386 seven sink_5_13567(volatile A&&); // { dg-message "note" } 387 388 int test5_13567() 389 { 390 A a; 391 const A ca = a; // { dg-error "deleted" } 392 volatile A va; 393 const volatile A cva = a; // { dg-error "deleted" } 394 sink_5_13567(ca); // { dg-error "lvalue" } 395 sink_5_13567(cva); // { dg-error "no match" } 396 // { dg-message "candidate" "candidate note" { target *-*-* } 395 } 397 sink_5_13567(cv_source()); // { dg-error "no match" } 398 // { dg-message "candidate" "candidate note" { target *-*-* } 397 } 399 return 0; 400 } 401 402 one sink_5_13568( A&); 403 three sink_5_13568(volatile A&); 404 five sink_5_13568( A&&); 405 six sink_5_13568(const A&&); // { dg-message "" } 406 eight sink_5_13568(const volatile A&&); // { dg-message "" } 407 408 int test5_13568() 409 { 410 A a; 411 const A ca = a; // { dg-error "deleted" } 412 volatile A va; 413 const volatile A cva = a; // { dg-error "deleted" } 414 sink_5_13568(ca); // { dg-error "lvalue" } 415 sink_5_13568(cva); // { dg-error "lvalue" } 416 return 0; 417 } 418 419 one sink_5_13578( A&); 420 three sink_5_13578(volatile A&); 421 five sink_5_13578( A&&); 422 seven sink_5_13578(volatile A&&); 423 eight sink_5_13578(const volatile A&&); // { dg-message "" } 424 425 int test5_13578() 426 { 427 A a; 428 const A ca = a; // { dg-error "deleted" } 429 volatile A va; 430 const volatile A cva = a; // { dg-error "deleted" } 431 sink_5_13578(ca); // { dg-error "lvalue" } 432 sink_5_13578(cva); // { dg-error "lvalue" } 433 return 0; 434 } 435 436 one sink_5_13678( A&); 437 three sink_5_13678(volatile A&); 438 six sink_5_13678(const A&&); // { dg-message "" } 439 seven sink_5_13678(volatile A&&); // { dg-message "note" } 440 eight sink_5_13678(const volatile A&&); // { dg-message "" } 441 442 int test5_13678() 443 { 444 A a; 445 const A ca = a; // { dg-error "deleted" } 446 volatile A va; 447 const volatile A cva = a; // { dg-error "deleted" } 448 sink_5_13678(ca); // { dg-error "lvalue" } 449 sink_5_13678(cva); // { dg-error "lvalue" } 450 sink_5_13678(source()); // { dg-error "ambiguous" } 451 // { dg-message "candidate" "candidate note" { target *-*-* } 450 } 452 return 0; 453 } 454 455 one sink_5_14567( A&); // { dg-message "one sink_5_14567|no known conversion" } 456 four sink_5_14567(const volatile A&); // { dg-message "note" } 457 five sink_5_14567( A&&); // { dg-message "note" } 458 six sink_5_14567(const A&&); // { dg-message "note" } 459 seven sink_5_14567(volatile A&&); // { dg-message "note" } 460 461 int test5_14567() 462 { 463 A a; 464 const A ca = a; // { dg-error "deleted" } 465 volatile A va; 466 const volatile A cva = a; // { dg-error "deleted" } 467 sink_5_14567(cv_source()); // { dg-error "no match" } 468 // { dg-message "candidate" "candidate note" { target *-*-* } 467 } 469 return 0; 470 } 471 472 one sink_5_14678( A&); 473 four sink_5_14678(const volatile A&); 474 six sink_5_14678(const A&&); // { dg-message "note" } 475 seven sink_5_14678(volatile A&&); // { dg-message "note" } 476 eight sink_5_14678(const volatile A&&); // { dg-message "note" } 477 478 int test5_14678() 479 { 480 A a; 481 const A ca = a; // { dg-error "deleted" } 482 volatile A va; 483 const volatile A cva = a; // { dg-error "deleted" } 484 sink_5_14678(source()); // { dg-error "ambiguous" } 485 // { dg-message "candidate" "candidate note" { target *-*-* } 484 } 486 return 0; 487 } 488 489 one sink_5_15678( A&); 490 five sink_5_15678( A&&); 491 six sink_5_15678(const A&&); // { dg-message "" } 492 seven sink_5_15678(volatile A&&); // { dg-message "" } 493 eight sink_5_15678(const volatile A&&); // { dg-message "" } 494 495 int test5_15678() 496 { 497 A a; 498 const A ca = a; // { dg-error "deleted" } 499 volatile A va; 500 const volatile A cva = a; // { dg-error "deleted" } 501 sink_5_15678(ca); // { dg-error "lvalue" } 502 sink_5_15678(va); // { dg-error "lvalue" } 503 sink_5_15678(cva); // { dg-error "lvalue" } 504 return 0; 505 } 506 507 two sink_5_23456(const A&); // { dg-message "two sink_5_23456|no known conversion" } 508 three sink_5_23456(volatile A&); // { dg-message "note" } 509 four sink_5_23456(const volatile A&); // { dg-message "note" } 510 five sink_5_23456( A&&); // { dg-message "note" } 511 six sink_5_23456(const A&&); // { dg-message "note" } 512 513 int test5_23456() 514 { 515 A a; 516 const A ca = a; // { dg-error "deleted" } 517 volatile A va; 518 const volatile A cva = a; // { dg-error "deleted" } 519 sink_5_23456(a); // { dg-error "ambiguous" } 520 // { dg-message "candidate" "candidate note" { target *-*-* } 519 } 521 sink_5_23456(v_source()); // { dg-error "no match" } 522 // { dg-message "candidate" "candidate note" { target *-*-* } 521 } 523 sink_5_23456(cv_source()); // { dg-error "no match" } 524 // { dg-message "candidate" "candidate note" { target *-*-* } 523 } 525 return 0; 526 } 527 528 two sink_5_23457(const A&); // { dg-message "two sink_5_23457|no known conversion" } 529 three sink_5_23457(volatile A&); // { dg-message "note" } 530 four sink_5_23457(const volatile A&); // { dg-message "note" } 531 five sink_5_23457( A&&); // { dg-message "note" } 532 seven sink_5_23457(volatile A&&); // { dg-message "note" } 533 534 int test5_23457() 535 { 536 A a; 537 const A ca = a; // { dg-error "deleted" } 538 volatile A va; 539 const volatile A cva = a; // { dg-error "deleted" } 540 sink_5_23457(a); // { dg-error "ambiguous" } 541 // { dg-message "candidate" "candidate note" { target *-*-* } 540 } 542 sink_5_23457(cv_source()); // { dg-error "no match" } 543 // { dg-message "candidate" "candidate note" { target *-*-* } 542 } 544 return 0; 545 } 546 547 two sink_5_23458(const A&); // { dg-message "note" } 548 three sink_5_23458(volatile A&); // { dg-message "note" } 549 four sink_5_23458(const volatile A&); // { dg-message "note" } 550 five sink_5_23458( A&&); // { dg-message "note" } 551 eight sink_5_23458(const volatile A&&); // { dg-message "note" } 552 553 int test5_23458() 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_5_23458(a); // { dg-error "ambiguous" } 560 // { dg-message "candidate" "candidate note" { target *-*-* } 559 } 561 return 0; 562 } 563 564 two sink_5_23467(const A&); // { dg-message "two sink_5_23467|no known conversion" } 565 three sink_5_23467(volatile A&); // { dg-message "note" } 566 four sink_5_23467(const volatile A&); // { dg-message "note" } 567 six sink_5_23467(const A&&); // { dg-message "note" } 568 seven sink_5_23467(volatile A&&); // { dg-message "note" } 569 570 int test5_23467() 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_5_23467(a); // { dg-error "ambiguous" } 577 // { dg-message "candidate" "candidate note" { target *-*-* } 576 } 578 sink_5_23467(source()); // { dg-error "ambiguous" } 579 // { dg-message "candidate" "candidate note" { target *-*-* } 578 } 580 sink_5_23467(cv_source()); // { dg-error "no match" } 581 // { dg-message "candidate" "candidate note" { target *-*-* } 580 } 582 return 0; 583 } 584 585 two sink_5_23468(const A&); // { dg-message "note" } 586 three sink_5_23468(volatile A&); // { dg-message "note" } 587 four sink_5_23468(const volatile A&); // { dg-message "note" } 588 six sink_5_23468(const A&&); // { dg-message "note" } 589 eight sink_5_23468(const volatile A&&); // { dg-message "note" } 590 591 int test5_23468() 592 { 593 A a; 594 const A ca = a; // { dg-error "deleted" } 595 volatile A va; 596 const volatile A cva = a; // { dg-error "deleted" } 597 sink_5_23468(a); // { dg-error "ambiguous" } 598 // { dg-message "candidate" "candidate note" { target *-*-* } 597 } 599 return 0; 600 } 601 602 two sink_5_23478(const A&); // { dg-message "note" } 603 three sink_5_23478(volatile A&); // { dg-message "note" } 604 four sink_5_23478(const volatile A&); // { dg-message "note" } 605 seven sink_5_23478(volatile A&&); // { dg-message "note" } 606 eight sink_5_23478(const volatile A&&); // { dg-message "note" } 607 608 int test5_23478() 609 { 610 A a; 611 const A ca = a; // { dg-error "deleted" } 612 volatile A va; 613 const volatile A cva = a; // { dg-error "deleted" } 614 sink_5_23478(a); // { dg-error "ambiguous" } 615 // { dg-message "candidate" "candidate note" { target *-*-* } 614 } 616 return 0; 617 } 618 619 two sink_5_23567(const A&); // { dg-message "two sink_5_23567|no known conversion" } 620 three sink_5_23567(volatile A&); // { dg-message "note" } 621 five sink_5_23567( A&&); // { dg-message "note" } 622 six sink_5_23567(const A&&); // { dg-message "note" } 623 seven sink_5_23567(volatile A&&); // { dg-message "note" } 624 625 int test5_23567() 626 { 627 A a; 628 const A ca = a; // { dg-error "deleted" } 629 volatile A va; 630 const volatile A cva = a; // { dg-error "deleted" } 631 sink_5_23567(a); // { dg-error "ambiguous" } 632 // { dg-message "candidate" "candidate note" { target *-*-* } 631 } 633 sink_5_23567(cva); // { dg-error "no match" } 634 // { dg-message "candidate" "candidate note" { target *-*-* } 633 } 635 sink_5_23567(cv_source()); // { dg-error "no match" } 636 // { dg-message "candidate" "candidate note" { target *-*-* } 635 } 637 return 0; 638 } 639 640 two sink_5_23568(const A&); // { dg-message "note" } 641 three sink_5_23568(volatile A&); // { dg-message "note" } 642 five sink_5_23568( A&&); // { dg-message "note" } 643 six sink_5_23568(const A&&); // { dg-message "note" } 644 eight sink_5_23568(const volatile A&&); // { dg-message "" } 645 646 int test5_23568() 647 { 648 A a; 649 const A ca = a; // { dg-error "deleted" } 650 volatile A va; 651 const volatile A cva = a; // { dg-error "deleted" } 652 sink_5_23568(cva); // { dg-error "lvalue" } 653 sink_5_23568(a); // { dg-error "ambiguous" } 654 // { dg-message "candidate" "candidate note" { target *-*-* } 653 } 655 return 0; 656 } 657 658 two sink_5_23578(const A&); // { dg-message "note" } 659 three sink_5_23578(volatile A&); // { dg-message "note" } 660 five sink_5_23578( A&&); // { dg-message "note" } 661 seven sink_5_23578(volatile A&&); // { dg-message "note" } 662 eight sink_5_23578(const volatile A&&); // { dg-message "" } 663 664 int test5_23578() 665 { 666 A a; 667 const A ca = a; // { dg-error "deleted" } 668 volatile A va; 669 const volatile A cva = a; // { dg-error "deleted" } 670 sink_5_23578(cva); // { dg-error "lvalue" } 671 sink_5_23578(a); // { dg-error "ambiguous" } 672 // { dg-message "candidate" "candidate note" { target *-*-* } 671 } 673 return 0; 674 } 675 676 two sink_5_23678(const A&); // { dg-message "note" } 677 three sink_5_23678(volatile A&); // { dg-message "note" } 678 six sink_5_23678(const A&&); // { dg-message "note" } 679 seven sink_5_23678(volatile A&&); // { dg-message "note" } 680 eight sink_5_23678(const volatile A&&); // { dg-message "" } 681 682 int test5_23678() 683 { 684 A a; 685 const A ca = a; // { dg-error "deleted" } 686 volatile A va; 687 const volatile A cva = a; // { dg-error "deleted" } 688 sink_5_23678(a); // { dg-error "ambiguous" } 689 // { dg-message "candidate" "candidate note" { target *-*-* } 688 } 690 sink_5_23678(cva); // { dg-error "lvalue" } 691 sink_5_23678(source()); // { dg-error "ambiguous" } 692 // { dg-message "candidate" "candidate note" { target *-*-* } 691 } 693 return 0; 694 } 695 696 two sink_5_24567(const A&); // { dg-message "two sink_5_24567|no known conversion" } 697 four sink_5_24567(const volatile A&); // { dg-message "note" } 698 five sink_5_24567( A&&); // { dg-message "note" } 699 six sink_5_24567(const A&&); // { dg-message "note" } 700 seven sink_5_24567(volatile A&&); // { dg-message "note" } 701 702 int test5_24567() 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_5_24567(cv_source()); // { dg-error "no match" } 709 // { dg-message "candidate" "candidate note" { target *-*-* } 708 } 710 return 0; 711 } 712 713 two sink_5_24678(const A&); // { dg-message "note" } 714 four sink_5_24678(const volatile A&); 715 six sink_5_24678(const A&&); // { dg-message "note" } 716 seven sink_5_24678(volatile A&&); // { dg-message "note" } 717 eight sink_5_24678(const volatile A&&); // { dg-message "note" } 718 719 int test5_24678() 720 { 721 A a; 722 const A ca = a; // { dg-error "deleted" } 723 volatile A va; 724 const volatile A cva = a; // { dg-error "deleted" } 725 sink_5_24678(source()); // { dg-error "ambiguous" } 726 // { dg-message "candidate" "candidate note" { target *-*-* } 725 } 727 return 0; 728 } 729 730 two sink_5_25678(const A&); 731 five sink_5_25678( A&&); 732 six sink_5_25678(const A&&); 733 seven sink_5_25678(volatile A&&); // { dg-message "" } 734 eight sink_5_25678(const volatile A&&); // { dg-message "" } 735 736 int test5_25678() 737 { 738 A a; 739 const A ca = a; // { dg-error "deleted" } 740 volatile A va; 741 const volatile A cva = a; // { dg-error "deleted" } 742 sink_5_25678(va); // { dg-error "lvalue" } 743 sink_5_25678(cva); // { dg-error "lvalue" } 744 return 0; 745 } 746 747 three sink_5_34567(volatile A&); // { dg-message "three sink_5_34567|no known conversion" } 748 four sink_5_34567(const volatile A&); // { dg-message "note" } 749 five sink_5_34567( A&&); // { dg-message "note" } 750 six sink_5_34567(const A&&); // { dg-message "note" } 751 seven sink_5_34567(volatile A&&); // { dg-message "note" } 752 753 int test5_34567() 754 { 755 A a; 756 const A ca = a; // { dg-error "deleted" } 757 volatile A va; 758 const volatile A cva = a; // { dg-error "deleted" } 759 sink_5_34567(cv_source()); // { dg-error "no match" } 760 // { dg-message "candidate" "candidate note" { target *-*-* } 759 } 761 return 0; 762 } 763 764 three sink_5_34678(volatile A&); 765 four sink_5_34678(const volatile A&); 766 six sink_5_34678(const A&&); // { dg-message "note" } 767 seven sink_5_34678(volatile A&&); // { dg-message "note" } 768 eight sink_5_34678(const volatile A&&); // { dg-message "note" } 769 770 int test5_34678() 771 { 772 A a; 773 const A ca = a; // { dg-error "deleted" } 774 volatile A va; 775 const volatile A cva = a; // { dg-error "deleted" } 776 sink_5_34678(source()); // { dg-error "ambiguous" } 777 // { dg-message "candidate" "candidate note" { target *-*-* } 776 } 778 return 0; 779 } 780 781 three sink_5_35678(volatile A&); 782 five sink_5_35678( A&&); 783 six sink_5_35678(const A&&); // { dg-message "" } 784 seven sink_5_35678(volatile A&&); 785 eight sink_5_35678(const volatile A&&); // { dg-message "" } 786 787 int test5_35678() 788 { 789 A a; 790 const A ca = a; // { dg-error "deleted" } 791 volatile A va; 792 const volatile A cva = a; // { dg-error "deleted" } 793 sink_5_35678(ca); // { dg-error "lvalue" } 794 sink_5_35678(cva); // { dg-error "lvalue" } 795 return 0; 796 } 797 798 int main() 799 { 800 return test5_12356() + test5_12357() + test5_12367() + test5_12467() + 801 test5_12567() + test5_12678() + test5_13467() + test5_13567() + 802 test5_13678() + test5_13678() + test5_23456() + test5_23457() + 803 test5_23458() + test5_23467() + test5_23468() + test5_23478() + 804 test5_23567() + test5_23568() + test5_23578() + test5_23678() + 805 test5_24678() + test5_34678(); 806 } 807