!= 在 C++20 中从 == 自动生成?

Joã*_*res 2 c++ comparison operator-overloading comparison-operators c++20

这是 C++20 中的标准行为吗?我在 cppreference 中找不到任何关于它的信息。

我刚刚在 Clang 和 Visual Studio 上都尝试过,它可以工作,并且没有给我任何错误或警告。我还检查了调试器,看看是否operator==被调用,它是!C++20 现在是否允许自动生成operator!=何时operator==存在?它默认为 sane!(a == b)吗?如果是这样,那对 C++ 来说真是太棒了!

eer*_*ika 5

!===C++20自动生成?

这是 C++20 中的标准行为吗?

是的。在 C++20 中operator!=自动生成operator==

此外,如果您定义operator<=>,则会生成所有四个关系运算符,如果您定义operator<=>为默认值,则会生成所有比较运算符。

大多数情况下你想做什么:

struct example
{
    std::string a;
    int         b;

    auto operator<=>(const example&) const = default;
};
Run Code Online (Sandbox Code Playgroud)