Additional note (February, 2014):
A related problem is raised by the definition of std::enable_if_t (21.3.3 [meta.type.synop]):
template <bool b, class T = void> using enable_if_t = typename enable_if<b,T>::type;
If b is false, there will be no type member. The intent is that such a substitution failure is to be considered as being “in the immediate context” where the alias template specialization is used, but the existing wording does not seem to accomplish that goal.