From c9df887c4c68c619decbefe860cbb53e9102dfec Mon Sep 17 00:00:00 2001 From: LeonineKing1199 Date: Thu, 2 Dec 2021 15:38:07 -0800 Subject: [PATCH] Add member function template `erase_key_unique_impl` for usage in heterogeneous lookups --- include/boost/unordered/detail/implementation.hpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/boost/unordered/detail/implementation.hpp b/include/boost/unordered/detail/implementation.hpp index eb11219b..a6ebce08 100644 --- a/include/boost/unordered/detail/implementation.hpp +++ b/include/boost/unordered/detail/implementation.hpp @@ -4054,13 +4054,13 @@ namespace boost { // // no throw - std::size_t erase_key_unique(const_key_type& k) - { + template + std::size_t erase_key_unique_impl(KeyEqual const& eq, Key const& k) { if (!this->size_) return 0; std::size_t key_hash = this->hash(k); std::size_t bucket_index = this->hash_to_bucket(key_hash); - link_pointer prev = this->find_previous_node(k, bucket_index); + link_pointer prev = this->find_previous_node_impl(eq, k, bucket_index); if (!prev) return 0; node_pointer n = next_node(prev); @@ -4069,7 +4069,12 @@ namespace boost { --size_; this->fix_bucket(bucket_index, prev, n2); this->destroy_node(n); - return 1; + return 1; + } + + std::size_t erase_key_unique(const_key_type& k) + { + return this->erase_key_unique_impl(this->key_eq(), k); } void erase_nodes_unique(node_pointer i, node_pointer j)