2
0
mirror of https://github.com/boostorg/phoenix.git synced 2026-02-02 21:12:13 +00:00

Merge pull request #29 from Flast/prepare/variadics

variadics: prepare for other components.
This commit is contained in:
Joel de Guzman
2016-05-04 04:58:49 +08:00
122 changed files with 1097 additions and 8411 deletions

View File

@@ -1,118 +1,18 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef PHOENIX_BIND_BIND_FUNCTION_HPP
#define PHOENIX_BIND_BIND_FUNCTION_HPP
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/phoenix/bind/detail/function_ptr.hpp>
#include <boost/phoenix/core/limits.hpp>
namespace boost { namespace phoenix {
template <
typename RT
>
inline
typename detail::expression::function_eval<
detail::function_ptr<0, RT, RT(*)()>
>::type const
bind(RT(*f)())
{
typedef detail::function_ptr<0, RT, RT(*)()> fp_type;
return detail::expression::function_eval<fp_type>::make(fp_type(f));
}
template <
typename RT
, typename T0
, typename A0
>
inline
typename detail::expression::function_eval<
detail::function_ptr<1, RT, RT(*)(T0)>
, A0
>::type const
bind(RT(*f)(T0), A0 const & a0)
{
typedef detail::function_ptr<1, RT, RT(*)(T0)> fp_type;
return detail::expression::function_eval<fp_type, A0>::make(fp_type(f), a0);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/preprocessed/bind_function.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
# include <boost/phoenix/bind/detail/cpp03/bind_function.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_function_" BOOST_PHOENIX_LIMIT_STR ".hpp")
// TODO:
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/bind_function.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#endif
#else
template <
typename RT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, BOOST_PHOENIX_A
>::type const
bind(
RT(*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -1,79 +1,18 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
#define PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/phoenix/core/limits.hpp>
namespace boost { namespace phoenix {
template <typename F>
inline
typename detail::expression::function_eval<F>::type const
bind(F f)
{
return detail::expression::function_eval<F>::make(f);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/preprocessed/bind_function_object.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
# include <boost/phoenix/bind/detail/cpp03/bind_function_object.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_function_object_" BOOST_PHOENIX_LIMIT_STR ".hpp")
// TODO:
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/bind_function_object.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#endif
#else
template <
typename F
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
F
, BOOST_PHOENIX_A
>::type const
bind(F f, BOOST_PHOENIX_A_const_ref_a)
{
return
detail::expression::function_eval<F, BOOST_PHOENIX_A>::make(
f
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -1,256 +1,18 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2014 John Fletcher
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef PHOENIX_BIND_BIND_MEMBER_FUNCTION_HPP
#define PHOENIX_BIND_BIND_MEMBER_FUNCTION_HPP
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_member_function_pointer.hpp>
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/reference.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/phoenix/bind/detail/member_function_ptr.hpp>
#include <boost/phoenix/core/limits.hpp>
namespace boost { namespace phoenix
{
template <typename RT, typename ClassT, typename ClassA>
inline
typename boost::lazy_enable_if<
boost::is_member_function_pointer<RT (ClassT::*)()>,
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)()>
, ClassA >
>::type const
bind(RT(ClassT::*f)(), ClassA const& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
return
detail::expression::function_eval<fp_type, ClassA>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT, typename ClassA>
inline
typename boost::lazy_enable_if<
boost::is_member_function_pointer<RT (ClassT::*)()>,
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
, ClassA >
>::type const
bind(RT(ClassT::*f)() const, ClassA const& obj)
{
typedef
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
fp_type;
return
detail::expression::function_eval<fp_type, ClassA>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)()>
, ClassT
>::type const
bind(RT(ClassT::*f)(), ClassT& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
, ClassT
>::type const
bind(RT(ClassT::*f)() const, ClassT& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)() const> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
>::make(
fp_type(f)
, obj
);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/preprocessed/bind_member_function.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
# include <boost/phoenix/bind/detail/cpp03/bind_member_function.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_member_function_" BOOST_PHOENIX_LIMIT_STR ".hpp")
// TODO:
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/bind_member_function.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#endif
#else
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, typename ClassA
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, ClassA
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, ClassA const & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassA
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, typename ClassA
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
>
, ClassA
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
, ClassA const & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassA
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, ClassT
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, ClassT & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -0,0 +1,113 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/phoenix/bind/detail/function_ptr.hpp>
namespace boost { namespace phoenix {
template <
typename RT
>
inline
typename detail::expression::function_eval<
detail::function_ptr<0, RT, RT(*)()>
>::type const
bind(RT(*f)())
{
typedef detail::function_ptr<0, RT, RT(*)()> fp_type;
return detail::expression::function_eval<fp_type>::make(fp_type(f));
}
template <
typename RT
, typename T0
, typename A0
>
inline
typename detail::expression::function_eval<
detail::function_ptr<1, RT, RT(*)(T0)>
, A0
>::type const
bind(RT(*f)(T0), A0 const & a0)
{
typedef detail::function_ptr<1, RT, RT(*)(T0)> fp_type;
return detail::expression::function_eval<fp_type, A0>::make(fp_type(f), a0);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_function_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/detail/cpp03/bind_function.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#else
template <
typename RT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, BOOST_PHOENIX_A
>::type const
bind(
RT(*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -0,0 +1,74 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
namespace boost { namespace phoenix {
template <typename F>
inline
typename detail::expression::function_eval<F>::type const
bind(F f)
{
return detail::expression::function_eval<F>::make(f);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_function_object_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/detail/cpp03/bind_function_object.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#else
template <
typename F
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
F
, BOOST_PHOENIX_A
>::type const
bind(F f, BOOST_PHOENIX_A_const_ref_a)
{
return
detail::expression::function_eval<F, BOOST_PHOENIX_A>::make(
f
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -0,0 +1,251 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2014 John Fletcher
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_member_function_pointer.hpp>
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/reference.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/phoenix/bind/detail/member_function_ptr.hpp>
namespace boost { namespace phoenix
{
template <typename RT, typename ClassT, typename ClassA>
inline
typename boost::lazy_enable_if<
boost::is_member_function_pointer<RT (ClassT::*)()>,
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)()>
, ClassA >
>::type const
bind(RT(ClassT::*f)(), ClassA const& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
return
detail::expression::function_eval<fp_type, ClassA>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT, typename ClassA>
inline
typename boost::lazy_enable_if<
boost::is_member_function_pointer<RT (ClassT::*)()>,
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
, ClassA >
>::type const
bind(RT(ClassT::*f)() const, ClassA const& obj)
{
typedef
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
fp_type;
return
detail::expression::function_eval<fp_type, ClassA>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)()>
, ClassT
>::type const
bind(RT(ClassT::*f)(), ClassT& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)()> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
>::make(
fp_type(f)
, obj
);
}
template <typename RT, typename ClassT>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<0, RT, RT(ClassT::*)() const>
, ClassT
>::type const
bind(RT(ClassT::*f)() const, ClassT& obj)
{
typedef detail::member_function_ptr<0, RT, RT(ClassT::*)() const> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
>::make(
fp_type(f)
, obj
);
}
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_member_function_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
<boost/phoenix/bind/detail/cpp03/bind_member_function.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}
#else
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, typename ClassA
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, ClassA
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, ClassA const & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassA
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, typename ClassA
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
>
, ClassA
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
, ClassA const & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T)) const
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassA
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
template <
typename RT
, typename ClassT
, BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename T)
, BOOST_PHOENIX_typename_A
>
inline
typename detail::expression::function_eval<
detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
>
, ClassT
, BOOST_PHOENIX_A
>::type const
bind(
RT(ClassT::*f)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
, ClassT & obj
, BOOST_PHOENIX_A_const_ref_a
)
{
typedef detail::member_function_ptr<
BOOST_PHOENIX_ITERATION
, RT
, RT(ClassT::*)(BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, T))
> fp_type;
return
detail::expression::function_eval<
fp_type
, ClassT
, BOOST_PHOENIX_A
>::make(
fp_type(f)
, obj
, BOOST_PHOENIX_a
);
}
#endif

View File

@@ -0,0 +1,146 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/support/iterate.hpp>
namespace boost { namespace phoenix { namespace detail
{
template <int N, typename Dummy = void>
struct function_ptr_impl
{
template <typename RT, typename FP>
struct impl;
};
template <int N, typename RT, typename FP>
struct function_ptr : function_ptr_impl<N>::template impl<RT, FP>
{
typedef typename function_ptr_impl<N>::template impl<RT, FP> base;
function_ptr(FP fp_)
: base(fp_) {}
using base::fp;
bool operator==(function_ptr const & rhs) const
{
return fp == rhs.fp;
}
template <int M, typename RhsRT, typename RhsFP>
bool operator==(function_ptr<M, RhsRT, RhsFP> const & /*rhs*/) const
{
return false;
}
};
template <typename Dummy>
struct function_ptr_impl<0, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
RT operator()() const
{
return fp();
}
FP fp;
};
};
template <typename Dummy>
struct function_ptr_impl<1, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename A>
RT operator()(A &a) const
{
return fp(a);
}
FP fp;
};
};
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_ptr_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/bind/detail/cpp03/function_ptr.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}} // namespace boost::phoenix::detail
///////////////////////////////////////////////////////////////////////////////
//
// Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else // defined(BOOST_PP_IS_ITERATING)
template <typename Dummy>
struct function_ptr_impl<BOOST_PHOENIX_ITERATION, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <BOOST_PHOENIX_typename_A>
RT operator()(BOOST_PHOENIX_A_ref_a) const
{
return fp(BOOST_PHOENIX_a);
}
FP fp;
};
};
#endif // defined(BOOST_PP_IS_ITERATING)

View File

@@ -0,0 +1,144 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/support/iterate.hpp>
namespace boost { namespace phoenix { namespace detail
{
template <int N>
struct member_function_ptr_impl
{
template <typename RT, typename FP>
struct impl;
};
template <int N, typename RT, typename FP>
struct member_function_ptr
: member_function_ptr_impl<N>::template impl<RT, FP>
{
typedef typename member_function_ptr_impl<N>::
template impl<RT, FP> base;
member_function_ptr(FP fp_)
: base(fp_) {}
using base::fp;
bool operator==(member_function_ptr const & rhs) const
{
return fp == rhs.fp;
}
template <int M, typename RhsRT, typename RhsFP>
bool operator==(member_function_ptr<M, RhsRT, RhsFP> const &) const
{
return false;
}
};
template <>
struct member_function_ptr_impl<0>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename Class>
RT operator()(Class& obj) const
{
BOOST_PROTO_USE_GET_POINTER();
typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
return (BOOST_PROTO_GET_POINTER(class_type, obj) ->*fp)();
}
template <typename Class>
RT operator()(Class* obj) const
{
return (obj->*fp)();
}
FP fp;
};
};
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/member_function_ptr_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}} // namespace boost::phoenix::detail
///////////////////////////////////////////////////////////////////////////////
//
// Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else
template <>
struct member_function_ptr_impl<BOOST_PHOENIX_ITERATION>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename Class, BOOST_PHOENIX_typename_A>
RT operator()(Class& obj, BOOST_PHOENIX_A_ref_a) const
{
BOOST_PROTO_USE_GET_POINTER();
typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(BOOST_PHOENIX_a);
}
template <typename Class, BOOST_PHOENIX_typename_A>
RT operator()(Class* obj, BOOST_PHOENIX_A_ref_a) const
{
return (obj->*fp)(BOOST_PHOENIX_a);
}
FP fp;
};
};
#endif // defined(BOOST_PP_IS_ITERATING)

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_BIND_FUNCTION_HPP
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/bind/preprocessed/bind_function_10.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/bind/preprocessed/bind_function_20.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/bind/preprocessed/bind_function_30.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/bind/preprocessed/bind_function_40.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/bind/preprocessed/bind_function_50.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_BIND_FUNCTION_OBJECT_HPP
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/bind/preprocessed/bind_function_object_10.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/bind/preprocessed/bind_function_object_20.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/bind/preprocessed/bind_function_object_30.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/bind/preprocessed/bind_function_object_40.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/bind/preprocessed/bind_function_object_50.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_function_object_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_BIND_MEMBER_FUNCTION_HPP
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/bind/preprocessed/bind_member_function_10.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/bind/preprocessed/bind_member_function_20.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/bind/preprocessed/bind_member_function_30.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/bind/preprocessed/bind_member_function_40.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/bind/preprocessed/bind_member_function_50.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/bind_member_function_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_BIND_DETAIL_FUNCTION_PTR_HPP
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/bind/detail/preprocessed/function_ptr_10.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/bind/detail/preprocessed/function_ptr_20.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/bind/detail/preprocessed/function_ptr_30.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/bind/detail/preprocessed/function_ptr_40.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/bind/detail/preprocessed/function_ptr_50.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/function_ptr_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_BIND_DETAIL_MEMBER_FUNCTION_PTR_HPP
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr_10.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr_20.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr_30.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr_40.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr_50.hpp>
#include <boost/phoenix/bind/detail/cpp03/preprocessed/member_function_ptr_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -1,151 +1,18 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef BOOST_PHOENIX_BIND_DETAIL_FUNCTION_PTR_HPP
#define BOOST_PHOENIX_BIND_DETAIL_FUNCTION_PTR_HPP
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/support/iterate.hpp>
namespace boost { namespace phoenix { namespace detail
{
template <int N, typename Dummy = void>
struct function_ptr_impl
{
template <typename RT, typename FP>
struct impl;
};
template <int N, typename RT, typename FP>
struct function_ptr : function_ptr_impl<N>::template impl<RT, FP>
{
typedef typename function_ptr_impl<N>::template impl<RT, FP> base;
function_ptr(FP fp_)
: base(fp_) {}
using base::fp;
bool operator==(function_ptr const & rhs) const
{
return fp == rhs.fp;
}
template <int M, typename RhsRT, typename RhsFP>
bool operator==(function_ptr<M, RhsRT, RhsFP> const & /*rhs*/) const
{
return false;
}
};
template <typename Dummy>
struct function_ptr_impl<0, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
RT operator()() const
{
return fp();
}
FP fp;
};
};
template <typename Dummy>
struct function_ptr_impl<1, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename A>
RT operator()(A &a) const
{
return fp(a);
}
FP fp;
};
};
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/preprocessed/function_ptr.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
# include <boost/phoenix/bind/detail/cpp03/function_ptr.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_ptr_" BOOST_PHOENIX_LIMIT_STR ".hpp")
// TODO:
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/bind/detail/function_ptr.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}} // namespace boost::phoenix::detail
#endif
///////////////////////////////////////////////////////////////////////////////
//
// Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else // defined(BOOST_PP_IS_ITERATING)
template <typename Dummy>
struct function_ptr_impl<BOOST_PHOENIX_ITERATION, Dummy>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <BOOST_PHOENIX_typename_A>
RT operator()(BOOST_PHOENIX_A_ref_a) const
{
return fp(BOOST_PHOENIX_a);
}
FP fp;
};
};
#endif // defined(BOOST_PP_IS_ITERATING)

View File

@@ -1,149 +1,18 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef BOOST_PHOENIX_BIND_DETAIL_MEMBER_FUNCTION_PTR_HPP
#define BOOST_PHOENIX_BIND_DETAIL_MEMBER_FUNCTION_PTR_HPP
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/support/iterate.hpp>
namespace boost { namespace phoenix { namespace detail
{
template <int N>
struct member_function_ptr_impl
{
template <typename RT, typename FP>
struct impl;
};
template <int N, typename RT, typename FP>
struct member_function_ptr
: member_function_ptr_impl<N>::template impl<RT, FP>
{
typedef typename member_function_ptr_impl<N>::
template impl<RT, FP> base;
member_function_ptr(FP fp_)
: base(fp_) {}
using base::fp;
bool operator==(member_function_ptr const & rhs) const
{
return fp == rhs.fp;
}
template <int M, typename RhsRT, typename RhsFP>
bool operator==(member_function_ptr<M, RhsRT, RhsFP> const &) const
{
return false;
}
};
template <>
struct member_function_ptr_impl<0>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename Class>
RT operator()(Class& obj) const
{
BOOST_PROTO_USE_GET_POINTER();
typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
return (BOOST_PROTO_GET_POINTER(class_type, obj) ->*fp)();
}
template <typename Class>
RT operator()(Class* obj) const
{
return (obj->*fp)();
}
FP fp;
};
};
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/bind/detail/preprocessed/member_function_ptr.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
# include <boost/phoenix/bind/detail/cpp03/member_function_ptr.hpp>
#else
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/member_function_ptr_" BOOST_PHOENIX_LIMIT_STR ".hpp")
// TODO:
#endif
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/bind/detail/member_function_ptr.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
}}} // namespace boost::phoenix::detail
#endif
///////////////////////////////////////////////////////////////////////////////
//
// Preprocessor vertical repetition code
//
///////////////////////////////////////////////////////////////////////////////
#else
template <>
struct member_function_ptr_impl<BOOST_PHOENIX_ITERATION>
{
template <typename RT, typename FP>
struct impl
{
typedef RT result_type;
impl(FP fp_)
: fp(fp_) {}
template <typename Class, BOOST_PHOENIX_typename_A>
RT operator()(Class& obj, BOOST_PHOENIX_A_ref_a) const
{
BOOST_PROTO_USE_GET_POINTER();
typedef typename proto::detail::class_member_traits<FP>::class_type class_type;
return (BOOST_PROTO_GET_POINTER(class_type, obj)->*fp)(BOOST_PHOENIX_a);
}
template <typename Class, BOOST_PHOENIX_typename_A>
RT operator()(Class* obj, BOOST_PHOENIX_A_ref_a) const
{
return (obj->*fp)(BOOST_PHOENIX_a);
}
FP fp;
};
};
#endif // defined(BOOST_PP_IS_ITERATING)

View File

@@ -47,6 +47,12 @@
# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
#endif
# define BOOST_PHOENIX_NO_VARIADIC_BIND
# define BOOST_PHOENIX_NO_VARIADIC_OBJECT
# define BOOST_PHOENIX_NO_VARIADIC_OPERATOR
# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION
# define BOOST_PHOENIX_NO_VARIADIC_SCOPE
#if !defined(BOOST_PHOENIX_ARG_LIMIT)
# define BOOST_PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
#elif (BOOST_PHOENIX_ARG_LIMIT < 5)

View File

@@ -3,7 +3,7 @@
#ifndef BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
#define BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
#include <boost/phoenix/function/detail/preprocessed/function_operator.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator.hpp>
#endif
#else
@@ -31,7 +31,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
<boost/phoenix/function/detail/function_operator.hpp>))
<boost/phoenix/function/detail/cpp03/function_operator.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_FUNCTION_OPERATOR
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/function/detail/preprocessed/function_operator_10.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/function/detail/preprocessed/function_operator_20.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/function/detail/preprocessed/function_operator_30.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/function/detail/preprocessed/function_operator_40.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/function/detail/preprocessed/function_operator_50.hpp>
#include <boost/phoenix/function/detail/cpp03/preprocessed/function_operator_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -10,10 +10,8 @@
#define BOOST_PHOENIX_FUNCTION_FUNCTION_HPP
#include <boost/phoenix/config.hpp>
//#include <boost/phoenix/function/function_handling.hpp>
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
#include <boost/preprocessor/facilities/expand.hpp>
#include <boost/preprocessor/logical/or.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace phoenix
@@ -21,13 +19,17 @@ namespace boost { namespace phoenix
/////////////////////////////////////////////////////////////////////////////
// Functions
/////////////////////////////////////////////////////////////////////////////
namespace expression
{
#if defined(BOOST_PHOENIX_NO_VARIADIC_FUNCTION)
template <typename F, BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_ACTOR_LIMIT)>
struct function
: detail::expression::function_eval<F, BOOST_PHOENIX_A(BOOST_PHOENIX_ACTOR_LIMIT)>
{};
#else
// TODO:
#endif
}
// functor which returns our lazy function call extension
@@ -45,6 +47,7 @@ namespace boost { namespace phoenix
template <typename Sig>
struct result;
#if defined(BOOST_PHOENIX_NO_VARIADIC_FUNCTION)
typename detail::expression::function_eval<F>::type const
operator()() const
{
@@ -52,7 +55,7 @@ namespace boost { namespace phoenix
}
// Bring in the rest
#include <boost/phoenix/function/detail/function_operator.hpp>
#include <boost/phoenix/function/detail/cpp03/function_operator.hpp>
// Solves the result problem for F(X)
template <typename This, typename A0>
@@ -127,6 +130,9 @@ namespace boost { namespace phoenix
typename boost::remove_reference<A5>::type,
typename boost::remove_reference<A6>::type>
{};
#else
// TODO:
#endif
F f;
};

View File

@@ -30,6 +30,7 @@ namespace boost { namespace phoenix
template <typename Sig>
struct result;
#if defined(BOOST_PHOENIX_NO_VARIADIC_OBJECT)
template <typename This, typename A0, typename Context>
struct result<This(A0, Context)>
: detail::result_of::target<A0>
@@ -44,8 +45,10 @@ namespace boost { namespace phoenix
}
// Bring in the rest
#include <boost/phoenix/object/detail/construct_eval.hpp>
#include <boost/phoenix/object/detail/cpp03/construct_eval.hpp>
#else
// TODO:
#endif
};
template <typename Dummy>
@@ -53,6 +56,7 @@ namespace boost { namespace phoenix
: call<construct_eval, Dummy>
{};
#if defined(BOOST_PHOENIX_NO_VARIADIC_OBJECT)
template <typename T>
inline
typename expression::construct<detail::target<T> >::type const
@@ -65,8 +69,10 @@ namespace boost { namespace phoenix
}
// Bring in the rest
#include <boost/phoenix/object/detail/construct.hpp>
#include <boost/phoenix/object/detail/cpp03/construct.hpp>
#else
// TODO:
#endif
}}
#endif

View File

@@ -3,7 +3,7 @@
#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
#include <boost/phoenix/object/detail/preprocessed/construct.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct.hpp>
#endif
#else
@@ -31,7 +31,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/object/detail/construct.hpp>))
<boost/phoenix/object/detail/cpp03/construct.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)

