I am experimenting with template partial specializations and I have come to the following code.
template <typename T>
struct X {
using type = T;
};
template <typename T>
struct Y {};
template <typename T>
struct Y<typename X<T>::type> {};
Clang, GCC, and MSVC seem to complain that the template parameter is not deducible in this context. However, the partial specialization should never be matched. Thus every specialization would rely on the the primary template definition.
I can't find the section in the specification which prohibits this.