Implement transparent insert_or_assign()

This commit is contained in:
Christian Mazakas
2022-12-13 14:28:19 -08:00
parent 01d508b6af
commit 0a879c1063
2 changed files with 46 additions and 2 deletions
+22
View File
@@ -801,6 +801,16 @@ namespace boost {
boost::move(k), boost::forward<M>(obj));
}
template <class Key, class M>
typename boost::enable_if_c<
detail::are_transparent<Key, hasher, key_equal>::value,
std::pair<iterator, bool> >::type
insert_or_assign(BOOST_FWD_REF(Key) k, BOOST_FWD_REF(M) obj)
{
return table_.insert_or_assign_unique(
boost::forward<Key>(k), boost::forward<M>(obj));
}
template <class M>
iterator insert_or_assign(
const_iterator, key_type const& k, BOOST_FWD_REF(M) obj)
@@ -817,6 +827,18 @@ namespace boost {
.first;
}
template <class Key, class M>
typename boost::enable_if_c<
detail::are_transparent<Key, hasher, key_equal>::value, iterator>::type
insert_or_assign(
const_iterator, BOOST_FWD_REF(Key) k, BOOST_FWD_REF(M) obj)
{
return table_
.insert_or_assign_unique(
boost::forward<Key>(k), boost::forward<M>(obj))
.first;
}
iterator erase(iterator);
iterator erase(const_iterator);
size_type erase(const key_type&);