我正在尝试显式实现飞船运算符。
以下是一个简单的示例,但它失败了。我做错了什么? godbolt链接
#include <iostream>
struct Foo {
int value;
// both work
auto operator<=>(const Foo&) const = default;
//bool operator==(const Foo other) const { return value == other.value; }
// both fail
// auto operator<=>(const Foo& other) const { return value <=> other.value; }
// auto operator<=>(const Foo other) const { return value <=> other.value; }
};
// fails
//auto operator<=>(const Foo lhs, const Foo rhs) { return lhs.value <=> rhs.value; }
int main(){
Foo x{0};
std::cout << (x == x) << '\n';
}
=default
的operator<=>
时,它忘记提供一个显式的operator==
。 - Eljay