// PR c++/91364 - Implement P0388R4: Permit conversions to arrays of unknown bound. // { dg-do compile { target c++20 } } int arr[1]; extern int arr2[]; void test () { int (&r)[1] = const_cast<int(&)[1]>(arr); int (&r2)[] = const_cast<int(&)[]>(arr); // { dg-error "17:invalid .const_cast." } int (&r3)[1] = (int(&)[1]) arr; int (&r4)[] = (int(&)[]) arr; int (&r5)[1] = static_cast<int(&)[1]>(arr); int (&r6)[] = static_cast<int(&)[]>(arr); // Try c_cast_p. int(*p1)[] = (int(*)[]) &arr; int(*p2)[1] = (int(*)[]) &arr; // { dg-error "cannot convert" } int(*p3)[] = (int(*)[1]) &arr; int(*p4)[] = (int(*)[1]) &arr2; int(*p5)[] = (int(*)[]) (int(*)[1]) &arr; int(*p6)[] = (int(*)[1]) (int(*)[]) &arr; int(*p7)[] = static_cast<int(*)[]>(&arr); int(*p8)[] = static_cast<int(*)[1]>(&arr); int(*p9)[] = static_cast<int(*)[1]>(&arr2); // { dg-error "16:invalid .static_cast." } }