| // PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound. |
| // { dg-do run { target c++20 } } |
| |
| // Ranking of reference initialization conversions |
| |
| int f(int(&)[]) { return 1; } // (1) |
| int f(int(&)[1]) { return 2; } // (2) |
| |
| int h(int(*)[]) { return 1; } // (a) |
| int h(int(*)[1]) { return 2; } // (b) |
| |
| // From P0388R4: |
| // (2) and (b) should clearly be better than (1) and (a), respectively, |
| // as the former overloads are more restricted. |
| // (a) should be worse than (b), which is implied by (a) necessitating |
| // a qualification conversion in that case. |
| |
| int |
| main () |
| { |
| int arr[1]; |
| if (f(arr) != 2) |
| __builtin_abort (); |
| if (h(&arr) != 2) |
| __builtin_abort (); |
| } |