Fix assigning hash/key equality functions for empty containers

This commit is contained in:
Daniel James
2016-11-21 10:24:51 +00:00
parent 3db4654b44
commit 33f701dd09
2 changed files with 19 additions and 2 deletions

View File

@ -589,7 +589,10 @@ namespace boost { namespace unordered { namespace detail {
mlf_ = x.mlf_;
recalculate_max_load();
if (!size_ && !x.size_) return;
if (!size_ && !x.size_) {
new_func_this.commit();
return;
}
if (x.size_ >= max_load_) {
create_buckets(min_buckets_for_size(x.size_));

View File

@ -77,7 +77,21 @@ void assign_tests2(T*, test::random_generator generator)
BOOST_DEDUCED_TYPENAME T::allocator_type al2(2);
typedef BOOST_DEDUCED_TYPENAME T::allocator_type allocator_type;
std::cerr<<"assign_tests2.0 - empty container\n";
{
test::check_instances check_;
T x1(0, hf1, eq1);
T x2(0, hf2, eq2);
x2 = x1;
BOOST_TEST(test::equivalent(x1.hash_function(), hf1));
BOOST_TEST(test::equivalent(x1.key_eq(), eq1));
BOOST_TEST(test::equivalent(x2.hash_function(), hf1));
BOOST_TEST(test::equivalent(x2.key_eq(), eq1));
test::check_container(x1, x2);
}
std::cerr<<"assign_tests2.1\n";
{
test::check_instances check_;