https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86619
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I Noticed clang, ICC nor MSVC either handle this either. Note GCC is the only one which handles : int f(std::array<int, 3> & a, std::array<int, 2> & b) { a[0] = 1; b[0] = 1; return a[0]; }