--- boost_1_41_0/boost/utility/detail/result_of_iterate.hpp 2010-04-01 14:07:55.000000000 +0100 +++ boost_1_41_0/boost/utility/detail/result_of_iterate.hpp 2010-04-01 14:24:39.000000000 +0100 @@ -24,6 +24,23 @@ : boost::detail::result_of_impl::value)> {}; #endif +namespace detail { + +template +struct make_tuple_from_function_args +{ + #define BOOST_PP_IDENTITY_REPEAT_TEXT(z, n, t) t + typedef tuples::cons + BOOST_PP_REPEAT(BOOST_PP_ITERATION(), BOOST_PP_IDENTITY_REPEAT_TEXT, >) + tuple; + #undef BOOST_PP_IDENTITY_REPEAT_TEXT +}; + +} + #undef BOOST_RESULT_OF_ARGS #if BOOST_PP_ITERATION() >= 1 --- boost_1_41_0/boost/utility/result_of.hpp 2010-04-01 14:04:18.000000000 +0100 +++ boost_1_41_0/boost/utility/result_of.hpp 2010-04-01 14:30:09.000000000 +0100 @@ -26,11 +26,26 @@ template struct result_of; +namespace tuples { template struct cons; struct null_type; } + #if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type) +// This sig template determination may not work on all compilers. +// I have tried only with GCC 4 and VC9. +template