Not saying that this way is better, just saying that it will also emit compile errors even without the helper:
diff --git a/src/wallet/transaction.h b/src/wallet/transaction.h
index 7dc91bebd8..5a717e498c 100644
--- a/src/wallet/transaction.h
+++ b/src/wallet/transaction.h
@@ -8,12 +8,11 @@
#include <amount.h>
#include <primitives/transaction.h>
#include <serialize.h>
-#include <wallet/ismine.h>
#include <threadsafety.h>
#include <tinyformat.h>
-#include <util/overloaded.h>
#include <util/strencodings.h>
#include <util/string.h>
+#include <wallet/ismine.h>
#include <list>
#include <variant>
@@ -85,25 +84,27 @@ static inline TxState TxStateInterpretSerialized(TxStateUnrecognized data)
//! Get TxState serialized block hash. Inverse of TxStateInterpretSerialized.
static inline uint256 TxStateSerializedBlockHash(const TxState& state)
{
- return std::visit(Overloaded{
- [](const TxStateConfirmed& confirmed) { return confirmed.confirmed_block_hash; },
- [](const TxStateConflicted& conflicted) { return conflicted.conflicting_block_hash; },
- [](const TxStateInMempool& in_mempool) { return uint256::ZERO; },
- [](const TxStateInactive& inactive) { return inactive.abandoned ? uint256::ONE : uint256::ZERO; },
- [](const TxStateUnrecognized& unrecognized) { return unrecognized.block_hash; }
- }, state);
+ struct Overloaded {
+ uint256 operator()(const TxStateConfirmed& confirmed) { return confirmed.confirmed_block_hash; }
+ uint256 operator()(const TxStateConflicted& conflicted) { return conflicted.conflicting_block_hash; }
+ uint256 operator()(const TxStateInMempool& in_mempool) { return uint256::ZERO; }
+ uint256 operator()(const TxStateInactive& inactive) { return inactive.abandoned ? uint256::ONE : uint256::ZERO; }
+ uint256 operator()(const TxStateUnrecognized& unrecognized) { return unrecognized.block_hash; }
+ };
+ return std::visit(Overloaded{}, state);
}
//! Get TxState serialized block index. Inverse of TxStateInterpretSerialized.
static inline int TxStateSerializedIndex(const TxState& state)
{
- return std::visit(Overloaded{
- [](const TxStateConfirmed& confirmed) { return confirmed.position_in_block; },
- [](const TxStateConflicted& conflicted) { return -1; },
- [](const TxStateInMempool& in_mempool) { return 0; },
- [](const TxStateInactive& inactive) { return inactive.abandoned ? -1 : 0; },
- [](const TxStateUnrecognized& unrecognized) { return unrecognized.index; }
- }, state);
+ struct Overloaded {
+ int operator()(const TxStateConfirmed& confirmed) { return confirmed.position_in_block; }
+ int operator()(const TxStateConflicted& conflicted) { return -1; }
+ int operator()(const TxStateInMempool& in_mempool) { return 0; }
+ int operator()(const TxStateInactive& inactive) { return inactive.abandoned ? -1 : 0; }
+ int operator()(const TxStateUnrecognized& unrecognized) { return unrecognized.index; }
+ };
+ return std::visit(Overloaded{}, state);
}