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приводит к вызову встроенного operator== для сравнения указателей, при этом составной тип указателя для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++.
| Отчёт об ошибке | Применён к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 3530 | C++20 | синтаксические проверки были ослаблены при сравнении указателей | ослабляются только семантические требования |
См. также
функциональный объект, реализующий x == y (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/functional/ranges/equal_to