From a2046a5aa6019cb952577f75b40ae31ef6aa6df1 Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Mon, 11 Jun 2007 21:09:44 +0000 Subject: [PATCH] fixes for msvc related to fusion result_of compatibility [SVN r37971] --- .../adapter/detail/Attic/nullary_call_base.hpp | 11 ++++++++--- .../functional/adapter/detail/nullary_call_base.hpp | 11 ++++++++--- .../fusion/functional/adapter/unfused_generic.hpp | 8 ++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp index bdba4730..c089a697 100644 --- a/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/Attic/nullary_call_base.hpp @@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail { struct reserved { }; + template + struct get_result_spec + { + typedef typename remove_const::type>::type function; + typedef typename function::template result type; + }; + template ::type - ::template result< - typename remove_const::type>::type(fusion::vector0)> >::value> + typename get_result_spec::type>::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } diff --git a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp index bdba4730..c089a697 100644 --- a/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp +++ b/include/boost/fusion/functional/adapter/detail/nullary_call_base.hpp @@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail { struct reserved { }; + template + struct get_result_spec + { + typedef typename remove_const::type>::type function; + typedef typename function::template result type; + }; + template ::type - ::template result< - typename remove_const::type>::type(fusion::vector0)> >::value> + typename get_result_spec::type>::value> struct nullary_call_base { template inline void operator()(T reserved::*) const { } diff --git a/include/boost/fusion/functional/adapter/unfused_generic.hpp b/include/boost/fusion/functional/adapter/unfused_generic.hpp index 60624076..00c60c2c 100644 --- a/include/boost/fusion/functional/adapter/unfused_generic.hpp +++ b/include/boost/fusion/functional/adapter/unfused_generic.hpp @@ -126,8 +126,8 @@ namespace boost { #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) template - inline typename function::template result< - BOOST_PP_CAT(fusion::vector,N) >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const { BOOST_PP_CAT(fusion::vector,N) @@ -135,8 +135,8 @@ namespace boost { return this->fnc_transformed(arg); } template - inline typename function::template result< - BOOST_PP_CAT(fusion::vector,N) >::type + inline typename function::template result)>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) { BOOST_PP_CAT(fusion::vector,N)