Defined in header <utility> | ||
---|---|---|
template< class T > bool operator!=( const T& lhs, const T& rhs ); | (1) | (deprecated in C++20) |
template< class T > bool operator>( const T& lhs, const T& rhs ); | (2) | (deprecated in C++20) |
template< class T > bool operator<=( const T& lhs, const T& rhs ); | (3) | (deprecated in C++20) |
template< class T > bool operator>=( const T& lhs, const T& rhs ); | (4) | (deprecated in C++20) |
Given a user-defined operator==
and operator<
for objects of type T
, implements the usual semantics of other comparison operators.
operator!=
in terms of operator==
.operator>
in terms of operator<
.operator<=
in terms of operator<
.operator>=
in terms of operator<
.lhs | - | left-hand argument |
rhs | - | right-hand argument |
true
if lhs
is not equal to rhs
.true
if lhs
is greater than rhs
.true
if lhs
is less or equal to rhs
.true
if lhs
is greater or equal to rhs
.
(1) operator!= |
---|
namespace rel_ops { template<class T> bool operator!=(const T& lhs, const T& rhs) { return !(lhs == rhs); } } |
(2) operator> |
namespace rel_ops { template<class T> bool operator>(const T& lhs, const T& rhs) { return rhs < lhs; } } |
(3) operator<= |
namespace rel_ops { template<class T> bool operator<=(const T& lhs, const T& rhs) { return !(rhs < lhs); } } |
(4) operator>= |
namespace rel_ops { template<class T> bool operator>=(const T& lhs, const T& rhs) { return !(lhs < rhs); } } |
Boost.operators provides a more versatile alternative to std::rel_ops
.
As of C++20, std::rel_ops
are deprecated in favor of operator<=>
.
#include <iostream> #include <utility> struct Foo { int n; }; bool operator==(const Foo& lhs, const Foo& rhs) { return lhs.n == rhs.n; } bool operator<(const Foo& lhs, const Foo& rhs) { return lhs.n < rhs.n; } int main() { Foo f1 = {1}; Foo f2 = {2}; using namespace std::rel_ops; std::cout << std::boolalpha << "{1} != {2} : " << (f1 != f2) << '\n' << "{1} > {2} : " << (f1 > f2) << '\n' << "{1} <= {2} : " << (f1 <= f2) << '\n' << "{1} >= {2} : " << (f1 >= f2) << '\n'; }
Output:
{1} != {2} : true {1} > {2} : false {1} <= {2} : true {1} >= {2} : false
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/rel_ops/operator_cmp