https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88829
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The error is now: <source>:4:19: error: no matching function for call to 'foo(int [2147483648])' 4 | auto x = foo(a); | ^ <source>:3:48: note: candidate: 'template<class T, long long unsigned int N> T* foo(T (&)[N])' 3 | template<class T, unsigned long long N> T* foo(T(&t)[N]) {return t;} | ^~~ <source>:3:48: note: template argument deduction/substitution failed: <source>: In substitution of 'template<class T, long long unsigned int N> T* foo(T (&)[N]) [with T = int; long long unsigned int N = 18446744071562067968]': <source>:4:19: required from here <source>:3:48: error: size of array exceeds maximum object size '9223372036854775807' <source>:3:55: error: size of array exceeds maximum object size '9223372036854775807' 3 | template<class T, unsigned long long N> T* foo(T(&t)[N]) {return t;} | ~~~^~~~~ But still emitted twice but then again MSVC also emits the error message twice too: <source>(2): error C2148: total size of array must not exceed 0x7fffffff bytes <source>(2): error C2148: total size of array must not exceed 0x7fffffff bytes