mirror of
https://github.com/boostorg/multi_index.git
synced 2025-05-09 23:14:04 +00:00
added hashed_index::merge
This commit is contained in:
parent
c2f282ffb6
commit
02fb784eb1
@ -50,6 +50,11 @@
|
||||
#include <iterator>
|
||||
#include <utility>
|
||||
|
||||
#if !defined(BOOST_NO_SFINAE)
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||
#include <initializer_list>
|
||||
#endif
|
||||
@ -515,6 +520,38 @@ public:
|
||||
this->final_swap_(x.final());
|
||||
}
|
||||
|
||||
template<typename Index>
|
||||
|
||||
#if !defined(BOOST_NO_SFINAE)
|
||||
typename enable_if_c<
|
||||
!is_const<Index>::value&&
|
||||
is_same<typename Index::node_type,node_type>::value
|
||||
>::type
|
||||
#else
|
||||
void
|
||||
#endif
|
||||
|
||||
merge(Index& x)
|
||||
{
|
||||
BOOST_MULTI_INDEX_CHECK_EQUAL_ALLOCATORS(*this,x);
|
||||
BOOST_MULTI_INDEX_HASHED_INDEX_CHECK_INVARIANT;
|
||||
|
||||
this->final_merge_(x);
|
||||
}
|
||||
|
||||
template<typename Index>
|
||||
|
||||
#if !defined(BOOST_NO_SFINAE)
|
||||
typename enable_if_c<
|
||||
!is_const<Index>::value&&
|
||||
is_same<typename Index::node_type,node_type>::value
|
||||
>::type
|
||||
#else
|
||||
void
|
||||
#endif
|
||||
|
||||
merge(BOOST_RV_REF(Index) x){merge(static_cast<Index&>(x));}
|
||||
|
||||
/* observers */
|
||||
|
||||
key_from_value key_extractor()const{return key;}
|
||||
|
@ -436,7 +436,7 @@ void test_merge()
|
||||
|
||||
c1.merge(c2);
|
||||
BOOST_TEST(c1.size()==10&&c2.size()==0);
|
||||
c1.merge(c1.get<2>());
|
||||
c1.get<1>().merge(c1.get<2>());
|
||||
BOOST_TEST(c1.size()==10&&c2.size()==0);
|
||||
c2.merge(c1.get<4>());
|
||||
BOOST_TEST(c1.size()==0&&c2.size()==10);
|
||||
|
Loading…
x
Reference in New Issue
Block a user