When I try to build boost thread, the compile fails building thread.cpp on the command:
In file included from libs/thread/src/pthread/thread.cpp:19:
In file included from ./boost/thread/future.hpp:22:
In file included from ./boost/thread/detail/invoker.hpp:28:
In file included from ./boost/utility/result_of.hpp:202:
./boost/preprocessor/iteration/detail/iter/forward1.hpp:47:18: fatal error: 'boost/utility/detail/result_of_iterate.hpp' file not found
./boost/preprocessor/iteration/detail/iter/forward1.hpp:27:56: note: expanded from macro 'BOOST_PP_FILENAME_1'
# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
^
./boost/utility/result_of.hpp:201:68: note: expanded from macro 'BOOST_PP_ITERATION_PARAMS_1'
#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,<boost/utility/detail/result_of_iterate.hpp>))
^
./boost/preprocessor/array/elem.hpp:23:114: note: expanded from macro 'BOOST_PP_ARRAY_ELEM'
# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
^
note: (skipping 10 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
./boost/preprocessor/tuple/rem.hpp:23:31: note: expanded from macro 'BOOST_PP_REM'
# define BOOST_PP_REM(...) __VA_ARGS__
^
./boost/preprocessor/variadic/elem.hpp:26:89: note: expanded from macro 'BOOST_PP_VARIADIC_ELEM'
# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
^
./boost/preprocessor/variadic/elem.hpp:30:55: note: expanded from macro 'BOOST_PP_VARIADIC_ELEM_2'
# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
Sure enough, boost/utility/detail/result_of_iterate.hpp doesn't exist from the base of the project. It does if you start at libs/utlility/include/boost/utility/detail, though. Most of what's in boost/ is a symlink to directories in libs (I guess this is how modulization works), and if boost/utility were a symlink libs/utility/include/boost/utility, I think this code in forward1.hpp would work. But boost/utility isn't a symlink - boost/utility is an actual directory with a few symlinks to files in it, but none of them leads to result_of_iterate.hpp.