mirror of
https://github.com/boostorg/multi_index.git
synced 2025-05-11 05:14:05 +00:00
added hashed_index::merge
This commit is contained in:
parent
c2f282ffb6
commit
02fb784eb1
@ -50,6 +50,11 @@
|
|||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <utility>
|
#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)
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
#endif
|
#endif
|
||||||
@ -515,6 +520,38 @@ public:
|
|||||||
this->final_swap_(x.final());
|
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 */
|
/* observers */
|
||||||
|
|
||||||
key_from_value key_extractor()const{return key;}
|
key_from_value key_extractor()const{return key;}
|
||||||
|
@ -436,7 +436,7 @@ void test_merge()
|
|||||||
|
|
||||||
c1.merge(c2);
|
c1.merge(c2);
|
||||||
BOOST_TEST(c1.size()==10&&c2.size()==0);
|
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);
|
BOOST_TEST(c1.size()==10&&c2.size()==0);
|
||||||
c2.merge(c1.get<4>());
|
c2.merge(c1.get<4>());
|
||||||
BOOST_TEST(c1.size()==0&&c2.size()==10);
|
BOOST_TEST(c1.size()==0&&c2.size()==10);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user