Example:
template <typename T> auto f(T* t) { return *t; }
Before that change, the UnaryOperator for *t has type <dependent type>.
After the change, its type is a T lvalue.
I've added simple tests to verify that giving knowledge of the type to clang
does not yields false positives in contexts where c++ does not allow it to use
that knowledge.
clang-format suggested style edits found: