[all-commits] [llvm/llvm-project] 7a94fc: PR44721: Don't consider overloaded operators for b...
Richard Smith via All-commits
all-commits at lists.llvm.org
Tue Feb 4 12:38:39 PST 2020
Branch: refs/heads/release/10.x
Home: https://github.com/llvm/llvm-project
Commit: 7a94fc09d17bc317032eb9605eba05dced8c87e5
https://github.com/llvm/llvm-project/commit/7a94fc09d17bc317032eb9605eba05dced8c87e5
Author: Richard Smith <richard at metafoo.co.uk>
Date: 2020-02-04 (Tue, 04 Feb 2020)
Changed paths:
M clang/lib/Sema/SemaDeclCXX.cpp
M clang/test/CXX/class/class.compare/class.compare.default/p3.cpp
Log Message:
-----------
PR44721: Don't consider overloaded operators for built-in comparisons
when building a defaulted comparison.
As a convenient way of asking whether `x @ y` is valid and building it,
we previouly always performed overload resolution and built an
overloaded expression, which would both end up picking a builtin
operator candidate when given a non-overloadable type. But that's not
quite right, because it can result in our finding a user-declared
operator overload, which we should never do when applying operators
non-overloadable types.
Handle this more correctly: skip overload resolution when building
`x @ y` if the operands are not overloadable. But still perform overload
resolution (considering only builtin candidates) when checking validity,
as we don't have any other good way to ask whether a binary operator
expression would be valid.
(cherry picked from commit 1f3f8c369a5067a132c871f33a955a7feaea8534)
More information about the All-commits
mailing list