================ @@ -14644,6 +14644,17 @@ QualType Sema::CheckAddressOfOperand(ExprResult &OrigOp, SourceLocation OpLoc) { return QualType(); } + // C++11 [expr.unary.op] p4: + // A pointer to member is only formed when an explicit & is used and + // its operand is a qualified-id not enclosed in parentheses. + if (isa<ParenExpr>(OrigOp.get())) { + // `op->getEndLoc()` is the last part of the qualified-id. + // For example, "baz" in "foo::bar::baz". + Diag(op->getEndLoc(), diag::err_invalid_non_static_member_use) + << dcl->getDeclName() << op->getSourceRange(); ---------------- AaronBallman wrote:
We should also add a fix-it to remove the parentheses as a kindness to the user. https://github.com/llvm/llvm-project/pull/89713 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits