Pointed out here: #30739#pullrequestreview-2267576746. Compiling with Clang 18 and Boost 1.74.0 fails:
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.
The same failure does not happen with GCC (12), but may do with later versions: https://sourceware.org/bugzilla/show_bug.cgi?id=31331.
Given our documentation currently claims that Boost 1.73.0
is supported, this should be fixed in some way, the documentation updated to drop support for this version, etc. Although, it looks like part of the fix for the Boost code only landed as of 1.86.0? https://github.com/boostorg/mpl/issues/69 (currently the latest release).