From cppreference.com
The type must work with == operator and the result should have standard semantics.
Requirements
The type T satisfies EqualityComparable if given expressions a, b and c of type T or (since C++11)constT, the following expression is valid and has its specified effects:
Expression Type Effects a==bmeets
(until C++20)Establishes an
, that is, it satisfies the following properties: For all values of a, a==a yields true.
If a==b, then b==a.
If a==b and b==c, then a==c.
models
(since C++20)Notes
To satisfy this requirement, types that do not have built-in
have to provide a
.
For the types that are both EqualityComparable and
, the C++ standard library makes a distinction between
Equality, which is the value of the expression a==b and
Equivalence, which is the value of the expression !(a<b)&&!(b<a).
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 even if T is EqualityComparable, the
requirements did not apply to constT objects they apply to
constT instead of T
(
) C++98 convertibility to bool was too weak to reflect the expectation of implementations requirements strengthened See also