std::experimental::ranges:: equal_to
|
Определено в заголовочном файле
<experimental/ranges/functional>
|
||
|
template
<
class
T
=
void
>
requires EqualityComparable
<
T
>
||
|
(ranges TS) | |
|
template
<>
struct equal_to < void > ; |
(ranges TS) | |
Функциональный объект для выполнения сравнений. Основной шаблон вызывает
operator
==
для const lvalue типа
T
. Специализация
equal_to<void>
выводит типы параметров функционального оператора вызова из аргументов (но не тип возвращаемого значения).
Все специализации
equal_to
являются
Semiregular
.
Содержание |
Типы членов
| Тип члена | Определение |
is_transparent
(только для члена
equal_to<void>
специализации)
|
/* неопределено */ |
Функции-члены
|
operator()
|
проверяет, являются ли аргументы
равными
(public member function) |
std::experimental::ranges::equal_to:: operator()
|
constexpr
bool
operator
(
)
(
const
T
&
x,
const
T
&
y
)
const
;
|
(1) |
(член только основного шаблона
equal_to<T>
)
|
|
template
<
class
T,
class
U
>
requires EqualityComparableWith
<
T, U
>
||
|
(2) |
(член только специализации
equal_to<void>
)
|
t
и
u
. Эквивалентно
return
std::
forward
<
T
>
(
t
)
==
std::
forward
<
U
>
(
u
)
;
, за исключением случаев, когда это выражение разрешается в вызов встроенного
operator
==
для сравнения указателей.
Когда вызов
(1)
или
(2)
должен был бы вызвать встроенный оператор сравнения указателей типа
P
, результат определяется следующим образом:
-
Возвращает
false
, если одно из (возможно преобразованных) значений первого аргумента предшествует другому в реализации-определенном строгом полном порядке всех значений указателей типа
P. Этот строгий полный порядок согласован с частичным порядком, налагаемым встроенными операторами<,>,<=, и>=. - В противном случае (ни одно не предшествует другому), возвращает true .
Поведение не определено, если последовательности преобразований из
T
и
U
в
P
не сохраняют равенство (см. ниже).
Сохранение равенства
Выражение сохраняет равенство , если оно даёт равные выходные данные при равных входных данных.
- Входные данные выражения состоят из его операндов.
- Выходные данные выражения состоят из его результата и всех операндов, модифицированных выражением (если есть).
Каждое выражение, которое должно сохранять равенство, также должно быть стабильным : два вычисления такого выражения с одинаковыми входными объектами должны давать одинаковые выходные данные при отсутствии явных изменений этих входных объектов между вычислениями.
Примечания
В отличие от
std::equal_to
,
ranges::equal_to
требует, чтобы оба оператора
==
и
!=
были валидными (через ограничения
EqualityComparable
и
EqualityComparableWith
).
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
функциональный объект, реализующий
x
==
y
(шаблон класса) |