mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-12 15:49:31 +02:00
Merge bitcoin/bitcoin#35175: multi_index: fix compilation failure with boost >= 1.91
0bc9d354dfmulti_index: fix compilation failure with boost >= 1.91 (Cory Fields) Pull request description: This effectively revertsa3cb309e7cfrom 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. ACKs for top commit: maflcko: review ACK0bc9d354df🎶 hebasto: ACK0bc9d354df. w0xlt: ACK0bc9d354dfTree-SHA512: 883ee998efd16d944628653ca204e3d2acaf2554b2eced40556143a66d6072a3625861d961d1a4a194a7b8d4d448562581e5d11a09380754a5635a871d2a0aa1
This commit is contained in:
@@ -91,12 +91,13 @@ class TxOrphanageImpl final : public TxOrphanage {
|
||||
}
|
||||
};
|
||||
|
||||
struct OrphanIndices final : boost::multi_index::indexed_by<
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>,
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>
|
||||
>{};
|
||||
|
||||
using AnnouncementMap = boost::multi_index::multi_index_container<Announcement, OrphanIndices>;
|
||||
using AnnouncementMap = boost::multi_index::multi_index_container<
|
||||
Announcement,
|
||||
boost::multi_index::indexed_by<
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>,
|
||||
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>
|
||||
>
|
||||
>;
|
||||
template<typename Tag>
|
||||
using Iter = typename AnnouncementMap::index<Tag>::type::iterator;
|
||||
AnnouncementMap m_orphans;
|
||||
|
||||
@@ -211,7 +211,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
|
||||
@@ -227,11 +229,7 @@ public:
|
||||
CompareTxMemPoolEntryByEntryTime
|
||||
>
|
||||
>
|
||||
{};
|
||||
typedef boost::multi_index_container<
|
||||
CTxMemPoolEntry,
|
||||
CTxMemPoolEntry_Indices
|
||||
> indexed_transaction_set;
|
||||
>;
|
||||
|
||||
/**
|
||||
* This mutex needs to be locked when accessing `mapTx` or other members
|
||||
|
||||
@@ -208,17 +208,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. */
|
||||
|
||||
Reference in New Issue
Block a user