diff --git a/parallel_hashmap/phmap.h b/parallel_hashmap/phmap.h index 2f49ec3..611704f 100644 --- a/parallel_hashmap/phmap.h +++ b/parallel_hashmap/phmap.h @@ -3301,12 +3301,15 @@ public: #if __cplusplus >= 201703L static_assert(std::is_invocable::value); #endif - L m; - auto it = this->template find(key, this->hash(key), m); - if (it == this->end()) return false; + auto hashval = this->hash(key); + Inner& inner = sets_[subidx(hashval)]; + auto& set = inner.set_; + L m(inner); + auto it = set.find(key, hashval); + if (it == set.end()) return false; if (std::forward(f)(const_cast(*it))) { - this->erase(it); + set._erase(it); return true; } return false; diff --git a/tests/raw_hash_set_allocator_test.cc b/tests/raw_hash_set_allocator_test.cc index 5930377..b61303e 100644 --- a/tests/raw_hash_set_allocator_test.cc +++ b/tests/raw_hash_set_allocator_test.cc @@ -67,7 +67,7 @@ class CheckedAlloc { std::integral_constant; CheckedAlloc select_on_container_copy_construction() const { - if (Spec & kPropagateOnCopy) return *this; + PHMAP_IF_CONSTEXPR (Spec & kPropagateOnCopy) return *this; return {}; }