https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110809
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note if we do: ``` struct A{}; struct B{}; template <auto> struct S {}; template <typename Hash, int i> struct bucket {}; template <typename Hash, int i> int find_indices_impl(bucket<Hash, i> const &); using HashTable = bucket<S<A{}>, 1>; auto t = find_indices_impl<S<B{}>>(HashTable{}); ``` GCC correctly rejects the above but if we replace B{} with a floating point value, we get the ICE (but not if we replace A{}). Maybe that will give an hint of what is going wrong in the end.