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,
const CachedHash<T>& y)
const {
42 return Equal::operator()(x.key, y.key);
49 explicit constexpr CachedHashKeyEqual(
const Equal& eq) : equality_(eq) {}
52 constexpr bool operator()(
const CachedHash<T>& x,
const CachedHash<T>& y)
const {
53 return equality_(x.key, y.key);
65struct std::hash<USERVER_NAMESPACE::
utils::CachedHash<T>> {
66 constexpr std::size_t operator()(
const USERVER_NAMESPACE::
utils::CachedHash<T>& value)
const noexcept {