16 Commits

Author SHA1 Message Date
joaquintides
a52810fc3d
implemented merge operations (#49)
* initial draft

* modified appveyor.yml for this branch

* dropped BOOST_RV_REF
as it doesn't handle lvalue refs

* befriended index_base from all indices
so as to be grant access to final_extract_for_merge_ from an external container

* added rvalue ref merge
(test expected to fail in C++03)

* added explicit boost::move on rvalue ref
for the benefit of C++03 compilers

* fixed previous workaround

* refactored merge algorithm into multi_index_container

* added hashed_index::merge

* reimplemented sequenced_index::splice(position,x)

* added missing this->'s

* refactored SFINAEing code

* made sequenced_index::splice(position,x) exception robust

* reimplemented random_access_index::splice(position,x)

* micro-optimized legacy code in random_access_index::splice(position,x)

* added missing #include

* reimplemented sequenced_index::splice(position,x,i)

* reimplemented random_access_index::splice(position,x,i)

* reimplemented sequenced_index::splice(position,x,first,last)

* reimplemented random_access_index::splice(position,x,first,last)

* re-engineered sequenced_index::splice(position,x,i)
so that it works when source and destination belong to the same container

* stylistic

* re-engineered random_access_index::splice(position,x,i)
so that it works when source and destination belong to the same container

* re-engineered sequenced_index::splice(position,x,first,last)
so that it works when source and destination belong to the same container

* stylistic

* fixed bug in rvalue ref overload of sequenced_index::splice(position,x,first,last)

* fixed internal sequenced_index::splice(position,x,first,last) across different indices

* re-engineered random_access_index::splice(position,x,first,last)
the same way as done with sequenced_index

* replaced multi_index_container::merge_ with transfer_range_
so as to refactor some code in non-key-based indices

* fixed safe mode check for different-type containers

* hardened merge/splice tests

* s/BOOST_RV_REF/BOOST_FWD_REF

* called the right merge_different overload

* fixed problem with Boost.Move C++03 perfect fwd emulation

* updated (C) year

* allowed intra-container full splice

* required position==end() in intra-container full splice

* made pointwise splice return a pair<iterator,bool>

* added partial merge functionality to key-based indices
plus fixed a compile-time error with legacy splice code when applied to different-type indices

* suppressed unused variable

* fixed wrong signature in splice memfun

* made safe-mode iterators SCARY

* refactored any_container_view

* implemented safe iterator transfer in merge/splice

* reorganized internal deps

* stylistic

* automatically checked iterator invalidation upon merge/splice

* removed commented-out code

* checked allocator equality

* reimplemented random_access_index internal, cross-index splice in linear time

* updated docs

* reverted appveyor.yml
2021-08-19 10:41:03 +02:00
joaquintides
4a109e99e5 avoided deprecated #includes, fixed Boost.Move headers 2020-05-10 12:17:55 +02:00
joaquintides
e69466039d implemented node extraction/insertion (#27) 2020-05-09 20:25:41 +02:00
joaquintides
6698843328 avoided self-assign-overloaded Clang warnings 2018-12-31 12:54:27 +01:00
joaquintides
0181f7dd8e suppressed -Wunused-local-typedefs warnings 2015-06-02 08:21:48 +02:00
joaquintides
86d7b3ef6e copied content from develop after wrongly made merge 2013-12-25 12:36:32 +01:00
Joaquín M López Muñoz
0f583940c9 merged [82897], [82970] and [82993] from trunk
[SVN r83003]
2013-02-19 14:49:33 +00:00
Joaquín M López Muñoz
bd8ea1bc86 merged up to rev. 47041 from trunk
[SVN r47045]
2008-07-03 16:51:53 +00:00
Joaquín M. López Muñoz
3a663bd7c4 merged from trunk to branch
[SVN r33545]
2006-04-05 07:28:50 +00:00
Joaquín M. López Muñoz
cf84a0dc1c fixed bug reported at http://lists.boost.org/boost-users/2006/02/17230.php
[SVN r32966]
2006-02-16 16:02:25 +00:00
Joaquín M. López Muñoz
5fec019715 fixed seemingly illegal ADL usage as per std 14.6.4.2
[SVN r32746]
2006-02-08 17:37:33 +00:00
Joaquín M. López Muñoz
f54edbf0d3 added random access indices; out of bounds checking
[SVN r32670]
2006-02-06 15:53:36 +00:00
Joaquín M. López Muñoz
d5835caad6 changes to cover hashed indices
[SVN r27858]
2005-03-28 13:03:52 +00:00
Joaquín M. López Muñoz
cd62da5ed2 extended safe mode to deal with assignments of invalid iterators
[SVN r23904]
2004-07-21 15:19:11 +00:00
Joaquín M. López Muñoz
eb2a1dbca3 license update
[SVN r22959]
2004-05-28 08:06:41 +00:00
Joaquín M. López Muñoz
b35bef74e4 initial commit
[SVN r22759]
2004-05-07 10:44:23 +00:00