diff options
author | Richard Smith <richard@metafoo.co.uk> | 2019-12-10 16:45:02 -0800 |
---|---|---|
committer | Richard Smith <richard@metafoo.co.uk> | 2019-12-10 17:24:27 -0800 |
commit | bc24014b9765a454cb5214f4871451a41ffb7d29 (patch) | |
tree | 8824f31e7dc574ce2a567dcfedc2f259c2a3fa6f /clang/lib/Sema/SemaOverload.cpp | |
parent | f364686f34d80e0873b478933952c6b664177ce4 (diff) | |
download | bcm5719-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.cpp | 4 |
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; |