
AMDG Sean Huang wrote:
The following code generates a compile error with VC8+SP1:
************************************************************************** #include <boost/lambda/lambda.hpp> #if 1 // compiles when set to 0 # include <boost/utility/result_of.hpp> # include <boost/range/functions.hpp> #else # include <boost/range/functions.hpp> # include <boost/utility/result_of.hpp> #endif
#include <boost/function.hpp> #include <boost/type_traits/is_same.hpp>
typedef boost::function< int ( void ) > FuncType;
BOOST_STATIC_ASSERT( ( boost::is_same< boost::result_of< FuncType ()
::type, int >::value ) );
I've traced the problem as far back as I can: #include <boost/mpl/has_xxx.hpp> namespace boost { namespace lambda { namespace detail { BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type); } } } namespace boost { namespace mpl { namespace aux { BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false) }}} #include <boost/mpl/assert.hpp> struct with_result_type { typedef int result_type; }; BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type); BOOST_MPL_ASSERT((has_result_type<with_result_type>)); In Christ, Steven Watanabe