std::rel_ops::operator!=,>,<=,>=
Материал из ru.cppreference.net
| Определено в заголовочном файле <utility>
|
||
template< class T >
bool operator!=( const T& lhs, const T& rhs );
|
(1) | (устарело в C++20) |
template< class T >
bool operator>( const T& lhs, const T& rhs );
|
(2) | (устарело в C++20) |
template< class T >
bool operator<=( const T& lhs, const T& rhs );
|
(3) | (устарело в C++20) |
template< class T >
bool operator>=( const T& lhs, const T& rhs );
|
(4) | (устарело в C++20) |
Если для объектов типа operator== заданы пользовательские operator< и T, реализует стандартную семантику остальных операторов сравнения.
1) Реализует
operator!= через operator==.2) Реализует
operator> через operator<.3) Реализует
operator<= через operator<.4) Реализует
operator>= через operator<.Параметры
| lhs | - | левый аргумент |
| rhs | - | правый аргумент |
Возвращаемое значение
1)
Возвращает
true
если
lhs
не равен
rhs
.
2)
Возвращает
true
если
lhs
больше
чем
rhs
.
3)
Возвращает
true
если
lhs
меньше или равен
rhs
.
4)
Возвращает
true
если
lhs
больше или равен
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); } } |
` и ``, которые согласно инструкциям не подлежат переводу. Поэтому перевод не требуется, и исходный HTML сохранен без изменений.
Примечания
Boost.operators
предоставляет более универсальную альтернативу
std::rel_ops
.
Начиная с C++20,
std::rel_ops
устарели в пользу
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'; }
Вывод:
{1} != {2} : true
{1} > {2} : false
{1} <= {2} : true
{1} >= {2} : false