add extended copy ctors

This commit is contained in:
2019-05-07 01:47:20 +07:00
parent dab7140405
commit 06d4916d46
4 changed files with 30 additions and 0 deletions

View File

@@ -135,6 +135,14 @@ namespace flat_hpp
insert(ilist);
}
flat_map(flat_map&& other, const Allocator& a)
: data_(std::move(other.data_), a)
, compare_(std::move(other.compare_)) {}
flat_map(const flat_map& other, const Allocator& a)
: data_(other.data_, a)
, compare_(other.compare_) {}
flat_map(flat_map&& other) = default;
flat_map(const flat_map& other) = default;

View File

@@ -104,6 +104,14 @@ namespace flat_hpp
insert(ilist);
}
flat_set(flat_set&& other, const Allocator& a)
: data_(std::move(other.data_), a)
, compare_(std::move(other.compare_)) {}
flat_set(const flat_set& other, const Allocator& a)
: data_(other.data_, a)
, compare_(other.compare_) {}
flat_set(flat_set&& other) = default;
flat_set(const flat_set& other) = default;

View File

@@ -177,6 +177,13 @@ TEST_CASE("flat_map") {
auto s2 = std::move(s1);
REQUIRE(s1.empty());
REQUIRE(s2 == map_t{{0,1}, {1,2}});
auto s3 = map_t(s2, alloc_t(42));
REQUIRE(s2 == s3);
REQUIRE(s2.get_allocator().i == 0);
REQUIRE(s3.get_allocator().i == 42);
auto s4 = map_t(std::move(s3), alloc_t(21));
REQUIRE(s3.empty());
REQUIRE(s4 == map_t{{0,1}, {1,2}});
}
{

View File

@@ -161,6 +161,13 @@ TEST_CASE("flat_set") {
auto s2 = std::move(s1);
REQUIRE(s1.empty());
REQUIRE(s2 == set_t{0,1,2});
auto s3 = set_t(s2, alloc_t(42));
REQUIRE(s2 == s3);
REQUIRE(s2.get_allocator().i == 0);
REQUIRE(s3.get_allocator().i == 42);
auto s4 = set_t(std::move(s3), alloc_t(21));
REQUIRE(s3.empty());
REQUIRE(s4 == set_t{0,1,2});
}
{