https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105111
--- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> --- FWIW one workaround could be to consistently use 'T' or 'const T&' as the first function parameter for both functions. Another workaround could be to constrain the second overload with '(!std::is_signed<T>::value)'.