From cppreference.com
The type must work with < operator and the result should have standard semantics.
Requirements
The type T satisfies LessThanComparable if given expressions a, b and c of type T or constT(since C++11), the following expression is valid and has its specified effects:
Expression Type Effects a<bmeets
(until C++20)Establishes
relation with the following properties: For all a, !(a<a) yields true.
If a<b, then !(b<a).
If a<b and b<c, then a<c.
Defining equiv(a,b) as !(a<b)&&!(b<a), if equiv(a,b) and equiv(b,c), then equiv(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
and LessThanComparable, 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 convertibility to bool was too weak to reflect the expectation of implementations requirements strengthened See also