View File

@@ -3,7 +3,7 @@
#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
#include <boost/phoenix/object/detail/preprocessed/construct_eval.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval.hpp>
#endif
#else
@@ -33,7 +33,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/object/detail/construct_eval.hpp>))
<boost/phoenix/object/detail/cpp03/construct_eval.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)

View File

@@ -3,7 +3,7 @@
#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
#include <boost/phoenix/object/detail/preprocessed/new.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new.hpp>
#endif
#else
@@ -31,7 +31,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/object/detail/new.hpp>))
<boost/phoenix/object/detail/cpp03/new.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)

View File

@@ -3,7 +3,7 @@
#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
#include <boost/phoenix/object/detail/preprocessed/new_eval.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval.hpp>
#endif
#else
@@ -33,7 +33,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
<boost/phoenix/object/detail/new_eval.hpp>))
<boost/phoenix/object/detail/cpp03/new_eval.hpp>))
#include BOOST_PHOENIX_ITERATE()
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_CONSTRUCT
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/object/detail/preprocessed/construct_10.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/object/detail/preprocessed/construct_20.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/object/detail/preprocessed/construct_30.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/object/detail/preprocessed/construct_40.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/object/detail/preprocessed/construct_50.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_CONSTRUCT_EVAL
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/construct_eval_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_NEW
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/object/detail/preprocessed/new_10.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/object/detail/preprocessed/new_20.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/object/detail/preprocessed/new_30.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/object/detail/preprocessed/new_40.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/object/detail/preprocessed/new_50.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_NEW_EVAL
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/object/detail/preprocessed/new_eval_10.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/object/detail/preprocessed/new_eval_20.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/object/detail/preprocessed/new_eval_30.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/object/detail/preprocessed/new_eval_40.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/object/detail/preprocessed/new_eval_50.hpp>
#include <boost/phoenix/object/detail/cpp03/preprocessed/new_eval_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -30,6 +30,7 @@ namespace boost { namespace phoenix
template <typename Sig>
struct result;
#if defined(BOOST_PHOENIX_NO_VARIADIC_OBJECT)
template <typename This, typename A0, typename Context>
struct result<This(A0, Context)>
{
@@ -45,7 +46,10 @@ namespace boost { namespace phoenix
}
// Bring in the rest
#include <boost/phoenix/object/detail/new_eval.hpp>
#include <boost/phoenix/object/detail/cpp03/new_eval.hpp>
#else
// TODO:
#endif
};
template <typename Dummy>
@@ -53,6 +57,7 @@ namespace boost { namespace phoenix
: call<new_eval, Dummy>
{};
#if defined(BOOST_PHOENIX_NO_VARIADIC_OBJECT)
template <typename T>
inline
typename expression::new_<detail::target<T> >::type const
@@ -65,7 +70,10 @@ namespace boost { namespace phoenix
}
// Bring in the rest
#include <boost/phoenix/object/detail/new.hpp>
#include <boost/phoenix/object/detail/cpp03/new.hpp>
#else
// TODO:
#endif
}}
#endif

