Пространства имён
Варианты
Действия

std::rel_ops::operator!=,>,<=,>=

Материал из cppreference.com
< cpp‎ | utility

Определено в заголовочном файле <utility>
template< class T >
bool operator!=( const T& lhs, const T& rhs );
(1)
template< class T >
bool operator>( const T& lhs, const T& rhs );
(2)
template< class T >
bool operator<=( const T& lhs, const T& rhs );
(3)
template< class T >
bool operator>=( const T& lhs, const T& rhs );
(4)
Учитывая определенный пользователем operator== и operator< для объектов типа T, реализующего обычную семантику других операторов сравнения.
Оригинал:
Given a user-defined operator== and operator< for objects of type T, implements the usual semantics of other comparison operators.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
1)
Реализует operator!= с точки зрения operator==.
Оригинал:
Implements operator!= in terms of operator==.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Реализует operator> с точки зрения operator<.
Оригинал:
Implements operator> in terms of operator<.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3)
Реализует operator<= с точки зрения operator<.
Оригинал:
Implements operator<= in terms of operator<.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
4)
Реализует operator>= с точки зрения operator<.
Оригинал:
Implements operator>= in terms of operator<.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

lhs -
левый аргумент
Оригинал:
left-hand argument
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
rhs -
правый аргумент
Оригинал:
right-hand argument
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

1)
Возврат true если lhs это не равно для rhs.
Оригинал:
Returns true if lhs is not equal to rhs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
2)
Возврат true если lhs является' больше, чем rhs.
Оригинал:
Returns true if lhs is greater than rhs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3)
Возврат true если lhs является меньше или равно для rhs.
Оригинал:
Returns true if lhs is less or equal to rhs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
4)
Возврат true если lhs является больше или равно для rhs.
Оригинал:
Returns true if lhs is greater or equal to rhs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возможная реализация

Первый вариант
namespace rel_ops {
    template< class T >
    bool operator!=( const T& lhs, const T& rhs )
    {
        return !(lhs == rhs);
    }
}
Второй вариант
namespace rel_ops {
    template< class T >
    bool operator>( const T& lhs, const T& rhs )
    {
        return rhs < lhs;
    }
}
Третий вариант
namespace rel_ops {
    template< class T >
    bool operator<=( const T& lhs, const T& rhs )
    {
        return !(rhs < lhs);;
    }
}
Четвёртый вариант
namespace rel_ops {
    template< class T >
    bool operator>=( const T& lhs, const T& rhs )
    {
        return !(lhs < rhs);
    }
}

[править] Пример

#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;
    std::cout << "not equal?     : " << (bool) (f1 != f2) << '\n';
    std::cout << "greater?       : " << (bool) (f1 > f2) << '\n';
    std::cout << "less equal?    : " << (bool) (f1 <= f2) << '\n';
    std::cout << "greater equal? : " << (bool) (f1 >= f2) << '\n';
}

Вывод:

not equal?     : true
greater?       : false
less equal?    : true
greater equal? : false