42 #ifndef PB_DS_HASH_EQ_FN_HPP
43 #define PB_DS_HASH_EQ_FN_HPP
54 template<
typename Key,
typename Eq_Fn,
typename _Alloc,
bool Store_Hash>
58 template<
typename Key,
typename Eq_Fn,
typename _Alloc>
59 struct hash_eq_fn<Key, Eq_Fn, _Alloc, false> :
public Eq_Fn
61 typedef Eq_Fn eq_fn_base;
62 typedef typename rebind_traits<_Alloc, Key>::const_reference
67 hash_eq_fn(
const Eq_Fn& r_eq_fn) : Eq_Fn(r_eq_fn) { }
70 operator()(key_const_reference r_lhs_key,
71 key_const_reference r_rhs_key)
const
72 {
return eq_fn_base::operator()(r_lhs_key, r_rhs_key); }
76 {
std::swap((Eq_Fn&)(*
this), (Eq_Fn&)other); }
81 template<
typename Key,
class Eq_Fn,
class _Alloc>
82 struct hash_eq_fn<Key, Eq_Fn, _Alloc, true> :
public Eq_Fn
84 typedef typename _Alloc::size_type size_type;
85 typedef Eq_Fn eq_fn_base;
86 typedef typename rebind_traits<_Alloc, Key>::const_reference
91 hash_eq_fn(
const Eq_Fn& r_eq_fn) : Eq_Fn(r_eq_fn) { }
94 operator()(key_const_reference r_lhs_key, size_type lhs_hash,
95 key_const_reference r_rhs_key, size_type rhs_hash)
const
97 _GLIBCXX_DEBUG_ASSERT(!eq_fn_base::operator()(r_lhs_key, r_rhs_key)
98 || lhs_hash == rhs_hash);
100 return (lhs_hash == rhs_hash &&
101 eq_fn_base::operator()(r_lhs_key, r_rhs_key));
106 {
std::swap((Eq_Fn&)(*
this), (Eq_Fn&)(other)); }
void swap(any &__x, any &__y) noexcept
Exchange the states of two any objects.
GNU extensions for policy-based data structures for public use.