17struct CachedHash final {
24constexpr bool operator==(
const CachedHash<T>& x,
const CachedHash<T>& y) {
25 return x.hash == y.hash && x.key == y.key;
30constexpr bool operator!=(
const CachedHash<T>& x,
const CachedHash<T>& y) {
31 return !(x.key == y.key);
38 explicit constexpr CachedHashKeyEqual(
const Equal& eq) : Equal(eq) {}
41 constexpr bool operator()(
const CachedHash<T>& x,
42 const CachedHash<T>& y)
const {
43 return Equal::operator()(x.key, y.key);
50 explicit constexpr CachedHashKeyEqual(
const Equal& eq) : equality_(eq) {}
53 constexpr bool operator()(
const CachedHash<T>& x,
54 const CachedHash<T>& y)
const {
55 return equality_(x.key, y.key);
67struct std::hash<USERVER_NAMESPACE::utils::CachedHash<T>> {
68 constexpr std::size_t operator()(
69 const USERVER_NAMESPACE::utils::CachedHash<T>& value)
const noexcept {