// PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound. // { dg-do run { target c++20 } } // Ranking of list-initialization sequences int b(int (&&)[] ) { return 1; } // #1 int b(long (&&)[] ) { return 2; } // #2 int b(int (&&)[1]) { return 3; } // #3 int b(long (&&)[1]) { return 4; } // #4 int b(int (&&)[2]) { return 5; } // #5 /* Here, -- #1, #3 and #5 should rank better than both #2 and #4, as no promotion is necessitated. -- #1 should rank worse than #3, being far less specialized. -- #1 should rank better than #5, as the latter requires a larger array temporary. (#3 also ranks better than #5 for the same reason--cf. core issue 1307). */ int main () { if (b({1}) != 3) __builtin_abort (); }