Inside a template, some constructs have semantics which may differ from one
instantiation to another.
Such a construct
on the template parameters.
In particular, types and expressions may depend on the type
template parameters (as determined by the template arguments) and this determines
the context for name lookup for certain names.
An expression may be
(that is, its type may depend on a template parameter) or
(that is, its value when evaluated as a constant expression ([expr.const]
may depend on a template parameter)
as described below.