Defined in header <functional> | ||
|---|---|---|
struct equal_to; | (since C++20) |
Function object for performing comparisons. The parameter types of the function call operator (but not the return type) are deduced from the arguments.
| Nested type | Definition |
|---|---|
is_transparent | unspecified |
| operator() | checks if the arguments are equal (public member function) |
template< class T, class U > constexpr bool operator()( T&& t, U&& u ) const; |
Given the expression std::forward<T>(t) == std::forward<U>(u) as expr:
expr results in a call to built-in operator== comparing pointers, given the composite pointer type of t and u as P: P), if one pointer precedes the other in the implementation-defined strict total order over pointers, returns false, otherwise returns true. T to P or the conversion sequence from U to P is not equality-preserving, the behavior is undefined. expr. std::equality_comparable_with<T, U> is not modeled, the behavior is undefined. This overload participates in overload resolution only if std::equality_comparable_with<T, U> is satisfied.
Compared to std::equal_to, std::ranges::equal_to additionally requires != to be valid, and that both argument types are required to be (homogeneously) comparable with themselves (via the equality_comparable_with constraint).
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3530 | C++20 | syntactic checks were relaxed while comparing pointers | only semantic requirements are relaxed |
function object implementing x == y (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/ranges/equal_to