752 Commits

Author SHA1 Message Date
joaquintides
179b5def1e removed C++03 polyfills (#90)
* removed simulated variadic function args

* removed detail/allocator_traits.hpp in favor of Boost.Core functionality

* removed usage of Boost.Move

* avoided pessimizing-move warnings

* removed usage of BOOST_DEDUCED_TYPENAME

* removed usage of BOOST_NO_CXX11_HDR_INITIALIZER_LIST

* removed usage of BOOST_NO_MEMBER_TEMPLATES

* removed usage of BOOST_NO_SFINAE

* removed leftover pp line

* removed usage of BOOST_NO_MEMBER_TEMPLATE_FRIENDS

* removed usage of BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP

* removed usage of BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL

* removed usage of BOOST_NO_CXX11_HDR_TYPE_TRAITS

* removed usage of BOOST_NO_CXX11_HDR_RANDOM

* removed usage of BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS

* removed usage of BOOST_NO_CXX11_DECLTYPE

* removed workarounds for pre-C++11 compilers

* updated dependencies

* removed usage of BOOST_MULTI_INDEX_MEMBER and similar in examples

* updated docs

* added C++11 badge

* updated as per  Alexander Grund's review

* editorial

* removed unneeded #includes
2025-11-07 18:37:41 +01:00
joaquintides
eb993b1e23 made composite_key and associated class templates variadic (#88)
* made composite_key and associated types truly variadic

* added redundant ctor seemingly needed by MSVC 14.0

* moved redundant default ctor one derived class down

* temporarily disabled SFINAE for augmented_stdtuple(const boost_tuple_arg&)

* made previous permanent (more informative API)

* stylistic

* addes tests for std::tuple construction

* tested composite_key with long tuples

* stylistic

* tested composite_key assignability

* updated docs

* modernized test_composite_key
2025-11-05 20:16:25 +01:00
joaquintides
890f032939 removed Boost.MPL usage in favor of Boost.Mp11 (#87)
* omitted test_mpl_ops for now

* made IndexSpecifierList a Mp11 sequence

* made nested *_type_list's and tag Mp11 sequences

* leftover MPL->Mp11 change

* removed Clang 5.0 -std=c++1z as not supported by Mp11

* replaced boost::mpl::na with void as default index specifier arg

* removed Clang 5.0 -std=c++1z as not supported by Mp11 (Drone)

* replaced elementary MPL TMP with Mp11/std

* replaced elementary MPL TMP with Mp11/std (tests)

* leftover MPL #include

* suppressed potential narrowing conversion warnings

* enabled macro to support old interface, plus restored and augmented test_mpl_ops

* removed secondary dependency to MPL thru Iterator

* optimized Jamfile.v2

* added conditional support for old definition of tag

* updated MPL support macro in tests

* updated docs

* stylistic

* updated "cxxstd" in libraries.json

* disabled test_serialization for Clang 3.5-3.6 due to lack of support from Boost.SmartPtr

* fixed previous

* removed no longer necessary workaround

* removed redundant dependencies

* updated test description
2025-10-27 09:17:48 +01:00
Alexander Grund
e2b50ef729 Update Link to regression test matrix in README (#83)
* Update Link to regression test matrix in README

* Use boost.org instead of boost.io
2025-09-19 09:06:49 +02:00
ivanpanch
c2aca0975e Fix mistakes (#84)
* Update index.html

* Update basics.html

* Update indices.html

* Update debug.html

* Update techniques.html

* Update multi_index_container.html

* Update indices.html

* Update ord_indices.html

* Update hash_indices.html

* Update seq_indices.html

* Update rnd_indices.html

* Update key_extraction.html

* Update compiler_specifics.html

* Update performance.html

* Update examples.html

* Update tests.html

* Update indices.html

* Update key_extraction.html

* Update key_extraction.html

* Update multi_index_container.html

* Update rnd_indices.html
2025-09-08 10:18:24 +02:00
joaquintides
280d659bd9 dropped pre-C++11 msvc-9.0, msvc-10.0, msvc-11.0, msvc-12.0 2025-06-22 13:08:03 +02:00
joaquintides
f4045037fa upgraded CI (#82) 2025-06-22 12:37:53 +02:00
joaquintides
07eb41065d updated cppalliance/droneubuntu23xx to 2404 (#78) 2024-12-09 11:00:54 +01:00
Alexander Grund
1da523aaf8 Fix node 20 issue on GHA CI (#77)
* Fix node 20 issue on GHA CI

* Use hosted node

* Remove macos-12

* Install xz
2024-12-09 09:06:41 +01:00
René Ferdinand Rivera Morell
60ff77c181 Add support for modular build structure. (#73)
* Make the library modular usable.

* Put back removing qualified boostcpp tag. As we need it until the Jamroot removes the qualified tag.

* Switch to library requirements instead of source. As source puts extra source in install targets.

* Remove uses of BOOST_ROOT in Jamfiles.

* Add requires-b2 check to top-level build file.

* Bump B2 require to 5.2

* Update copyright dates.

* Move inter-lib dependencies to a project variable and into the build targets.

* Update build deps.
2024-10-12 09:18:24 +02:00
Peter Dimov
47d36ce8e2 Avoid inclusion of deprecated header (#74) 2024-09-30 18:39:47 +02:00
joaquintides
162318b931 udpated CI 2024-09-30 18:38:11 +02:00
joaquintides
e27a02aa81 [skip ci] updated README.md 2024-09-30 12:33:58 +02:00
joaquintides
5c17744f34 fixed documentation error 2024-03-15 09:49:30 +01:00
joaquintides
2b2c52a27f fixed #70 2023-09-09 17:06:06 +02:00
joaquintides
343cb4c6f3 fixed container size serialization in LLP64 2023-05-22 13:26:17 +02:00
joaquintides
3ad3171006 removed unneeded typename 2023-05-21 11:58:47 +02:00
joaquintides
f8143b9ff9 fixed #68 2023-05-21 11:39:44 +02:00
joaquintides
0e55b48789 removed dependency from serialization 2023-03-27 18:34:49 +02:00
joaquintides
b6d5c88629 Merge pull request #67 from Lastique/feature/remove_foreach_dep
Remove dependency on Boost.ForEach from CMakeLists.txt.
2023-03-27 18:31:45 +02:00
Andrey Semashev
7d8e20a59b Remove dependency on Boost.ForEach from CMakeLists.txt.
No public headers depend on Boost.ForEach headers, so the dependency
in CMakeLists.txt is not needed.

This dependency causes problems in downstream CI runs because boostdep
does not find the dependency on Boost.ForEach from public headers and
does not checkout Boost.ForEach git repo. This causes CMake errors
because it cannot resolve the Boost::foreach target.
2023-03-27 16:25:13 +03:00
joaquintides
6163f59747 editorial, extended test_iterators 2023-03-01 09:52:07 +01:00
joaquintides
4259987765 Merge pull request #66 from cmazakas/foreach_removal
Removal of dependency from Boost.Foreach
2023-03-01 09:39:15 +01:00
Christian Mazakas
28e00a0ea6 Add small test proving Boost.Foreach compatibility 2023-02-28 08:20:18 -08:00
Christian Mazakas
92de0326b5 Remove usage of boost/foreach_fwd.hpp in lieu of manual forward declaration + specialization 2023-02-28 08:20:18 -08:00
joaquintides
00abbbdb27 fixed header guard name 2023-02-27 09:56:45 +01:00
joaquintides
c42c2509bc removed header-level dependency from Boost.Serialization 2023-02-26 19:16:45 +01:00
joaquintides
eeac86a37e updated release notes 2022-12-28 12:44:10 +01:00
joaquintides
40bead0430 updated (C) 2022-12-28 12:43:35 +01:00
Michael Ford
4312c88ead Minor include refactors (#65)
* refactor: use type_traits/declval over utility/declval

The later is just an include for the former.

* refactor: use container_hash/hash* over functional/hash*

The later just include the former.
2022-12-28 12:34:58 +01:00
joaquintides
a7716c7f16 updated copyright dates 2022-08-23 19:12:10 +02:00
Michael Ford
ae95816ae8 refactor: use core/enable_if over utility/enable_if (#64)
The later is deprecated:
```cpp
// The header file at this path is deprecated;
// use boost/core/enable_if.hpp instead.

include <boost/core/enable_if.hpp>
```
2022-08-23 19:04:48 +02:00
joaquintides
2404754d42 fixed explanatory code as prompted by discussion in #63 2022-08-15 16:31:01 +02:00
Baoshuo Ren
45bb3c8b70 chore: bump macos runner version (#62)
GitHub Action is sunsetting the macOS 10.15 Actions runner. It will stop working intermittently until being completely removed by 2022-8-30: https://github.blog/changelog/2022-07-20-github-actions-the-macos-10-15-actions-runner-image-is-being-deprecated-and-will-be-removed-by-8-30-22
2022-08-01 10:13:07 +02:00
joaquintides
99f33def00 fixed #61 2022-07-01 09:59:56 +02:00
joaquintides
ed8d49dc59 updated (C) year 2022-06-29 09:41:53 +02:00
theidexisted
6b2be7c601 Fix typo in doc (#60) 2022-06-29 09:39:46 +02:00
joaquintides
fba66b0538 updated dates and release notes 2022-04-08 17:13:04 +02:00
Michael Ford
a7e5cf843a refactor use core/ref.hpp over ref.hpp (#58)
The later has been deprecated:
```cpp

// The header file at this path is deprecated;
// use boost/core/ref.hpp instead.

```
2022-04-08 17:05:47 +02:00
joaquintides
647a60da24 updated revision dates 2022-04-03 16:29:38 +02:00
Michael Ford
2b78a77d6b refactor: use boost/core/noncopyable.hpp over boost/noncopyable.hpp (#57)
boost/noncopyable.hpp is deprecated
2022-04-03 15:27:18 +02:00
Jonathan Wakely
9847e2daf8 Change encoding to UTF-8 for doc/style.css (#55) 2022-02-05 13:03:19 +01:00
joaquintides
7c591a13aa improved performance of count in ranked indices (#56)
* count for ranked_index uses rank

Normally, count is calculated as the distance between iterators,
which takes linear time when count(x,comp) is comparable with n,
but for ranked indices we can subtract the values or rank,
reducing the complexity from log(n)+count(x,comp) to log(n).

* Added test for new count(x) and count(x,comp) in ranked_index

Both, the existing implementation of count from ordered_index and
the new implementation for ranked_index are compared with the
common sense. Positive results of this test show in particular that
the numbers produced by the new implementation are consistent with
those from the existing implementation and hence correct.

* Benchmark of count(): ordered_index vs ranked_index

A benchmark is added as count_benchmark.cpp in the 'example'
directory.

When the values of an index are unique, both implementations are
comparable (ranked_index is 10-15% faster).

However, for highly non-unique indices (like the age of people),
the new implementation in ranked_index outperforms ordered_index.
For 1 000 people of age in 0..99 ranked_index is ~2x faster,
for 10 000 people it is 12-13x faster, and
for 100 000 people it is 95-100x times faster.

For even more non-unique indices (like sex or the age of pupils)
or coarse comparison predicates (grouping people in age groups
like 0..9, 10..19 etc.) the gap in performance grows further.
For a comparison predicate comparing 'age/10' for age in 0..99,
similar gaps in performance occur already for 10x smaller
containers:
for 100 people count in ranked_index is 2x faster,
for 1 000 people it is ~9x faster,
for 10 000 people it is 95-100x faster,
for 100 000 people it is almost 1000x faster.

* Documentation updated with new complexity of count in ranked_index

* simplified Damian's contribution

* reorganized code

* covered ranked_index::count

* updated docs

Co-authored-by: DamianSawicki <86234282+DamianSawicki@users.noreply.github.com>
2022-02-05 12:59:43 +01:00
joaquintides
7c3cb66008 corrected statements on SCARYness 2021-08-30 20:55:10 +02:00
joaquintides
2026b94c12 fixed 1b38fdcc77 2021-08-30 09:20:29 +02:00
joaquintides
0179c2c041 suppressed spurious GCC type-limits warnings 2021-08-28 10:52:28 +02:00
joaquintides
d86df5a52f kept max line length below 80 chars 2021-08-26 19:05:16 +02:00
joaquintides
5c8b26cd9b added missing #include's 2021-08-26 18:53:41 +02:00
joaquintides
1b38fdcc77 suppressed VS warnings 2021-08-26 18:41:45 +02:00
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