View File

@@ -0,0 +1,78 @@
#if !BOOST_PHOENIX_IS_ITERATING
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval.hpp>
#else
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/mem_fun_ptr_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*==============================================================================
Copyright (c) 2005-2010 Joel de Guzman
Copyright (c) 2010 Thomas Heller
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_MEMBER_EVAL(Z, N, D) \
BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
boost::phoenix::eval(BOOST_PP_CAT(a, N), ctx) \
/**/
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_LIMIT, \
<boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp>)) \
/**/
#include BOOST_PHOENIX_ITERATE()
#undef BOOST_PHOENIX_MEMBER_EVAL
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif
#else // BOOST_PHOENIX_IS_ITERATING
template <typename This, BOOST_PHOENIX_typename_A, typename Context>
struct result<This(BOOST_PHOENIX_A, Context)>
: result<This(BOOST_PHOENIX_A_const_ref, Context)>
{};
template <typename This, BOOST_PHOENIX_typename_A, typename Context>
struct result<This(BOOST_PHOENIX_A_ref, Context)>
: result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>
{};
template <BOOST_PHOENIX_typename_A, typename Context>
typename result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>::type
operator()(
BOOST_PHOENIX_A_const_ref_a
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
BOOST_PP_REPEAT_FROM_TO(
2
, BOOST_PHOENIX_ITERATION
, BOOST_PHOENIX_MEMBER_EVAL
, BOOST_PHOENIX_ITERATION
)
);
}
#endif

