A name that appears in a declaration 
D of a template 
T is looked up
from where it appears
in an unspecified declaration of 
T
that either is 
D itself or is reachable from 
D and
from which no other declaration of 
T
that contains the usage of the name is reachable
.If the name is dependent (as specified in 
[temp.dep]),
it is looked up for each specialization (after substitution)
because the lookup depends on a template parameter
.