isConstRefReturningMethodCall should be considering
CXXOperatorCallExpr in addition to CXXMemberCallExpr. Clang considers
these to be distinct (CXXOperatorCallExpr derives from CallExpr, not
CXXMemberCallExpr), but we don't care in the context of this
check.
This is important because of
std::vector<Expensive>::operator[](size_t) const.
Does this work if if the object argument is a pointer or a type alias? Could you add a test to confirm?