|
| _Hash_code_base (const _Hash &__hash) |
|
std::size_t | _M_bucket_index (__hash_code __c, std::size_t __bkt_count) const |
|
std::size_t | _M_bucket_index (const _Hash_node_value< _Value, false > &__n, std::size_t __bkt_count) const noexcept(noexcept(declval< const _Hash &>()(declval< const _Key &>())) &&noexcept(declval< const _RangeHash &>()((__hash_code) 0,(std::size_t) 0))) |
|
std::size_t | _M_bucket_index (const _Hash_node_value< _Value, true > &__n, std::size_t __bkt_count) const noexcept(noexcept(declval< const _RangeHash &>()((__hash_code) 0,(std::size_t) 0))) |
|
void | _M_copy_code (_Hash_node_code_cache< false > &, const _Hash_node_code_cache< false > &) const |
|
void | _M_copy_code (_Hash_node_code_cache< true > &__to, const _Hash_node_code_cache< true > &__from) const |
|
const _Hash & | _M_hash () const |
|
__hash_code | _M_hash_code (const _Key &__k) const |
|
template<typename _Kt > |
__hash_code | _M_hash_code_tr (const _Kt &__k) const |
|
void | _M_store_code (_Hash_node_code_cache< false > &, __hash_code) const |
|
void | _M_store_code (_Hash_node_code_cache< true > &__n, __hash_code __c) const |
|
void | _M_swap (_Hash_code_base &__x) |
|
template<typename _Key, typename _Value, typename _ExtractKey, typename _Hash, typename _RangeHash, typename _Unused, bool __cache_hash_code>
struct std::__detail::_Hash_code_base< _Key, _Value, _ExtractKey, _Hash, _RangeHash, _Unused, __cache_hash_code >
Primary class template _Hash_code_base.
Encapsulates two policy issues that aren't quite orthogonal. (1) the difference between using a ranged hash function and using the combination of a hash function and a range-hashing function. In the former case we don't have such things as hash codes, so we have a dummy type as placeholder. (2) Whether or not we cache hash codes. Caching hash codes is meaningless if we have a ranged hash function.
We also put the key extraction objects here, for convenience. Each specialization derives from one or more of the template parameters to benefit from Ebo. This is important as this type is inherited in some cases by the _Local_iterator_base type used to implement local_iterator and const_local_iterator. As with any iterator type we prefer to make it as small as possible.
Definition at line 1187 of file hashtable_policy.h.