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