summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/class/class.compare/class.spaceship
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2019-12-10 19:20:46 -0800
committerRichard Smith <richard@metafoo.co.uk>2019-12-10 19:28:30 -0800
commit8e0c9e21bf5f3e7a427b07e3eaf3bc80d2c74cb6 (patch)
treee8d27fae2f59ff1fb3df95fdb69dcbe1fd8de278 /clang/test/CXX/class/class.compare/class.spaceship
parentaf3aac9a227eaf38b625137b7337365b32404068 (diff)
downloadbcm5719-llvm-8e0c9e21bf5f3e7a427b07e3eaf3bc80d2c74cb6.tar.gz
bcm5719-llvm-8e0c9e21bf5f3e7a427b07e3eaf3bc80d2c74cb6.zip
[c++20] Delete defaulted comparison functions if they would invoke an
inaccessible comparison function.
Diffstat (limited to 'clang/test/CXX/class/class.compare/class.spaceship')
-rw-r--r--clang/test/CXX/class/class.compare/class.spaceship/p1.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/CXX/class/class.compare/class.spaceship/p1.cpp b/clang/test/CXX/class/class.compare/class.spaceship/p1.cpp
index a131842d394..7768e84323d 100644
--- a/clang/test/CXX/class/class.compare/class.spaceship/p1.cpp
+++ b/clang/test/CXX/class/class.compare/class.spaceship/p1.cpp
@@ -141,6 +141,29 @@ namespace Deletedness {
}
}
+namespace Access {
+ class A {
+ std::strong_ordering operator<=>(const A &) const; // expected-note {{here}}
+ public:
+ bool operator==(const A &) const;
+ bool operator<(const A &) const;
+ };
+ struct B {
+ A a; // expected-note {{would invoke a private 'operator<=>'}}
+ friend std::strong_ordering operator<=>(const B &, const B &) = default; // expected-warning {{deleted}}
+ };
+
+ class C {
+ std::strong_ordering operator<=>(const C &); // not viable (not const)
+ bool operator==(const C &) const; // expected-note {{here}}
+ bool operator<(const C &) const;
+ };
+ struct D {
+ C c; // expected-note {{would invoke a private 'operator=='}}
+ friend std::strong_ordering operator<=>(const D &, const D &) = default; // expected-warning {{deleted}}
+ };
+}
+
namespace Synthesis {
enum Result { False, True, Mu };
OpenPOWER on IntegriCloud