1 // PR c++/69531 - DR 1307, Overload resolution based on size of array init-list.
2 // { dg-do run { target c++2a } }
3 
f(int (&)[1][1])4 int f(int (&)[1][1]) { return 1; }
f(int (&)[1][2])5 int f(int (&)[1][2]) { return 2; }
6 
7 int g(int (&&)[2][1]) { return 1; }
8 int g(int (&&)[2][2]) { return 2; }
9 
10 int h(int (&&)[][1]) { return 1; }
11 int h(int (&&)[][2]) { return 2; }
12 
13 int
main()14 main ()
15 {
16   int arr1[1][1];
17   int arr2[1][2];
18 
19   if (f(arr1) != 1)
20     __builtin_abort ();
21   if (f(arr2) != 2)
22     __builtin_abort ();
23 
24   if (g({ { 1, 2 }, { 3 } }) != 2)
25     __builtin_abort ();
26 
27   if (g({ { 1, 2 }, { 3, 4 } }) != 2)
28     __builtin_abort ();
29 
30   if (h({ { 1, 2 }, { 3 } }) != 2)
31     __builtin_abort ();
32 
33   if (h({ { 1, 2 }, { 3, 4 } }) != 2)
34     __builtin_abort ();
35 }
36