std::ranges::equal_to
Определено в заголовке <functional> | ||
|---|---|---|
struct equal_to; | (с C++20) |
Объект-функция для выполнения сравнений. Типы параметров оператора вызова функции (но не тип возвращаемого значения) выводятся из аргументов.
Вложенные типы
| Вложенный тип | Определение |
|---|---|
is_transparent | неопределённый |
Члены-функции
| operator() | проверяет, являются ли аргументы *равными* (публичная функция-член) |
std::ranges::equal_to::operator()
template< class T, class U > constexpr bool operator()( T&& t, U&& u ) const; |
Учитывая выражение std::forward<T>(t) == std::forward<U>(u) как expr:
- Если
exprприводит к вызову встроенного оператора равенства для сравнения указателей, учитывая составной тип указателя дляtиuкакP: - Для двух преобразованных указателей (типа
P), если один указатель предшествует другому в определяемом реализацией строгом полном порядке указателей, возвращаетfalse, в противном случае возвращаетtrue. - Если последовательность преобразования из
TвPили изUвPне является сохраняющей равенство, поведение не определено. - В противном случае:
- Возвращает результат
expr. - Если
std::equality_comparable_with<T, U>не моделируется, поведение не определено.
Этот перегруз участвует в разрешении перегрузки только если выполняется std::equality_comparable_with<T, U>.
Примечания
По сравнению с std::equal_to, std::ranges::equal_to дополнительно требует, чтобы != был допустимым, и что оба типа аргументов должны быть сравнимы друг с другом (однородно) (через ограничение equality_comparable_with).
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 3530 | C++20 | синтаксические проверки были ослаблены при сравнении указателей | только семантические требования ослаблены |
См. также
объект-функция, реализующий x == y (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/ranges/equal_to