View File

@@ -23,7 +23,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_LIMIT, \
<boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp>))
<boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp>))
#include BOOST_PHOENIX_ITERATE()
#undef BOOST_PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD

View File

@@ -1,16 +1,9 @@
#if !BOOST_PHOENIX_IS_ITERATING
#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
#define BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
#include <boost/phoenix/core/limits.hpp>
#include <boost/phoenix/support/iterate.hpp>
#include <boost/phoenix/core/expression.hpp>
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen.hpp>
#else
@@ -56,7 +49,7 @@ namespace boost { namespace phoenix
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_MEMBER_LIMIT, \
<boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>)) \
<boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp>)) \
#include BOOST_PHOENIX_ITERATE()
@@ -97,8 +90,6 @@ namespace boost { namespace phoenix
#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
#endif
#else
template <BOOST_PHOENIX_typename_A>
typename phoenix::expression::mem_fun_ptr<

View File

@@ -0,0 +1,25 @@
/*==============================================================================
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !defined(BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_EVAL)
#define BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_EVAL
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif
#endif

View File

@@ -0,0 +1,25 @@
/*==============================================================================
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !defined(BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_EVAL_RESULT_OF)
#define BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_EVAL_RESULT_OF
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_eval_result_of_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif
#endif

View File

@@ -9,15 +9,15 @@
#define BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_GEN
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_10.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_20.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_30.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_40.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_50.hpp>
#include <boost/phoenix/operator/detail/cpp03/preprocessed/mem_fun_ptr_gen_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif

View File

@@ -1,5 +1,11 @@
/*==============================================================================
Copyright (c) 2005-2010 Joel de Guzman
Copyright (c) 2010 Thomas Heller
Copyright (c) 2016 Kohei Takahashi
#if !BOOST_PHOENIX_IS_ITERATING
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_HPP
#define BOOST_PHOENIX_OPERATOR_MEMBER_HPP
@@ -9,32 +15,15 @@
#include <boost/phoenix/core/domain.hpp>
#include <boost/phoenix/core/meta_grammar.hpp>
#include <boost/phoenix/core/call.hpp>
#include <boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>
#include <boost/phoenix/support/iterate.hpp>
#include <boost/phoenix/core/expression.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_member_function_pointer.hpp>
#include <boost/proto/operators.hpp>
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/operator/preprocessed/member.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_OPERATOR)
#include <boost/phoenix/support/iterate.hpp>
#include <boost/phoenix/operator/detail/cpp03/mem_fun_ptr_gen.hpp>
#else
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/member_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*==============================================================================
Copyright (c) 2005-2010 Joel de Guzman
Copyright (c) 2010 Thomas Heller
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
// TODO
#endif
#include <boost/phoenix/operator/detail/define_operator.hpp>
@@ -68,7 +57,11 @@ namespace boost { namespace phoenix
>
struct mem_fun_ptr_eval;
#include <boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp>
#if defined(BOOST_PHOENIX_NO_VARIADIC_OPERATOR)
#include <boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval_result_of.hpp>
#else
// TODO
#endif
}
struct mem_fun_ptr_eval
@@ -76,17 +69,11 @@ namespace boost { namespace phoenix
template<typename Sig>
struct result;
#define BOOST_PHOENIX_MEMBER_EVAL(Z, N, D) \
BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
boost::phoenix::eval(BOOST_PP_CAT(a, N), ctx) \
/**/
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (2, BOOST_PHOENIX_LIMIT, \
<boost/phoenix/operator/member.hpp>)) \
/**/
#include BOOST_PHOENIX_ITERATE()
#undef BOOST_PHOENIX_MEMBER_EVAL
#if defined(BOOST_PHOENIX_NO_VARIADIC_OPERATOR)
#include <boost/phoenix/operator/detail/cpp03/mem_fun_ptr_eval.hpp>
#else
// TODO
#endif
};
template <typename Dummy>
@@ -97,46 +84,4 @@ namespace boost { namespace phoenix
#include <boost/phoenix/operator/detail/undef_operator.hpp>
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
#endif
#else // BOOST_PHOENIX_IS_ITERATING
template <typename This, BOOST_PHOENIX_typename_A, typename Context>
struct result<This(BOOST_PHOENIX_A, Context)>
: result<This(BOOST_PHOENIX_A_const_ref, Context)>
{};
template <typename This, BOOST_PHOENIX_typename_A, typename Context>
struct result<This(BOOST_PHOENIX_A_ref, Context)>
: result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>
{};
template <BOOST_PHOENIX_typename_A, typename Context>
typename result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>::type
operator()(
BOOST_PHOENIX_A_const_ref_a
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
BOOST_PP_REPEAT_FROM_TO(
2
, BOOST_PHOENIX_ITERATION
, BOOST_PHOENIX_MEMBER_EVAL
, BOOST_PHOENIX_ITERATION
)
);
}
#endif

