From a10ad015db8809e4cda43fe404be6fc936e0b6ff Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Sat, 1 Oct 2022 00:01:18 -0400 Subject: [PATCH] Update phmap::Hash so that std::hash can be overridden - issue #168 --- parallel_hashmap/phmap.h | 4 +++- parallel_hashmap/phmap_utils.h | 11 +---------- 2 files changed, 4 insertions(+), 11 deletions(-) mode change 100644 => 100755 parallel_hashmap/phmap.h diff --git a/parallel_hashmap/phmap.h b/parallel_hashmap/phmap.h old mode 100644 new mode 100755 index 48173fe..437ec64 --- a/parallel_hashmap/phmap.h +++ b/parallel_hashmap/phmap.h @@ -4426,7 +4426,9 @@ struct HashEq using is_transparent = void; template size_t operator()(const U& ptr) const { - return phmap::Hash{}(HashEq::ToPtr(ptr)); + // we want phmap::Hash and not phmap::Hash + // so "struct std::hash " override works + return phmap::Hash{}((T*)(uintptr_t)HashEq::ToPtr(ptr)); } }; diff --git a/parallel_hashmap/phmap_utils.h b/parallel_hashmap/phmap_utils.h index 4adef4e..dcf1cb7 100644 --- a/parallel_hashmap/phmap_utils.h +++ b/parallel_hashmap/phmap_utils.h @@ -164,16 +164,7 @@ struct Hash return _hash(val); } }; - -template -struct Hash -{ - inline size_t operator()(const T *val) const noexcept - { - return static_cast(reinterpret_cast(val)); - } -}; - + template struct phmap_unary_function {