Can't we declare pointer of type &arr, assign it there and be sure that it points to equivalent of array[1] of &arr? If yes, then is it logically possible to have UB on that?
You can define a pointer of type `int (*)[5]` and assign `(&arr)[1]` to it. That's fine, it's a pointer to the 5-element array just after the one we're sure is valid.
Dereferencing the pointer is UB, but you can create the pointer, assign it to a variable, etc.
Dereferencing the pointer is UB, but you can create the pointer, assign it to a variable, etc.