View File

@@ -1,25 +0,0 @@
/*==============================================================================
Copyright (c) 2011 Hartmut Kaiser
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !defined(BOOST_PHOENIX_PREPROCESSED_MEMBER)
#define BOOST_PHOENIX_PREPROCESSED_MEMBER
#if BOOST_PHOENIX_LIMIT <= 10
#include <boost/phoenix/operator/preprocessed/member_10.hpp>
#elif BOOST_PHOENIX_LIMIT <= 20
#include <boost/phoenix/operator/preprocessed/member_20.hpp>
#elif BOOST_PHOENIX_LIMIT <= 30
#include <boost/phoenix/operator/preprocessed/member_30.hpp>
#elif BOOST_PHOENIX_LIMIT <= 40
#include <boost/phoenix/operator/preprocessed/member_40.hpp>
#elif BOOST_PHOENIX_LIMIT <= 50
#include <boost/phoenix/operator/preprocessed/member_50.hpp>
#else
#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
#endif
#endif

View File

@@ -1,494 +0,0 @@
/*==============================================================================
Copyright (c) 2005-2010 Joel de Guzman
Copyright (c) 2010 Thomas Heller
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
namespace boost { namespace phoenix
{
namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag:: mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression:: mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag:: mem_ptr, Dummy> : enable_rule<rule:: mem_ptr, Dummy> {}; namespace functional { typedef proto::functional::make_expr<proto::tag:: mem_ptr> make_mem_ptr; } namespace result_of { template <typename Lhs, typename Rhs> struct make_mem_ptr : boost::result_of< functional:: make_mem_ptr( Lhs, Rhs ) > {}; } template <typename Rhs, typename Lhs> inline typename result_of::make_mem_ptr<Rhs, Lhs>::type make_mem_ptr(Lhs const & lhs, Rhs const & rhs) { return functional::make_mem_ptr()(lhs, rhs); }
template<>
struct phoenix_generator::case_<proto::tag::mem_ptr>
: proto::or_<
proto::when<
proto::and_<
proto::mem_ptr<meta_grammar, proto::terminal<proto::_> >
, proto::if_<is_member_function_pointer<boost::remove_reference<proto::call<proto::_value(proto::_right)> > >()>
>
, proto::call<detail::make_mem_fun_ptr_gen(proto::_left, proto::call<proto::_value(proto::_right)>)>
>
, proto::otherwise<
proto::call<proto::pod_generator<actor>(proto::_)>
>
>
{};
namespace result_of
{
template <
typename Context
, typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void
, typename Dummy = void
>
struct mem_fun_ptr_eval;
template <typename Context, typename A0 , typename A1>
struct mem_fun_ptr_eval<Context, A0 , A1>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1;
typedef
typename boost::result_of<
child1(
child1
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2;
typedef
typename boost::result_of<
child1(
child1 , child2
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9
)
>::type
type;
};
}
struct mem_fun_ptr_eval
{
template<typename Sig>
struct result;
template <typename This, typename A0 , typename A1, typename Context>
struct result<This(A0 , A1, Context)>
: result<This(A0 const& , A1 const&, Context)>
{};
template <typename This, typename A0 , typename A1, typename Context>
struct result<This(A0 & , A1 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1>
{};
template <typename A0 , typename A1, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
operator()(
A0 const& a0 , A1 const& a1
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
);
}
template <typename This, typename A0 , typename A1 , typename A2, typename Context>
struct result<This(A0 , A1 , A2, Context)>
: result<This(A0 const& , A1 const& , A2 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2, typename Context>
struct result<This(A0 & , A1 & , A2 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
{};
template <typename A0 , typename A1 , typename A2, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context>
struct result<This(A0 , A1 , A2 , A3, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
{};
template <typename A0 , typename A1 , typename A2 , typename A3, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx)
);
}
};
template <typename Dummy>
struct default_actions::when<rule::mem_fun_ptr, Dummy>
: call<mem_fun_ptr_eval>
{};
}}

View File

@@ -1,994 +0,0 @@
/*==============================================================================
Copyright (c) 2005-2010 Joel de Guzman
Copyright (c) 2010 Thomas Heller
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
namespace boost { namespace phoenix
{
namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag:: mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression:: mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag:: mem_ptr, Dummy> : enable_rule<rule:: mem_ptr, Dummy> {}; namespace functional { typedef proto::functional::make_expr<proto::tag:: mem_ptr> make_mem_ptr; } namespace result_of { template <typename Lhs, typename Rhs> struct make_mem_ptr : boost::result_of< functional:: make_mem_ptr( Lhs, Rhs ) > {}; } template <typename Rhs, typename Lhs> inline typename result_of::make_mem_ptr<Rhs, Lhs>::type make_mem_ptr(Lhs const & lhs, Rhs const & rhs) { return functional::make_mem_ptr()(lhs, rhs); }
template<>
struct phoenix_generator::case_<proto::tag::mem_ptr>
: proto::or_<
proto::when<
proto::and_<
proto::mem_ptr<meta_grammar, proto::terminal<proto::_> >
, proto::if_<is_member_function_pointer<boost::remove_reference<proto::call<proto::_value(proto::_right)> > >()>
>
, proto::call<detail::make_mem_fun_ptr_gen(proto::_left, proto::call<proto::_value(proto::_right)>)>
>
, proto::otherwise<
proto::call<proto::pod_generator<actor>(proto::_)>
>
>
{};
namespace result_of
{
template <
typename Context
, typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void
, typename Dummy = void
>
struct mem_fun_ptr_eval;
template <typename Context, typename A0 , typename A1>
struct mem_fun_ptr_eval<Context, A0 , A1>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1;
typedef
typename boost::result_of<
child1(
child1
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2;
typedef
typename boost::result_of<
child1(
child1 , child2
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14; typedef typename evaluator::impl< A15 , Context , proto::empty_env >::result_type child15;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14 , child15
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14; typedef typename evaluator::impl< A15 , Context , proto::empty_env >::result_type child15; typedef typename evaluator::impl< A16 , Context , proto::empty_env >::result_type child16;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14 , child15 , child16
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14; typedef typename evaluator::impl< A15 , Context , proto::empty_env >::result_type child15; typedef typename evaluator::impl< A16 , Context , proto::empty_env >::result_type child16; typedef typename evaluator::impl< A17 , Context , proto::empty_env >::result_type child17;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14 , child15 , child16 , child17
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14; typedef typename evaluator::impl< A15 , Context , proto::empty_env >::result_type child15; typedef typename evaluator::impl< A16 , Context , proto::empty_env >::result_type child16; typedef typename evaluator::impl< A17 , Context , proto::empty_env >::result_type child17; typedef typename evaluator::impl< A18 , Context , proto::empty_env >::result_type child18;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14 , child15 , child16 , child17 , child18
)
>::type
type;
};
template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
{
typedef typename evaluator::impl< A0 , Context , proto::empty_env >::result_type child0; typedef typename evaluator::impl< A1 , Context , proto::empty_env >::result_type child1; typedef typename evaluator::impl< A2 , Context , proto::empty_env >::result_type child2; typedef typename evaluator::impl< A3 , Context , proto::empty_env >::result_type child3; typedef typename evaluator::impl< A4 , Context , proto::empty_env >::result_type child4; typedef typename evaluator::impl< A5 , Context , proto::empty_env >::result_type child5; typedef typename evaluator::impl< A6 , Context , proto::empty_env >::result_type child6; typedef typename evaluator::impl< A7 , Context , proto::empty_env >::result_type child7; typedef typename evaluator::impl< A8 , Context , proto::empty_env >::result_type child8; typedef typename evaluator::impl< A9 , Context , proto::empty_env >::result_type child9; typedef typename evaluator::impl< A10 , Context , proto::empty_env >::result_type child10; typedef typename evaluator::impl< A11 , Context , proto::empty_env >::result_type child11; typedef typename evaluator::impl< A12 , Context , proto::empty_env >::result_type child12; typedef typename evaluator::impl< A13 , Context , proto::empty_env >::result_type child13; typedef typename evaluator::impl< A14 , Context , proto::empty_env >::result_type child14; typedef typename evaluator::impl< A15 , Context , proto::empty_env >::result_type child15; typedef typename evaluator::impl< A16 , Context , proto::empty_env >::result_type child16; typedef typename evaluator::impl< A17 , Context , proto::empty_env >::result_type child17; typedef typename evaluator::impl< A18 , Context , proto::empty_env >::result_type child18; typedef typename evaluator::impl< A19 , Context , proto::empty_env >::result_type child19;
typedef
typename boost::result_of<
child1(
child1 , child2 , child3 , child4 , child5 , child6 , child7 , child8 , child9 , child10 , child11 , child12 , child13 , child14 , child15 , child16 , child17 , child18 , child19
)
>::type
type;
};
}
struct mem_fun_ptr_eval
{
template<typename Sig>
struct result;
template <typename This, typename A0 , typename A1, typename Context>
struct result<This(A0 , A1, Context)>
: result<This(A0 const& , A1 const&, Context)>
{};
template <typename This, typename A0 , typename A1, typename Context>
struct result<This(A0 & , A1 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1>
{};
template <typename A0 , typename A1, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
operator()(
A0 const& a0 , A1 const& a1
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
);
}
template <typename This, typename A0 , typename A1 , typename A2, typename Context>
struct result<This(A0 , A1 , A2, Context)>
: result<This(A0 const& , A1 const& , A2 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2, typename Context>
struct result<This(A0 & , A1 & , A2 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
{};
template <typename A0 , typename A1 , typename A2, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context>
struct result<This(A0 , A1 , A2 , A3, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
{};
template <typename A0 , typename A1 , typename A2 , typename A3, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx) , boost::phoenix::eval(a15, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx) , boost::phoenix::eval(a15, ctx) , boost::phoenix::eval(a16, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx) , boost::phoenix::eval(a15, ctx) , boost::phoenix::eval(a16, ctx) , boost::phoenix::eval(a17, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx) , boost::phoenix::eval(a15, ctx) , boost::phoenix::eval(a16, ctx) , boost::phoenix::eval(a17, ctx) , boost::phoenix::eval(a18, ctx)
);
}
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19, typename Context>
struct result<This(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19, Context)>
: result<This(A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&, Context)>
{};
template <typename This, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19, typename Context>
struct result<This(A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &, Context)>
: result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
{};
template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19, typename Context>
typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>::type
operator()(
A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
, Context const & ctx
) const
{
return
(
get_pointer(boost::phoenix::eval(a0, ctx))
->*boost::phoenix::eval(a1, ctx)
)(
boost::phoenix::eval(a2, ctx) , boost::phoenix::eval(a3, ctx) , boost::phoenix::eval(a4, ctx) , boost::phoenix::eval(a5, ctx) , boost::phoenix::eval(a6, ctx) , boost::phoenix::eval(a7, ctx) , boost::phoenix::eval(a8, ctx) , boost::phoenix::eval(a9, ctx) , boost::phoenix::eval(a10, ctx) , boost::phoenix::eval(a11, ctx) , boost::phoenix::eval(a12, ctx) , boost::phoenix::eval(a13, ctx) , boost::phoenix::eval(a14, ctx) , boost::phoenix::eval(a15, ctx) , boost::phoenix::eval(a16, ctx) , boost::phoenix::eval(a17, ctx) , boost::phoenix::eval(a18, ctx) , boost::phoenix::eval(a19, ctx)
);
}
};
template <typename Dummy>
struct default_actions::when<rule::mem_fun_ptr, Dummy>
: call<mem_fun_ptr_eval>
{};
}}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
#include <boost/phoenix/support/iterate.hpp>
#include <boost/phoenix/scope/detail/preprocessed/dynamic.hpp>
#include <boost/phoenix/scope/detail/cpp03/preprocessed/dynamic.hpp>
#endif
#else
@@ -44,7 +44,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_DYNAMIC_LIMIT, \
<boost/phoenix/scope/detail/dynamic.hpp>))
<boost/phoenix/scope/detail/cpp03/dynamic.hpp>))
#include BOOST_PHOENIX_ITERATE()
#undef BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER

View File

@@ -0,0 +1,39 @@
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
#include <boost/phoenix/support/iterate.hpp>
#include <boost/phoenix/scope/detail/cpp03/preprocessed/lambda.hpp>
#else
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/lambda_" BOOST_PHOENIX_LIMIT_STR ".hpp")
#endif
/*==============================================================================
Copyright (c) 2001-2010 Joel de Guzman
Copyright (c) 2004 Daniel Wallin
Copyright (c) 2010 Thomas Heller
Copyright (c) 2016 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(preserve: 1)
#endif
#define BOOST_PHOENIX_SCOPE_ACTOR_GEN_NAME lambda_actor_gen
#define BOOST_PHOENIX_SCOPE_ACTOR_GEN_FUNCTION operator()
#define BOOST_PHOENIX_SCOPE_ACTOR_GEN_CONST const
#include <boost/phoenix/scope/detail/cpp03/local_gen.hpp>
#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_NAME
#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_FUNCTION
#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_CONST
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
#pragma wave option(output: null)
#endif
#endif

View File

@@ -35,7 +35,7 @@
#define BOOST_PHOENIX_ITERATION_PARAMS \
(3, (1, BOOST_PHOENIX_LOCAL_LIMIT, \
<boost/phoenix/scope/detail/local_gen.hpp>))
<boost/phoenix/scope/detail/cpp03/local_gen.hpp>))
#include BOOST_PHOENIX_ITERATE()
#else

Some files were not shown because too many files have changed in this diff Show More