http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48934
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-09 16:28:51 UTC --- The point of that example is that even clang's "substitution failed" could be improved, because T is substituted successfully into the return type "S1<T>::type" but not into the parameter type "S1<T>::typo" (in the general case they wouldn't both use S1 and there could be several parameters) So a better reason would be "substitution failed for parameter 1" but I don't know how easy that is, if it's even possible in the current G++ codebase