fixes for msvc related to fusion result_of compatibility

[SVN r37971]
This commit is contained in:
Dan Marsden
2007-06-11 21:09:44 +00:00
parent 0fcbc5b467
commit a2046a5aa6
3 changed files with 20 additions and 10 deletions

View File

@@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail
{
struct reserved { };
template<typename Function>
struct get_result_spec
{
typedef typename remove_const<typename remove_reference<Function>::type>::type function;
typedef typename function::template result<function(fusion::vector0)> type;
};
template <class Derived, class Function, bool Enable = detail::has_type<
typename remove_reference<Function>::type
::template result<
typename remove_const<typename remove_reference<Function>::type>::type(fusion::vector0)> >::value>
typename get_result_spec<Function>::type>::value>
struct nullary_call_base
{
template <typename T> inline void operator()(T reserved::*) const { }

View File

@@ -23,10 +23,15 @@ namespace boost { namespace fusion { namespace detail
{
struct reserved { };
template<typename Function>
struct get_result_spec
{
typedef typename remove_const<typename remove_reference<Function>::type>::type function;
typedef typename function::template result<function(fusion::vector0)> type;
};
template <class Derived, class Function, bool Enable = detail::has_type<
typename remove_reference<Function>::type
::template result<
typename remove_const<typename remove_reference<Function>::type>::type(fusion::vector0)> >::value>
typename get_result_spec<Function>::type>::value>
struct nullary_call_base
{
template <typename T> inline void operator()(T reserved::*) const { }