Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,18 @@ jobs:
os: ubuntu-24.04
install: g++-14-multilib
address-model: 32,64
- toolset: gcc-15
cxxstd: "11,14,17,20,23,2c"
container: ubuntu:26.04
os: ubuntu-latest
install: g++-15-multilib
address-model: 32,64
- toolset: gcc-16
cxxstd: "11,14,17,20,23,2c"
container: ubuntu:26.04
os: ubuntu-latest
install: g++-16-multilib
address-model: 32,64
- toolset: clang
compiler: clang++-3.9
cxxstd: "11,14"
Expand Down
10 changes: 8 additions & 2 deletions include/boost/multi_index/detail/index_base.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2003-2025 Joaquin M Lopez Munoz.
/* Copyright 2003-2026 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
Expand Down Expand Up @@ -85,10 +85,16 @@ class index_base
typedef allocator_size_type_t<Allocator> size_type;

protected:
explicit index_base(const ctor_args_list&,const Allocator&){}
explicit index_base(
const ctor_args_list&,const Allocator&,index_node_type*){}

index_base(
const index_base<Value,IndexSpecifierList,Allocator>&,
const Allocator&,index_node_type*){}

index_base(
const index_base<Value,IndexSpecifierList,Allocator>&,
const Allocator&,index_node_type*,
do_not_copy_elements_tag)
{}

Expand Down
35 changes: 24 additions & 11 deletions include/boost/multi_index/detail/ord_index_impl.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2003-2025 Joaquin M Lopez Munoz.
/* Copyright 2003-2026 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
Expand Down Expand Up @@ -707,8 +707,10 @@ class ordered_index_impl:protected SuperMeta::type
}

protected:
ordered_index_impl(const ctor_args_list& args_list,const allocator_type& al):
super(args_list.get_tail(),al),
ordered_index_impl(
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list.get_tail(),al,h),
key(tuples::get<0>(args_list.get_head())),
comp_(tuples::get<1>(args_list.get_head()))

Expand All @@ -722,8 +724,9 @@ class ordered_index_impl:protected SuperMeta::type

ordered_index_impl(
const ordered_index_impl<
KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x):
super(x),
KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x,
const allocator_type& al,index_node_type* h):
super(x,al,h),
key(x.key),
comp_(x.comp_)

Expand All @@ -740,8 +743,9 @@ class ordered_index_impl:protected SuperMeta::type
ordered_index_impl(
const ordered_index_impl<
KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x,
const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag()),
super(x,al,h,do_not_copy_elements_tag()),
key(x.key),
comp_(x.comp_)

Expand Down Expand Up @@ -1512,6 +1516,10 @@ class ordered_index:
SuperMeta,TagList,Category,AugmentPolicy
>
>::type super;

protected:
typedef typename super::index_node_type index_node_type;

public:
typedef typename super::ctor_args_list ctor_args_list;
typedef typename super::allocator_type allocator_type;
Expand All @@ -1537,13 +1545,18 @@ class ordered_index:

protected:
ordered_index(
const ctor_args_list& args_list,const allocator_type& al):
super(args_list,al){}
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list,al,h){}

ordered_index(const ordered_index& x):super(x){}
ordered_index(
const ordered_index& x,const allocator_type& al,index_node_type* h):
super(x,al,h){}

ordered_index(const ordered_index& x,do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag()){}
ordered_index(
const ordered_index& x,const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,al,h,do_not_copy_elements_tag()){}
};

#if defined(BOOST_MSVC)
Expand Down
20 changes: 12 additions & 8 deletions include/boost/multi_index/hashed_index.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -735,12 +735,14 @@ class hashed_index:protected SuperMeta::type
}

protected:
hashed_index(const ctor_args_list& args_list,const allocator_type& al):
super(args_list.get_tail(),al),
hashed_index(
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list.get_tail(),al,h),
key(tuples::get<1>(args_list.get_head())),
hash_(tuples::get<2>(args_list.get_head())),
eq_(tuples::get<3>(args_list.get_head())),
buckets(al,header()->impl(),tuples::get<0>(args_list.get_head())),
buckets(al,h->impl(),tuples::get<0>(args_list.get_head())),
mlf(1.0f)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
Expand All @@ -752,12 +754,13 @@ class hashed_index:protected SuperMeta::type
}

hashed_index(
const hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>& x):
super(x),
const hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>& x,
const allocator_type& al,index_node_type* h):
super(x,al,h),
key(x.key),
hash_(x.hash_),
eq_(x.eq_),
buckets(x.get_allocator(),header()->impl(),x.buckets.size()),
buckets(al,h->impl(),x.buckets.size()),
mlf(x.mlf),
max_load(x.max_load)

Expand All @@ -773,12 +776,13 @@ class hashed_index:protected SuperMeta::type

hashed_index(
const hashed_index<KeyFromValue,Hash,Pred,SuperMeta,TagList,Category>& x,
const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag()),
super(x,al,h,do_not_copy_elements_tag()),
key(x.key),
hash_(x.hash_),
eq_(x.eq_),
buckets(x.get_allocator(),header()->impl(),0),
buckets(al,h->impl(),0),
mlf(1.0f)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
Expand Down
25 changes: 15 additions & 10 deletions include/boost/multi_index/random_access_index.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2003-2025 Joaquin M Lopez Munoz.
/* Copyright 2003-2026 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
Expand Down Expand Up @@ -741,9 +741,10 @@ class random_access_index:protected SuperMeta::type

protected:
random_access_index(
const ctor_args_list& args_list,const allocator_type& al):
super(args_list.get_tail(),al),
ptrs(al,header()->impl(),0)
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list.get_tail(),al,h),
ptrs(al,h->impl(),0)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand All @@ -752,9 +753,11 @@ class random_access_index:protected SuperMeta::type
{
}

random_access_index(const random_access_index<SuperMeta,TagList>& x):
super(x),
ptrs(x.get_allocator(),header()->impl(),x.size())
random_access_index(
const random_access_index<SuperMeta,TagList>& x,
const allocator_type& al,index_node_type* h):
super(x,al,h),
ptrs(al,h->impl(),x.size())

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand All @@ -766,9 +769,11 @@ class random_access_index:protected SuperMeta::type
}

random_access_index(
const random_access_index<SuperMeta,TagList>& x,do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag()),
ptrs(x.get_allocator(),header()->impl(),0)
const random_access_index<SuperMeta,TagList>& x,
const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,al,h,do_not_copy_elements_tag()),
ptrs(al,h->impl(),0)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand Down
17 changes: 11 additions & 6 deletions include/boost/multi_index/ranked_index.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2003-2025 Joaquin M Lopez Munoz.
/* Copyright 2003-2026 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
Expand Down Expand Up @@ -165,14 +165,19 @@ class ranked_index:public OrderedIndexImpl
}

protected:
ranked_index(const ranked_index& x):super(x){};
ranked_index(
const ranked_index& x,const allocator_type& al,index_node_type* h):
super(x,al,h){};

ranked_index(const ranked_index& x,do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag()){};
ranked_index(
const ranked_index& x,const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,al,h,do_not_copy_elements_tag()){};

ranked_index(
const ctor_args_list& args_list,const allocator_type& al):
super(args_list,al){}
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list,al,h){}

private:
template<typename LowerBounder,typename UpperBounder>
Expand Down
20 changes: 13 additions & 7 deletions include/boost/multi_index/sequenced_index.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright 2003-2025 Joaquin M Lopez Munoz.
/* Copyright 2003-2026 Joaquin M Lopez Munoz.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
Expand Down Expand Up @@ -655,8 +655,10 @@ class sequenced_index:protected SuperMeta::type
}

protected:
sequenced_index(const ctor_args_list& args_list,const allocator_type& al):
super(args_list.get_tail(),al)
sequenced_index(
const ctor_args_list& args_list,
const allocator_type& al,index_node_type* h):
super(args_list.get_tail(),al,h)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand All @@ -666,8 +668,10 @@ class sequenced_index:protected SuperMeta::type
empty_initialize();
}

sequenced_index(const sequenced_index<SuperMeta,TagList>& x):
super(x)
sequenced_index(
const sequenced_index<SuperMeta,TagList>& x,
const allocator_type& al,index_node_type* h):
super(x,al,h)

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand All @@ -678,8 +682,10 @@ class sequenced_index:protected SuperMeta::type
}

sequenced_index(
const sequenced_index<SuperMeta,TagList>& x,do_not_copy_elements_tag):
super(x,do_not_copy_elements_tag())
const sequenced_index<SuperMeta,TagList>& x,
const allocator_type& al,index_node_type* h,
do_not_copy_elements_tag):
super(x,al,h,do_not_copy_elements_tag())

#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
,safe(*this)
Expand Down
Loading
Loading