Created on 2014-07-17.00:00:00 last changed 76 months ago
Paragraphs 3-4 of 17.7 [temp.res] read, in part,
When a qualified-id is intended to refer to a type that is not a member of the current instantiation (220.127.116.11 [temp.dep.type]) and its nested-name-specifier refers to a dependent type, it shall be prefixed by the keyword typename, forming a typename-specifier. If the qualified-id in a typename-specifier does not denote a type, the program is ill-formed.
If a specialization of a template is instantiated for a set of template-arguments such that the qualified-id prefixed by typename does not denote a type, the specialization is ill-formed.
The former requirement is intended to apply to the definition and the latter to an instantiation of a template, but that intent is not completely clear, leading to the perception that they are redundant.