mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
multi_index: fix compilation failure with boost >= 1.91
This effectively reverts a3cb309e7c from PR #30194.
That PR reduced the multi_index type signatures as recommended upstream, but
this is no longer supported as of boost 1.91 because it is no longer necessary.
1.91 drops support for the pre-c++11 work-arounds that bloated the type
signatures to begin with.
The upstream `BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT` define is meant to provide
compatibility with removed features, but it does not work for this case. Using
`indexed_by` directly when defining the `multi_index` (as opposed to inheriting
from it) works with all versions, and avoids the use of the back-compat define.
This is a slight regression when building against boost < 1.91 because the
bloated type signatures are reintroduced in that case, but it's not significant
enough to go to the trouble of introducing version detection and ifdefs.
Github-Pull: #35175
Rebased-From: 0bc9d354dfd8074d1c36a891a69b6585a8775c65
This commit is contained in:
parent
0fb5e167e8
commit
546598b736
3 changed files with 13 additions and 20 deletions
|
|
@ -102,7 +102,9 @@ struct CompareTxIterByAncestorCount {
|
|||
};
|
||||
|
||||
|
||||
struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by<
|
||||
using indexed_modified_transaction_set = boost::multi_index_container<
|
||||
CTxMemPoolModifiedEntry,
|
||||
boost::multi_index::indexed_by<
|
||||
boost::multi_index::ordered_unique<
|
||||
modifiedentry_iter,
|
||||
CompareCTxMemPoolIter
|
||||
|
|
@ -115,12 +117,7 @@ struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by<
|
|||
CompareTxMemPoolEntryByAncestorFee
|
||||
>
|
||||
>
|
||||
{};
|
||||
|
||||
typedef boost::multi_index_container<
|
||||
CTxMemPoolModifiedEntry,
|
||||
CTxMemPoolModifiedEntry_Indices
|
||||
> indexed_modified_transaction_set;
|
||||
>;
|
||||
|
||||
typedef indexed_modified_transaction_set::nth_index<0>::type::iterator modtxiter;
|
||||
typedef indexed_modified_transaction_set::index<ancestor_score>::type::iterator modtxscoreiter;
|
||||
|
|
|
|||
|
|
@ -329,7 +329,9 @@ public:
|
|||
|
||||
static const int ROLLING_FEE_HALFLIFE = 60 * 60 * 12; // public only for testing
|
||||
|
||||
struct CTxMemPoolEntry_Indices final : boost::multi_index::indexed_by<
|
||||
using indexed_transaction_set = boost::multi_index_container<
|
||||
CTxMemPoolEntry,
|
||||
boost::multi_index::indexed_by<
|
||||
// sorted by txid
|
||||
boost::multi_index::hashed_unique<mempoolentry_txid, SaltedTxidHasher>,
|
||||
// sorted by wtxid
|
||||
|
|
@ -357,11 +359,7 @@ public:
|
|||
CompareTxMemPoolEntryByAncestorFee
|
||||
>
|
||||
>
|
||||
{};
|
||||
typedef boost::multi_index_container<
|
||||
CTxMemPoolEntry,
|
||||
CTxMemPoolEntry_Indices
|
||||
> indexed_transaction_set;
|
||||
>;
|
||||
|
||||
/**
|
||||
* This mutex needs to be locked when accessing `mapTx` or other members
|
||||
|
|
|
|||
|
|
@ -212,17 +212,15 @@ struct ByTimeViewExtractor
|
|||
}
|
||||
};
|
||||
|
||||
struct Announcement_Indices final : boost::multi_index::indexed_by<
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>,
|
||||
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>,
|
||||
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor>
|
||||
>
|
||||
{};
|
||||
|
||||
/** Data type for the main data structure (Announcement objects with ByPeer/ByTxHash/ByTime indexes). */
|
||||
using Index = boost::multi_index_container<
|
||||
Announcement,
|
||||
Announcement_Indices
|
||||
boost::multi_index::indexed_by<
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>,
|
||||
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>,
|
||||
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor>
|
||||
>
|
||||
>;
|
||||
|
||||
/** Helper type to simplify syntax of iterator types. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue