forked from boostorg/unordered
Add move semantics to FOA containers
This commit is contained in:
@ -89,6 +89,19 @@ namespace boost {
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_map(unordered_flat_map&& other)
|
||||
noexcept(std::is_nothrow_move_constructible<hasher>::value&&
|
||||
std::is_nothrow_move_constructible<key_equal>::value&&
|
||||
std::is_nothrow_move_constructible<allocator_type>::value)
|
||||
: table_(std::move(other.table_))
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_map(unordered_flat_map&& other, allocator_type const& al)
|
||||
: table_(std::move(other.table_), al)
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_map(std::initializer_list<value_type> ilist,
|
||||
size_type n = 0, hasher const& h = hasher(),
|
||||
key_equal const& pred = key_equal(),
|
||||
@ -105,6 +118,16 @@ namespace boost {
|
||||
return *this;
|
||||
}
|
||||
|
||||
unordered_flat_map& operator=(unordered_flat_map&& other)
|
||||
noexcept(std::allocator_traits<allocator_type>::is_always_equal::value&&
|
||||
std::is_nothrow_move_assignable<hasher>::value&&
|
||||
std::is_nothrow_move_assignable<key_equal>::value)
|
||||
{
|
||||
table_ = std::move(other.table_);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
allocator_type get_allocator() const noexcept
|
||||
{
|
||||
return table_.get_allocator();
|
||||
|
@ -88,6 +88,19 @@ namespace boost {
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_set(unordered_flat_set&& other)
|
||||
noexcept(std::is_nothrow_move_constructible<hasher>::value&&
|
||||
std::is_nothrow_move_constructible<key_equal>::value&&
|
||||
std::is_nothrow_move_constructible<allocator_type>::value)
|
||||
: table_(std::move(other.table_))
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_set(unordered_flat_set&& other, allocator_type const& al)
|
||||
: table_(std::move(other.table_), al)
|
||||
{
|
||||
}
|
||||
|
||||
unordered_flat_set(std::initializer_list<value_type> ilist,
|
||||
size_type n = 0, hasher const& h = hasher(),
|
||||
key_equal const& pred = key_equal(),
|
||||
@ -104,6 +117,16 @@ namespace boost {
|
||||
return *this;
|
||||
}
|
||||
|
||||
unordered_flat_set& operator=(unordered_flat_set&& other)
|
||||
noexcept(std::allocator_traits<allocator_type>::is_always_equal::value&&
|
||||
std::is_nothrow_move_assignable<hasher>::value&&
|
||||
std::is_nothrow_move_assignable<key_equal>::value)
|
||||
{
|
||||
table_ = std::move(other.table_);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
allocator_type get_allocator() const noexcept
|
||||
{
|
||||
return table_.get_allocator();
|
||||
|
Reference in New Issue
Block a user