Spec-Zone.ru › C++

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 синтаксические проверки были ослаблены при сравнении указателей ослабляются только семантические требования

См. также

equal_to
функциональный объект, реализующий 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API