associated by name lookup with
a variable declared with a type that contains a placeholder type ([dcl.spec.auto])
where the initializer is type-dependent,
associated by name lookup with one or more
declarations of member functions of a class that is the current instantiation
declared with a return type that contains a placeholder type,
or if it names a dependent member of the current instantiation that is a static
data member of type
“array of unknown bound of T” for some T ([temp.static]).
A class member access expression is
type-dependent if
the terminal name of its id-expression, if any, is dependent or
the expression refers to a member of the current instantiation and
the type of the referenced member is dependent.
In an expression of the form
x.y
or
xp->y
the type of the expression is usually the type of the member
y
of the class of
x
(or the class pointed to by
xp).
However, if
x
or
xp
refers to a dependent type that is not the current instantiation,
the type of
y
is always dependent.