diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index a7765fe7..bc3608e8 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -1502,6 +1502,23 @@ namespace boost { const_iterator find(CompatibleKey const&, CompatibleHash const&, CompatiblePredicate const&) const; + bool contains(key_type const& k) const + { + return table_.find_node_impl( + table::policy::apply_hash(this->hash_function(), k), k, + this->key_eq()); + } + + template + typename boost::enable_if_c::value, + bool>::type + contains(const Key& k) const + { + return table_.find_node_impl( + table::policy::apply_hash(this->hash_function(), k), k, + this->key_eq()); + } + size_type count(const key_type&) const; template diff --git a/test/unordered/contains_tests.cpp b/test/unordered/contains_tests.cpp index f1cefbc4..032b1677 100644 --- a/test/unordered/contains_tests.cpp +++ b/test/unordered/contains_tests.cpp @@ -148,8 +148,30 @@ void test_map() test_map_non_transparent_contains(); } +void test_multimap() +{ + typedef boost::unordered_multimap + transparent_multimap; + + typedef boost::unordered_multimap + non_transparent_multimap1; + + typedef boost::unordered_multimap + non_transparent_multimap2; + + typedef boost::unordered_multimap + non_transparent_multimap3; + + test_map_transparent_contains(); + test_map_non_transparent_contains(); + test_map_non_transparent_contains(); + test_map_non_transparent_contains(); +} + UNORDERED_AUTO_TEST (contains) { test_map(); + test_multimap(); } RUN_TESTS()