【发布时间】:2020-07-17 06:38:03
【问题描述】:
#include <compare>
struct A
{
int n;
auto operator <=>(const A&) const noexcept = default;
};
struct B
{
int n;
auto operator <=>(const B& rhs) const noexcept
{
return n <=> rhs.n;
}
};
int main()
{
A{} == A{}; // ok
B{} == B{}; // error: invalid operands to binary expression
}
使用 clang-10 编译为 clang -std=c++20 -stdlib=libc++ main.cpp
为什么A{} == A{} 有效,而B{} == B{} 无效?
【问题讨论】:
标签: c++ comparison standards c++20 spaceship-operator