summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOverload.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2019-12-10 16:45:02 -0800
committerRichard Smith <richard@metafoo.co.uk>2019-12-10 17:24:27 -0800
commitbc24014b9765a454cb5214f4871451a41ffb7d29 (patch)
tree8824f31e7dc574ce2a567dcfedc2f259c2a3fa6f /clang/lib/Sema/SemaOverload.cpp
parentf364686f34d80e0873b478933952c6b664177ce4 (diff)
downloadbcm5719-llvm-bc24014b9765a454cb5214f4871451a41ffb7d29.tar.gz
bcm5719-llvm-bc24014b9765a454cb5214f4871451a41ffb7d29.zip
[c++20] Implement P1185R2 (as modified by P2002R0).
For each defaulted operator<=> in a class that doesn't explicitly declare any operator==, also inject a matching implicit defaulted operator==.
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r--clang/lib/Sema/SemaOverload.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index 344e54b7f3f..5b1394d7b34 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -9723,6 +9723,7 @@ enum OverloadCandidateKind {
oc_implicit_move_constructor,
oc_implicit_copy_assignment,
oc_implicit_move_assignment,
+ oc_implicit_equality_comparison,
oc_inherited_constructor
};
@@ -9751,6 +9752,9 @@ ClassifyOverloadCandidate(Sema &S, NamedDecl *Found, FunctionDecl *Fn,
}();
OverloadCandidateKind Kind = [&]() {
+ if (Fn->isImplicit() && Fn->getOverloadedOperator() == OO_EqualEqual)
+ return oc_implicit_equality_comparison;
+
if (CRK & CRK_Reversed)
return oc_reversed_binary_operator;
OpenPOWER on IntegriCloud