From ce7710e9c39dc6cd636ee965f0c336a805442adf Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Tue, 21 Jun 2022 21:03:16 -0400 Subject: [PATCH] Fix HashtableDebugAccess as in gtl --- parallel_hashmap/phmap.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/parallel_hashmap/phmap.h b/parallel_hashmap/phmap.h index 3788d1f..8f79cd6 100644 --- a/parallel_hashmap/phmap.h +++ b/parallel_hashmap/phmap.h @@ -621,7 +621,7 @@ const typename T::key_type& GetKey(const typename T::key_type& key, char) { // container. // -------------------------------------------------------------------------- template -struct HashtableDebugAccess +struct HashtableDebugAccess { // Returns the number of probes required to find `key` in `c`. The "number of // probes" is a concept that can vary by container. Implementations should @@ -4394,8 +4394,16 @@ namespace hashtable_debug_internal { // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- + +template +struct has_member_type_raw_hash_set : std::false_type +{}; +template +struct has_member_type_raw_hash_set> : std::true_type +{}; + template -struct HashtableDebugAccess> +struct HashtableDebugAccess::value>::type> { using Traits = typename Set::PolicyTraits; using Slot = typename Traits::slot_type; @@ -4454,9 +4462,15 @@ struct HashtableDebugAccess> }; -#if !defined(__clang__) // compilation error with clang++-12 -stdc++=20 (should fix ) +template +struct has_member_type_EmbeddedSet : std::false_type +{}; +template +struct has_member_type_EmbeddedSet> : std::true_type +{}; + template -struct HashtableDebugAccess> { +struct HashtableDebugAccess::value>::type> { using Traits = typename Set::PolicyTraits; using Slot = typename Traits::slot_type; using EmbeddedSet = typename Set::EmbeddedSet; @@ -4468,7 +4482,6 @@ struct HashtableDebugAccess> { return HashtableDebugAccess::GetNumProbes(inner_set, key); } }; -#endif } // namespace hashtable_debug_internal } // namespace priv