Default explicit equality operator

Kent - August 13, 2024

C++20 introduced a defaulted explicit equality operator (==). It instructs the compiler to implement a piecewise equality check between two instances of the same class or struct.

As a regular member function:

#include <string>

struct X
{
    int x = 0;
    std::string name;

    bool operator==(const X &) const = default;
};

auto main() -> int
{
    X a{}, b{};
    bool equal = (a == b);

    return equal ? 0 : 1;
}

As a friend member function:

struct F
{
    int x = 0;
    std::string name;

    friend bool operator==(const F &, const F &) = default;
};

auto main() -> int
{
    F g{}, h{};
    bool friend_equal = (g == h);

    return friend_equal ? 0 : 1;
}

This default comparison replaces the manually implemented comparison and equality operator.

More information at https://en.cppreference.com/w/cpp/language/default_comparisons

See Also

Comments

Any comments? Create a new discussion on GitHub.
There used to be an inline comment form here, but it was removed.