https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90971
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (This time with better formatting) For the first error GCC currently shows: > enab.cc:7:6: note: template argument deduction/substitution failed: > enab.cc:6:22: error: no type named 'type' in 'struct std::enable_if<false, > void>' > 6 | template<typename T, typename = typename > std::enable_if<is_foo<T>::value>::type> > | ^~~~~~~~ And I suggest: > enab.cc:7:6: note: template argument deduction/substitution failed: > enab.cc:6:22: error: enable_if condition not satisfied: 'is_foo<T>::value' > 6 | template<typename T, typename = typename > std::enable_if<is_foo<T>::value>::type> > | > ^~~~~~~~~~~~~~~~ I also see that Clang adds [with T = int] which isn't shown anywhere in GCC's output (it has to be inferred from "no matching function for call to 'bar1(int)'").