https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92812
--- Comment #7 from Marek Polacek <mpolacek at gcc dot gnu.org> --- This should now work too: int (&&r)[3] = static_cast<int[3]>(42); int (&&r2)[1] = static_cast<int[]>(42); and in both cases the reference declarations lifetime-extend the array temporary.