There seems to be an issue compiling the chainstatemanager_rebalance_caches
test case with some specific versions of Boost in combination with some specific versions of Clang. For example, Boost 1.74 may fail in combination with Clang 18. [1]
The error stems from a mixed-type closeness comparison. Given that the comparison is using floating point, and isn’t meant to be exact, work around the compile error by ensuring both sides of the comparison are using the same type (double
).
This also allows to drop a previous workaround.
[1] Error:
0In file included from /usr/include/boost/mpl/integral_c.hpp:32:
1/usr/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for the enumeration type 'udt_builtin_mixture_enum' [-Wenum-constexpr-conversion]
2 73 | typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
3 | ^
4/usr/include/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
5 24 | # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
6 | ^
7In file included from ../../../src/test/validation_chainstatemanager_tests.cpp:8:
8In file included from ../../../src/node/chainstatemanager_args.h:9:
9In file included from ../../../src/validation.h:28:
10In file included from ../../../src/txmempool.h:26:
11In file included from /usr/include/boost/multi_index/hashed_index.hpp:38:
12In file included from /usr/include/boost/multi_index/detail/node_handle.hpp:22:
13In file included from /usr/include/boost/multi_index_container_fwd.hpp:18:
14In file included from /usr/include/boost/multi_index/indexed_by.hpp:17:
15In file included from /usr/include/boost/mpl/vector.hpp:36:
16In file included from /usr/include/boost/mpl/vector/vector20.hpp:18:
17In file included from /usr/include/boost/mpl/vector/vector10.hpp:18:
18In file included from /usr/include/boost/mpl/vector/vector0.hpp:24:
19In file included from /usr/include/boost/mpl/vector/aux_/clear.hpp:18:
20In file included from /usr/include/boost/mpl/vector/aux_/vector0.hpp:22:
21In file included from /usr/include/boost/mpl/vector/aux_/iterator.hpp:19:
22In file included from /usr/include/boost/mpl/plus.hpp:19:
23In file included from /usr/include/boost/mpl/aux_/arithmetic_op.hpp:17:
24In file included from /usr/include/boost/mpl/integral_c.hpp:32:
25/usr/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for the enumeration type 'int_float_mixture_enum' [-Wenum-constexpr-conversion]
26/usr/include/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
27 24 | # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
28 | ^
292 errors generated.