// PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound. // { dg-do compile { target c++17 } } // { dg-options "-Wpedantic" } // C++17, because that has CWG 393. void f(int(&)[]); void fp(int(*)[]); void f2(int(&)[][10]); void fp2(int(*)[][10]); int arr[10]; int arr2[10][10]; void g () { f (arr); // { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } fp (&arr); // { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } f2 (arr2);// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } fp2 (&arr2);// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } } int(&r1)[] = arr;// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } int(&r2)[10] = arr; int(&r3)[][10] = arr2;// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } /* Note that int (&r)[10][] = arr2; is invalid. */ int(&r4)[10][10] = arr2; int(*p1)[] = &arr;// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } int(*p2)[10] = &arr; int(*p3)[][10] = &arr2;// { dg-warning "conversions to arrays of unknown bound are only available" "" { target c++17_down } } int(*p4)[10][10] = &arr2;