https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11582
--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Since GCC 11 we produce: <source>: In function 'void g()': <source>:7:4: error: no matching function for call to 'f(int [<anonymous>])' 7 | f( buf ) ; | ~^~~~~~~ <source>:3:28: note: candidate: 'template<int N> void f(int (&)[N])' 3 | template <int N> void f(int (&)[N]); | ^ <source>:3:28: note: template argument deduction/substitution failed: <source>:7:4: note: variable-sized array type 'long int' is not a valid template argument 7 | f( buf ) ; | ~^~~~~~~ GCC 11 removes the (<anonymous> + 1) part and just changes it to be <anonumous>. Is this warning good now?