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 // 3 at a time 32 33 one sink_3_123( A&); // { dg-message "one sink_3_123|no known conversion" } 34 two sink_3_123(const A&); // { dg-message "two sink_3_123|no known conversion" } 35 three sink_3_123(volatile A&); // { dg-message "three sink_3_123|no known conversion" } 36 37 int test3_123() 38 { 39 A a; 40 const A ca = a; // { dg-error "deleted" } 41 volatile A va; 42 const volatile A cva = a; // { dg-error "deleted" } 43 sink_3_123(cva); // { dg-error "no match" } 44 // { dg-message "candidate" "candidate note" { target *-*-* } 43 } 45 sink_3_123(v_source()); // { dg-error "no match" } 46 // { dg-message "candidate" "candidate note" { target *-*-* } 45 } 47 sink_3_123(cv_source()); // { dg-error "no match" } 48 // { dg-message "candidate" "candidate note" { target *-*-* } 47 } 49 return 0; 50 } 51 52 one sink_3_125( A&); // { dg-message "one sink_3_125|no known conversion" } 53 two sink_3_125(const A&); // { dg-message "two sink_3_125|no known conversion" } 54 five sink_3_125( A&&); // { dg-message "five sink_3_125|no known conversion" } 55 56 one sink_3_124( A&); // { dg-message "one sink_3_124|no known conversion" } 57 two sink_3_124(const A&); // { dg-message "two sink_3_124|no known conversion" } 58 four sink_3_124(const volatile A&); // { dg-message "four sink_3_124|no known conversion" } 59 60 int test3_124() 61 { 62 A a; 63 const A ca = a; // { dg-error "deleted" } 64 volatile A va; 65 const volatile A cva = a; // { dg-error "deleted" } 66 sink_3_124(v_source()); // { dg-error "no match" } 67 // { dg-message "candidate" "candidate note" { target *-*-* } 66 } 68 sink_3_124(cv_source()); // { dg-error "no match" } 69 // { dg-message "candidate" "candidate note" { target *-*-* } 68 } 70 return 0; 71 } 72 73 int test3_125() 74 { 75 A a; 76 const A ca = a; // { dg-error "deleted" } 77 volatile A va; 78 const volatile A cva = a; // { dg-error "deleted" } 79 sink_3_125(va); // { dg-error "no match" } 80 // { dg-message "candidate" "candidate note" { target *-*-* } 79 } 81 sink_3_125(cva); // { dg-error "no match" } 82 // { dg-message "candidate" "candidate note" { target *-*-* } 81 } 83 sink_3_125(v_source()); // { dg-error "no match" } 84 // { dg-message "candidate" "candidate note" { target *-*-* } 83 } 85 sink_3_125(cv_source()); // { dg-error "no match" } 86 // { dg-message "candidate" "candidate note" { target *-*-* } 85 } 87 return 0; 88 } 89 90 one sink_3_126( A&); // { dg-message "one sink_3_126|no known conversion" } 91 two sink_3_126(const A&); // { dg-message "two sink_3_126|no known conversion" } 92 six sink_3_126(const A&&); // { dg-message "six sink_3_126|no known conversion" } 93 94 int test3_126() 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_3_126(va); // { dg-error "no match" } 101 // { dg-message "candidate" "candidate note" { target *-*-* } 100 } 102 sink_3_126(cva); // { dg-error "no match" } 103 // { dg-message "candidate" "candidate note" { target *-*-* } 102 } 104 sink_3_126(v_source()); // { dg-error "no match" } 105 // { dg-message "candidate" "candidate note" { target *-*-* } 104 } 106 sink_3_126(cv_source()); // { dg-error "no match" } 107 // { dg-message "candidate" "candidate note" { target *-*-* } 106 } 108 return 0; 109 } 110 111 one sink_3_127( A&); // { dg-message "one sink_3_127|no known conversion" } 112 two sink_3_127(const A&); // { dg-message "two sink_3_127|no known conversion" } 113 seven sink_3_127(volatile A&&); // { dg-message "seven sink_3_127|no known conversion" } 114 115 int test3_127() 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_3_127(va); // { dg-error "lvalue" } 122 sink_3_127(cva); // { dg-error "no match" } 123 // { dg-message "candidate" "candidate note" { target *-*-* } 122 } 124 sink_3_127(cv_source()); // { dg-error "no match" } 125 // { dg-message "candidate" "candidate note" { target *-*-* } 124 } 126 return 0; 127 } 128 129 one sink_3_128( A&); 130 two sink_3_128(const A&); 131 eight sink_3_128(const volatile A&&); // { dg-message "" } 132 133 int test3_128() 134 { 135 A a; 136 const A ca = a; // { dg-error "deleted" } 137 volatile A va; 138 const volatile A cva = a; // { dg-error "deleted" } 139 140 sink_3_128(va); // { dg-error "lvalue" } 141 sink_3_128(cva); // { dg-error "lvalue" } 142 } 143 144 one sink_3_134( A&); // { dg-message "one sink_3_134|no known conversion" } 145 three sink_3_134(volatile A&); // { dg-message "three sink_3_134|no known conversion" } 146 four sink_3_134(const volatile A&); // { dg-message "four sink_3_134|no known conversion" } 147 148 int test3_134() 149 { 150 A a; 151 const A ca = a; // { dg-error "deleted" } 152 volatile A va; 153 const volatile A cva = a; // { dg-error "deleted" } 154 sink_3_134(source()); // { dg-error "no match" } 155 // { dg-message "candidate" "candidate note" { target *-*-* } 154 } 156 sink_3_134(c_source()); // { dg-error "no match" } 157 // { dg-message "candidate" "candidate note" { target *-*-* } 156 } 158 sink_3_134(v_source()); // { dg-error "no match" } 159 // { dg-message "candidate" "candidate note" { target *-*-* } 158 } 160 sink_3_134(cv_source()); // { dg-error "no match" } 161 // { dg-message "candidate" "candidate note" { target *-*-* } 160 } 162 return 0; 163 } 164 165 one sink_3_135( A&); // { dg-message "one sink_3_135|no known conversion" } 166 three sink_3_135(volatile A&); // { dg-message "three sink_3_135|no known conversion" } 167 five sink_3_135( A&&); // { dg-message "five sink_3_135|no known conversion" } 168 169 int test3_135() 170 { 171 A a; 172 const A ca = a; // { dg-error "deleted" } 173 volatile A va; 174 const volatile A cva = a; // { dg-error "deleted" } 175 sink_3_135(ca); // { dg-error "no match" } 176 // { dg-message "candidate" "candidate note" { target *-*-* } 175 } 177 sink_3_135(cva); // { dg-error "no match" } 178 // { dg-message "candidate" "candidate note" { target *-*-* } 177 } 179 sink_3_135(c_source()); // { dg-error "no match" } 180 // { dg-message "candidate" "candidate note" { target *-*-* } 179 } 181 sink_3_135(v_source()); // { dg-error "no match" } 182 // { dg-message "candidate" "candidate note" { target *-*-* } 181 } 183 sink_3_135(cv_source()); // { dg-error "no match" } 184 // { dg-message "candidate" "candidate note" { target *-*-* } 183 } 185 return 0; 186 } 187 188 one sink_3_136( A&); // { dg-message "one sink_3_136|no known conversion" } 189 three sink_3_136(volatile A&); // { dg-message "note" } 190 six sink_3_136(const A&&); // { dg-message "" } 191 192 int test3_136() 193 { 194 A a; 195 const A ca = a; // { dg-error "deleted" } 196 volatile A va; 197 const volatile A cva = a; // { dg-error "deleted" } 198 sink_3_136(ca); // { dg-error "lvalue" } 199 sink_3_136(cva); // { dg-error "no match" } 200 // { dg-message "candidate" "candidate note" { target *-*-* } 199 } 201 sink_3_136(v_source()); // { dg-error "no match" } 202 // { dg-message "candidate" "candidate note" { target *-*-* } 201 } 203 sink_3_136(cv_source()); // { dg-error "no match" } 204 // { dg-message "candidate" "candidate note" { target *-*-* } 203 } 205 return 0; 206 } 207 208 one sink_3_137( A&); // { dg-message "one sink_3_137|no known conversion" } 209 three sink_3_137(volatile A&); // { dg-message "note" } 210 seven sink_3_137(volatile A&&); // { dg-message "note" } 211 212 int test3_137() 213 { 214 A a; 215 const A ca = a; // { dg-error "deleted" } 216 volatile A va; 217 const volatile A cva = a; // { dg-error "deleted" } 218 sink_3_137(ca); // { dg-error "no match" } 219 // { dg-message "candidate" "candidate note" { target *-*-* } 218 } 220 sink_3_137(cva); // { dg-error "no match" } 221 // { dg-message "candidate" "candidate note" { target *-*-* } 220 } 222 sink_3_137(c_source()); // { dg-error "no match" } 223 // { dg-message "candidate" "candidate note" { target *-*-* } 222 } 224 sink_3_137(cv_source()); // { dg-error "no match" } 225 // { dg-message "candidate" "candidate note" { target *-*-* } 224 } 226 return 0; 227 } 228 229 one sink_3_138( A&); 230 three sink_3_138(volatile A&); 231 eight sink_3_138(const volatile A&&); // { dg-message "" } 232 233 int test3_138() 234 { 235 A a; 236 const A ca = a; // { dg-error "deleted" } 237 volatile A va; 238 const volatile A cva = a; // { dg-error "deleted" } 239 sink_3_138(ca); // { dg-error "lvalue" } 240 sink_3_138(cva); // { dg-error "lvalue" } 241 return 0; 242 } 243 244 one sink_3_145( A&); // { dg-message "one sink_3_145|no known conversion" } 245 four sink_3_145(const volatile A&); // { dg-message "note" } 246 five sink_3_145( A&&); // { dg-message "note" } 247 248 int test3_145() 249 { 250 A a; 251 const A ca = a; // { dg-error "deleted" } 252 volatile A va; 253 const volatile A cva = a; // { dg-error "deleted" } 254 sink_3_145(c_source()); // { dg-error "no match" } 255 // { dg-message "candidate" "candidate note" { target *-*-* } 254 } 256 sink_3_145(v_source()); // { dg-error "no match" } 257 // { dg-message "candidate" "candidate note" { target *-*-* } 256 } 258 sink_3_145(cv_source()); // { dg-error "no match" } 259 // { dg-message "candidate" "candidate note" { target *-*-* } 258 } 260 return 0; 261 } 262 263 one sink_3_146( A&); // { dg-message "one sink_3_146|no known conversion" } 264 four sink_3_146(const volatile A&); // { dg-message "note" } 265 six sink_3_146(const A&&); // { dg-message "note" } 266 267 int test3_146() 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_3_146(v_source()); // { dg-error "no match" } 274 // { dg-message "candidate" "candidate note" { target *-*-* } 273 } 275 sink_3_146(cv_source()); // { dg-error "no match" } 276 // { dg-message "candidate" "candidate note" { target *-*-* } 275 } 277 return 0; 278 } 279 280 one sink_3_147( A&); // { dg-message "one sink_3_147|no known conversion" } 281 four sink_3_147(const volatile A&); // { dg-message "note" } 282 seven sink_3_147(volatile A&&); // { dg-message "note" } 283 284 int test3_147() 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_3_147(c_source()); // { dg-error "no match" } 291 // { dg-message "candidate" "candidate note" { target *-*-* } 290 } 292 sink_3_147(cv_source()); // { dg-error "no match" } 293 // { dg-message "candidate" "candidate note" { target *-*-* } 292 } 294 return 0; 295 } 296 297 one sink_3_156( A&); // { dg-message "one sink_3_156|no known conversion" } 298 five sink_3_156( A&&); // { dg-message "note" } 299 six sink_3_156(const A&&); // { dg-message "" } 300 301 int test3_156() 302 { 303 A a; 304 const A ca = a; // { dg-error "deleted" } 305 volatile A va; 306 const volatile A cva = a; // { dg-error "deleted" } 307 sink_3_156(ca); // { dg-error "lvalue" } 308 sink_3_156(va); // { dg-error "no match" } 309 // { dg-message "candidate" "candidate note" { target *-*-* } 308 } 310 sink_3_156(cva); // { dg-error "no match" } 311 // { dg-message "candidate" "candidate note" { target *-*-* } 310 } 312 sink_3_156(v_source()); // { dg-error "no match" } 313 // { dg-message "candidate" "candidate note" { target *-*-* } 312 } 314 sink_3_156(cv_source()); // { dg-error "no match" } 315 // { dg-message "candidate" "candidate note" { target *-*-* } 314 } 316 return 0; 317 } 318 319 one sink_3_157( A&); // { dg-message "one sink_3_157|no known conversion" } 320 five sink_3_157( A&&); // { dg-message "note" } 321 seven sink_3_157(volatile A&&); // { dg-message "" } 322 323 int test3_157() 324 { 325 A a; 326 const A ca = a; // { dg-error "deleted" } 327 volatile A va; 328 const volatile A cva = a; // { dg-error "deleted" } 329 sink_3_157(ca); // { dg-error "no match" } 330 // { dg-message "candidate" "candidate note" { target *-*-* } 329 } 331 sink_3_157(va); // { dg-error "lvalue" } 332 sink_3_157(cva); // { dg-error "no match" } 333 // { dg-message "candidate" "candidate note" { target *-*-* } 332 } 334 sink_3_157(c_source()); // { dg-error "no match" } 335 // { dg-message "candidate" "candidate note" { target *-*-* } 334 } 336 sink_3_157(cv_source()); // { dg-error "no match" } 337 // { dg-message "candidate" "candidate note" { target *-*-* } 336 } 338 return 0; 339 } 340 341 one sink_3_158( A&); 342 five sink_3_158( A&&); 343 eight sink_3_158(const volatile A&&); // { dg-message "" } 344 345 int test3_158() 346 { 347 A a; 348 const A ca = a; // { dg-error "deleted" } 349 volatile A va; 350 const volatile A cva = a; // { dg-error "deleted" } 351 sink_3_158(ca); // { dg-error "lvalue" } 352 sink_3_158(va); // { dg-error "lvalue" } 353 sink_3_158(cva); // { dg-error "lvalue" } 354 return 0; 355 } 356 357 one sink_3_167( A&); // { dg-message "one sink_3_167|no known conversion" } 358 six sink_3_167(const A&&); // { dg-message "" } 359 seven sink_3_167(volatile A&&); // { dg-message "" } 360 361 int test3_167() 362 { 363 A a; 364 const A ca = a; // { dg-error "deleted" } 365 volatile A va; 366 const volatile A cva = a; // { dg-error "deleted" } 367 sink_3_167(ca); // { dg-error "lvalue" } 368 sink_3_167(va); // { dg-error "lvalue" } 369 sink_3_167(cva); // { dg-error "no match" } 370 // { dg-message "candidate" "candidate note" { target *-*-* } 369 } 371 sink_3_167(source()); // { dg-error "ambiguous" } 372 // { dg-message "candidate" "candidate note" { target *-*-* } 371 } 373 sink_3_167(cv_source()); // { dg-error "no match" } 374 // { dg-message "candidate" "candidate note" { target *-*-* } 373 } 375 return 0; 376 } 377 378 one sink_3_168( A&); 379 six sink_3_168(const A&&); // { dg-message "" } 380 eight sink_3_168(const volatile A&&); // { dg-message "" } 381 382 int test3_168() 383 { 384 A a; 385 const A ca = a; // { dg-error "deleted" } 386 volatile A va; 387 const volatile A cva = a; // { dg-error "deleted" } 388 sink_3_168(ca); // { dg-error "lvalue" } 389 sink_3_168(va); // { dg-error "lvalue" } 390 sink_3_168(cva); // { dg-error "lvalue" } 391 return 0; 392 } 393 394 one sink_3_178( A&); 395 seven sink_3_178(volatile A&&); // { dg-message "" } 396 eight sink_3_178(const volatile A&&); // { dg-message "" } 397 398 int test3_178() 399 { 400 A a; 401 const A ca = a; // { dg-error "deleted" } 402 volatile A va; 403 const volatile A cva = a; // { dg-error "deleted" } 404 sink_3_178(ca); // { dg-error "lvalue" } 405 sink_3_178(va); // { dg-error "lvalue" } 406 sink_3_178(cva); // { dg-error "lvalue" } 407 return 0; 408 } 409 410 two sink_3_234(const A&); // { dg-message "two sink_3_234|no known conversion" } 411 three sink_3_234(volatile A&); // { dg-message "note" } 412 four sink_3_234(const volatile A&); // { dg-message "note" } 413 414 int test3_234() 415 { 416 A a; 417 const A ca = a; // { dg-error "deleted" } 418 volatile A va; 419 const volatile A cva = a; // { dg-error "deleted" } 420 sink_3_234(a); // { dg-error "ambiguous" } 421 // { dg-message "candidate" "candidate note" { target *-*-* } 420 } 422 sink_3_234(v_source()); // { dg-error "no match" } 423 // { dg-message "candidate" "candidate note" { target *-*-* } 422 } 424 sink_3_234(cv_source()); // { dg-error "no match" } 425 // { dg-message "candidate" "candidate note" { target *-*-* } 424 } 426 return 0; 427 } 428 429 two sink_3_235(const A&); // { dg-message "two sink_3_235|no known conversion" } 430 three sink_3_235(volatile A&); // { dg-message "note" } 431 five sink_3_235( A&&); // { dg-message "note" } 432 433 int test3_235() 434 { 435 A a; 436 const A ca = a; // { dg-error "deleted" } 437 volatile A va; 438 const volatile A cva = a; // { dg-error "deleted" } 439 sink_3_235(a); // { dg-error "ambiguous" } 440 // { dg-message "candidate" "candidate note" { target *-*-* } 439 } 441 sink_3_235(cva); // { dg-error "no match" } 442 // { dg-message "candidate" "candidate note" { target *-*-* } 441 } 443 sink_3_235(v_source()); // { dg-error "no match" } 444 // { dg-message "candidate" "candidate note" { target *-*-* } 443 } 445 sink_3_235(cv_source()); // { dg-error "no match" } 446 // { dg-message "candidate" "candidate note" { target *-*-* } 445 } 447 return 0; 448 } 449 450 two sink_3_236(const A&); // { dg-message "two sink_3_236|no known conversion" } 451 three sink_3_236(volatile A&); // { dg-message "note" } 452 six sink_3_236(const A&&); // { dg-message "note" } 453 454 int test3_236() 455 { 456 A a; 457 const A ca = a; // { dg-error "deleted" } 458 volatile A va; 459 const volatile A cva = a; // { dg-error "deleted" } 460 sink_3_236(a); // { dg-error "ambiguous" } 461 // { dg-message "candidate" "candidate note" { target *-*-* } 460 } 462 sink_3_236(cva); // { dg-error "no match" } 463 // { dg-message "candidate" "candidate note" { target *-*-* } 462 } 464 sink_3_236(v_source()); // { dg-error "no match" } 465 // { dg-message "candidate" "candidate note" { target *-*-* } 464 } 466 sink_3_236(cv_source()); // { dg-error "no match" } 467 // { dg-message "candidate" "candidate note" { target *-*-* } 466 } 468 return 0; 469 } 470 471 two sink_3_237(const A&); // { dg-message "two sink_3_237|no known conversion" } 472 three sink_3_237(volatile A&); // { dg-message "note" } 473 seven sink_3_237(volatile A&&); // { dg-message "note" } 474 475 int test3_237() 476 { 477 A a; 478 const A ca = a; // { dg-error "deleted" } 479 volatile A va; 480 const volatile A cva = a; // { dg-error "deleted" } 481 sink_3_237(a); // { dg-error "ambiguous" } 482 // { dg-message "candidate" "candidate note" { target *-*-* } 481 } 483 sink_3_237(cva); // { dg-error "no match" } 484 // { dg-message "candidate" "candidate note" { target *-*-* } 483 } 485 sink_3_237(cv_source()); // { dg-error "no match" } 486 // { dg-message "candidate" "candidate note" { target *-*-* } 485 } 487 return 0; 488 } 489 490 two sink_3_238(const A&); // { dg-message "two sink_3_238|no known conversion" } 491 three sink_3_238(volatile A&); // { dg-message "three sink_3_238|no known conversion" } 492 eight sink_3_238(const volatile A&&); // { dg-message "eight sink_3_238|no known conversion" } 493 494 int test3_238() 495 { 496 A a; 497 const A ca = a; // { dg-error "deleted" } 498 volatile A va; 499 const volatile A cva = a; // { dg-error "deleted" } 500 sink_3_238(a); // { dg-error "ambiguous" } 501 // { dg-message "candidate" "candidate note" { target *-*-* } 500 } 502 sink_3_238(cva); // { dg-error "lvalue" } 503 return 0; 504 } 505 506 two sink_3_245(const A&); // { dg-message "two sink_3_245|no known conversion" } 507 four sink_3_245(const volatile A&); // { dg-message "four sink_3_245|no known conversion" } 508 five sink_3_245( A&&); // { dg-message "five sink_3_245|no known conversion" } 509 510 int test3_245() 511 { 512 A a; 513 const A ca = a; // { dg-error "deleted" } 514 volatile A va; 515 const volatile A cva = a; // { dg-error "deleted" } 516 sink_3_245(v_source()); // { dg-error "no match" } 517 // { dg-message "candidate" "candidate note" { target *-*-* } 516 } 518 sink_3_245(cv_source()); // { dg-error "no match" } 519 // { dg-message "candidate" "candidate note" { target *-*-* } 518 } 520 return 0; 521 } 522 523 two sink_3_246(const A&); // { dg-message "two sink_3_246|no known conversion" } 524 four sink_3_246(const volatile A&); // { dg-message "four sink_3_246|no known conversion" } 525 six sink_3_246(const A&&); // { dg-message "six sink_3_246|no known conversion" } 526 527 int test3_246() 528 { 529 A a; 530 const A ca = a; // { dg-error "deleted" } 531 volatile A va; 532 const volatile A cva = a; // { dg-error "deleted" } 533 sink_3_246(v_source()); // { dg-error "no match" } 534 // { dg-message "candidate" "candidate note" { target *-*-* } 533 } 535 sink_3_246(cv_source()); // { dg-error "no match" } 536 // { dg-message "candidate" "candidate note" { target *-*-* } 535 } 537 return 0; 538 } 539 540 two sink_3_247(const A&); // { dg-message "two sink_3_247|no known conversion" } 541 four sink_3_247(const volatile A&); // { dg-message "four sink_3_247|no known conversion" } 542 seven sink_3_247(volatile A&&); // { dg-message "seven sink_3_247|no known conversion" } 543 544 int test3_247() 545 { 546 A a; 547 const A ca = a; // { dg-error "deleted" } 548 volatile A va; 549 const volatile A cva = a; // { dg-error "deleted" } 550 sink_3_247(cv_source()); // { dg-error "no match" } 551 // { dg-message "candidate" "candidate note" { target *-*-* } 550 } 552 return 0; 553 } 554 555 two sink_3_256(const A&); // { dg-message "two sink_3_256|no known conversion" } 556 five sink_3_256( A&&); // { dg-message "five sink_3_256|no known conversion" } 557 six sink_3_256(const A&&); // { dg-message "six sink_3_256|no known conversion" } 558 559 int test3_256() 560 { 561 A a; 562 const A ca = a; // { dg-error "deleted" } 563 volatile A va; 564 const volatile A cva = a; // { dg-error "deleted" } 565 sink_3_256(va); // { dg-error "no match" } 566 // { dg-message "candidate" "candidate note" { target *-*-* } 565 } 567 sink_3_256(cva); // { dg-error "no match" } 568 // { dg-message "candidate" "candidate note" { target *-*-* } 567 } 569 sink_3_256(v_source()); // { dg-error "no match" } 570 // { dg-message "candidate" "candidate note" { target *-*-* } 569 } 571 sink_3_256(cv_source()); // { dg-error "no match" } 572 // { dg-message "candidate" "candidate note" { target *-*-* } 571 } 573 return 0; 574 } 575 576 two sink_3_257(const A&); // { dg-message "two sink_3_257|no known conversion" } 577 five sink_3_257( A&&); // { dg-message "five sink_3_257|no known conversion" } 578 seven sink_3_257(volatile A&&); // { dg-message "seven sink_3_257|no known conversion" } 579 580 int test3_257() 581 { 582 A a; 583 const A ca = a; // { dg-error "deleted" } 584 volatile A va; 585 const volatile A cva = a; // { dg-error "deleted" } 586 sink_3_257(va); // { dg-error "lvalue" } 587 sink_3_257(cva); // { dg-error "no match" } 588 // { dg-message "candidate" "candidate note" { target *-*-* } 587 } 589 sink_3_257(cv_source()); // { dg-error "no match" } 590 // { dg-message "candidate" "candidate note" { target *-*-* } 589 } 591 return 0; 592 } 593 594 two sink_3_258(const A&); 595 five sink_3_258( A&&); 596 eight sink_3_258(const volatile A&&); // { dg-message "" } 597 598 int test3_258() 599 { 600 A a; 601 const A ca = a; // { dg-error "deleted" } 602 volatile A va; 603 const volatile A cva = a; // { dg-error "deleted" } 604 sink_3_258(va); // { dg-error "lvalue" } 605 sink_3_258(cva); // { dg-error "lvalue" } 606 return 0; 607 } 608 609 two sink_3_267(const A&); // { dg-message "two sink_3_267|no known conversion" } 610 six sink_3_267(const A&&); // { dg-message "six sink_3_267|no known conversion" } 611 seven sink_3_267(volatile A&&); // { dg-message "seven sink_3_267|no known conversion" } 612 613 int test3_267() 614 { 615 A a; 616 const A ca = a; // { dg-error "deleted" } 617 volatile A va; 618 const volatile A cva = a; // { dg-error "deleted" } 619 sink_3_267(va); // { dg-error "lvalue" } 620 sink_3_267(cva); // { dg-error "no match" } 621 // { dg-message "candidate" "candidate note" { target *-*-* } 620 } 622 sink_3_267(source()); // { dg-error "ambiguous" } 623 // { dg-message "candidate" "candidate note" { target *-*-* } 622 } 624 sink_3_267(cv_source()); // { dg-error "no match" } 625 // { dg-message "candidate" "candidate note" { target *-*-* } 624 } 626 return 0; 627 } 628 629 two sink_3_268(const A&); 630 six sink_3_268(const A&&); 631 eight sink_3_268(const volatile A&&); // { dg-message "" } 632 633 int test3_268() 634 { 635 A a; 636 const A ca = a; // { dg-error "deleted" } 637 volatile A va; 638 const volatile A cva = a; // { dg-error "deleted" } 639 sink_3_268(va); // { dg-error "lvalue" } 640 sink_3_268(cva); // { dg-error "lvalue" } 641 return 0; 642 } 643 644 two sink_3_278(const A&); 645 seven sink_3_278(volatile A&&); // { dg-message "" } 646 eight sink_3_278(const volatile A&&); // { dg-message "" } 647 648 int test3_278() 649 { 650 A a; 651 const A ca = a; // { dg-error "deleted" } 652 volatile A va; 653 const volatile A cva = a; // { dg-error "deleted" } 654 sink_3_278(va); // { dg-error "lvalue" } 655 sink_3_278(cva); // { dg-error "lvalue" } 656 return 0; 657 } 658 659 three sink_3_345(volatile A&); // { dg-message "three sink_3_345|no known conversion" } 660 four sink_3_345(const volatile A&); // { dg-message "four sink_3_345|no known conversion" } 661 five sink_3_345( A&&); // { dg-message "five sink_3_345|no known conversion" } 662 663 int test3_345() 664 { 665 A a; 666 const A ca = a; // { dg-error "deleted" } 667 volatile A va; 668 const volatile A cva = a; // { dg-error "deleted" } 669 sink_3_345(c_source()); // { dg-error "no match" } 670 // { dg-message "candidate" "candidate note" { target *-*-* } 669 } 671 sink_3_345(v_source()); // { dg-error "no match" } 672 // { dg-message "candidate" "candidate note" { target *-*-* } 671 } 673 sink_3_345(cv_source()); // { dg-error "no match" } 674 // { dg-message "candidate" "candidate note" { target *-*-* } 673 } 675 return 0; 676 } 677 678 three sink_3_346(volatile A&); // { dg-message "three sink_3_346|no known conversion" } 679 four sink_3_346(const volatile A&); // { dg-message "four sink_3_346|no known conversion" } 680 six sink_3_346(const A&&); // { dg-message "six sink_3_346|no known conversion" } 681 682 int test3_346() 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_3_346(v_source()); // { dg-error "no match" } 689 // { dg-message "candidate" "candidate note" { target *-*-* } 688 } 690 sink_3_346(cv_source()); // { dg-error "no match" } 691 // { dg-message "candidate" "candidate note" { target *-*-* } 690 } 692 return 0; 693 } 694 695 three sink_3_347(volatile A&); // { dg-message "three sink_3_347|no known conversion" } 696 four sink_3_347(const volatile A&); // { dg-message "four sink_3_347|no known conversion" } 697 seven sink_3_347(volatile A&&); // { dg-message "seven sink_3_347|no known conversion" } 698 699 int test3_347() 700 { 701 A a; 702 const A ca = a; // { dg-error "deleted" } 703 volatile A va; 704 const volatile A cva = a; // { dg-error "deleted" } 705 sink_3_347(c_source()); // { dg-error "no match" } 706 // { dg-message "candidate" "candidate note" { target *-*-* } 705 } 707 sink_3_347(cv_source()); // { dg-error "no match" } 708 // { dg-message "candidate" "candidate note" { target *-*-* } 707 } 709 return 0; 710 } 711 712 three sink_3_356(volatile A&); // { dg-message "three sink_3_356|no known conversion" } 713 five sink_3_356( A&&); // { dg-message "five sink_3_356|no known conversion" } 714 six sink_3_356(const A&&); // { dg-message "six sink_3_356|no known conversion" } 715 716 int test3_356() 717 { 718 A a; 719 const A ca = a; // { dg-error "deleted" } 720 volatile A va; 721 const volatile A cva = a; // { dg-error "deleted" } 722 sink_3_356(ca); // { dg-error "lvalue" } 723 sink_3_356(cva); // { dg-error "no match" } 724 // { dg-message "candidate" "candidate note" { target *-*-* } 723 } 725 sink_3_356(v_source()); // { dg-error "no match" } 726 // { dg-message "candidate" "candidate note" { target *-*-* } 725 } 727 sink_3_356(cv_source()); // { dg-error "no match" } 728 // { dg-message "candidate" "candidate note" { target *-*-* } 727 } 729 return 0; 730 } 731 732 three sink_3_357(volatile A&); // { dg-message "three sink_3_357|no known conversion" } 733 five sink_3_357( A&&); // { dg-message "five sink_3_357|no known conversion" } 734 seven sink_3_357(volatile A&&); // { dg-message "seven sink_3_357|no known conversion" } 735 736 int test3_357() 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_3_357(ca); // { dg-error "no match" } 743 // { dg-message "candidate" "candidate note" { target *-*-* } 742 } 744 sink_3_357(cva); // { dg-error "no match" } 745 // { dg-message "candidate" "candidate note" { target *-*-* } 744 } 746 sink_3_357(c_source()); // { dg-error "no match" } 747 // { dg-message "candidate" "candidate note" { target *-*-* } 746 } 748 sink_3_357(cv_source()); // { dg-error "no match" } 749 // { dg-message "candidate" "candidate note" { target *-*-* } 748 } 750 return 0; 751 } 752 753 three sink_3_358(volatile A&); 754 five sink_3_358( A&&); 755 eight sink_3_358(const volatile A&&); // { dg-message "" } 756 757 int test3_358() 758 { 759 A a; 760 const A ca = a; // { dg-error "deleted" } 761 volatile A va; 762 const volatile A cva = a; // { dg-error "deleted" } 763 sink_3_358(ca); // { dg-error "lvalue" } 764 sink_3_358(cva); // { dg-error "lvalue" } 765 return 0; 766 } 767 768 three sink_3_367(volatile A&); // { dg-message "three sink_3_367|no known conversion" } 769 six sink_3_367(const A&&); // { dg-message "six sink_3_367|no known conversion" } 770 seven sink_3_367(volatile A&&); // { dg-message "seven sink_3_367|no known conversion" } 771 772 int test3_367() 773 { 774 A a; 775 const A ca = a; // { dg-error "deleted" } 776 volatile A va; 777 const volatile A cva = a; // { dg-error "deleted" } 778 sink_3_367(ca); // { dg-error "lvalue" } 779 sink_3_367(cva); // { dg-error "no match" } 780 // { dg-message "candidate" "candidate note" { target *-*-* } 779 } 781 sink_3_367(source()); // { dg-error "ambiguous" } 782 // { dg-message "candidate" "candidate note" { target *-*-* } 781 } 783 sink_3_367(cv_source()); // { dg-error "no match" } 784 // { dg-message "candidate" "candidate note" { target *-*-* } 783 } 785 return 0; 786 } 787 788 three sink_3_368(volatile A&); 789 six sink_3_368(const A&&); // { dg-message "" } 790 eight sink_3_368(const volatile A&&); // { dg-message "" } 791 792 int test3_368() 793 { 794 A a; 795 const A ca = a; // { dg-error "deleted" } 796 volatile A va; 797 const volatile A cva = a; // { dg-error "deleted" } 798 sink_3_368(ca); // { dg-error "lvalue" } 799 sink_3_368(cva); // { dg-error "lvalue" } 800 return 0; 801 } 802 803 three sink_3_378(volatile A&); 804 seven sink_3_378(volatile A&&); 805 eight sink_3_378(const volatile A&&); // { dg-message "" } 806 807 int test3_378() 808 { 809 A a; 810 const A ca = a; // { dg-error "deleted" } 811 volatile A va; 812 const volatile A cva = a; // { dg-error "deleted" } 813 sink_3_378(ca); // { dg-error "lvalue" } 814 sink_3_378(cva); // { dg-error "lvalue" } 815 return 0; 816 } 817 818 four sink_3_456(const volatile A&); // { dg-message "note" } 819 five sink_3_456( A&&); // { dg-message "note" } 820 six sink_3_456(const A&&); // { dg-message "note" } 821 822 int test3_456() 823 { 824 A a; 825 const A ca = a; // { dg-error "deleted" } 826 volatile A va; 827 const volatile A cva = a; // { dg-error "deleted" } 828 sink_3_456(v_source()); // { dg-error "no match" } 829 // { dg-message "candidate" "candidate note" { target *-*-* } 828 } 830 sink_3_456(cv_source()); // { dg-error "no match" } 831 // { dg-message "candidate" "candidate note" { target *-*-* } 830 } 832 return 0; 833 } 834 835 four sink_3_457(const volatile A&); // { dg-message "note" } 836 five sink_3_457( A&&); // { dg-message "note" } 837 seven sink_3_457(volatile A&&); // { dg-message "note" } 838 839 int test3_457() 840 { 841 A a; 842 const A ca = a; // { dg-error "deleted" } 843 volatile A va; 844 const volatile A cva = a; // { dg-error "deleted" } 845 sink_3_457(c_source()); // { dg-error "no match" } 846 // { dg-message "candidate" "candidate note" { target *-*-* } 845 } 847 sink_3_457(cv_source()); // { dg-error "no match" } 848 // { dg-message "candidate" "candidate note" { target *-*-* } 847 } 849 return 0; 850 } 851 852 four sink_3_467(const volatile A&); // { dg-message "note" } 853 six sink_3_467(const A&&); // { dg-message "note" } 854 seven sink_3_467(volatile A&&); // { dg-message "note" } 855 856 int test3_467() 857 { 858 A a; 859 const A ca = a; // { dg-error "deleted" } 860 volatile A va; 861 const volatile A cva = a; // { dg-error "deleted" } 862 sink_3_467(source()); // { dg-error "ambiguous" } 863 // { dg-message "candidate" "candidate note" { target *-*-* } 862 } 864 sink_3_467(cv_source()); // { dg-error "no match" } 865 // { dg-message "candidate" "candidate note" { target *-*-* } 864 } 866 return 0; 867 } 868 869 five sink_3_567( A&&); // { dg-message "five sink_3_567|no known conversion" } 870 six sink_3_567(const A&&); // { dg-message "six sink_3_567|no known conversion" } 871 seven sink_3_567(volatile A&&); // { dg-message "seven sink_3_567|no known conversion" } 872 873 int test3_567() 874 { 875 A a; 876 const A ca = a; // { dg-error "deleted" } 877 volatile A va; 878 const volatile A cva = a; // { dg-error "deleted" } 879 sink_3_567(a); // { dg-error "lvalue" } 880 sink_3_567(ca); // { dg-error "lvalue" } 881 sink_3_567(va); // { dg-error "lvalue" } 882 sink_3_567(cva); // { dg-error "no match" } 883 // { dg-message "candidate" "candidate note" { target *-*-* } 882 } 884 sink_3_567(cv_source()); // { dg-error "no match" } 885 // { dg-message "candidate" "candidate note" { target *-*-* } 884 } 886 return 0; 887 } 888 889 five sink_3_568( A&&); // { dg-message "" } 890 six sink_3_568(const A&&); // { dg-message "" } 891 eight sink_3_568(const volatile A&&); // { dg-message "" } 892 893 int test3_568() 894 { 895 A a; 896 const A ca = a; // { dg-error "deleted" } 897 volatile A va; 898 const volatile A cva = a; // { dg-error "deleted" } 899 sink_3_568(a); // { dg-error "lvalue" } 900 sink_3_568(ca); // { dg-error "lvalue" } 901 sink_3_568(va); // { dg-error "lvalue" } 902 sink_3_568(cva); // { dg-error "lvalue" } 903 return 0; 904 } 905 906 five sink_3_578( A&&); // { dg-message "" } 907 seven sink_3_578(volatile A&&); // { dg-message "" } 908 eight sink_3_578(const volatile A&&); // { dg-message "" } 909 910 int test3_578() 911 { 912 A a; 913 const A ca = a; // { dg-error "deleted" } 914 volatile A va; 915 const volatile A cva = a; // { dg-error "deleted" } 916 sink_3_578(a); // { dg-error "lvalue" } 917 sink_3_578(ca); // { dg-error "lvalue" } 918 sink_3_578(va); // { dg-error "lvalue" } 919 sink_3_578(cva); // { dg-error "lvalue" } 920 return 0; 921 } 922 923 six sink_3_678(const A&&); // { dg-message "six sink_3_678|no known conversion" } 924 seven sink_3_678(volatile A&&); // { dg-message "seven sink_3_678|no known conversion" } 925 eight sink_3_678(const volatile A&&); // { dg-message "eight sink_3_678|no known conversion" } 926 927 int test3_678() 928 { 929 A a; 930 const A ca = a; // { dg-error "deleted" } 931 volatile A va; 932 const volatile A cva = a; // { dg-error "deleted" } 933 sink_3_678(a); // { dg-error "ambiguous" } 934 // { dg-message "candidate" "candidate note" { target *-*-* } 933 } 935 sink_3_678(ca); // { dg-error "lvalue" } 936 sink_3_678(va); // { dg-error "lvalue" } 937 sink_3_678(cva); // { dg-error "lvalue" } 938 sink_3_678(source()); // { dg-error "ambiguous" } 939 // { dg-message "candidate" "candidate note" { target *-*-* } 938 } 940 return 0; 941 } 942 943 int main() 944 { 945 return test3_123() + test3_125() + test3_126() + test3_127() + 946 test3_135() + test3_136() + test3_137() + test3_156() + 947 test3_157() + test3_167() + test3_234() + test3_235() + 948 test3_236() + test3_237() + test3_238() + test3_256() + 949 test3_257() + test3_267() + test3_356() + test3_357() + 950 test3_367() + test3_467() + test3_567() + test3_678(); 951 } 952