https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70141
Barry Revzin <barry.revzin at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |barry.revzin at gmail dot com --- Comment #13 from Barry Revzin <barry.revzin at gmail dot com> --- Markus - note that clang warns about the specialization, but compiles the example anyway which actually requires the selection of the supposedly unselectable specialization. This example: template <typename T> struct X {}; template <typename T> struct X<typename T::foo> {}; isn't related, since here T is a non-deduced context (nested-name-specifier), but OP's example is: template <typename U> struct predicate<typename outer<T>::template inner<U>> U is not in the nested-name-specifier, T is... but T isn't being deduced.