blob: 4081cce57ba693a013d12be4661de262a9949439 [file] [log] [blame]
// 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." }
}