1 #if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
3 #include <boost/phoenix/core/detail/cpp03/preprocessed/function_eval.hpp>
7 #if !BOOST_PHOENIX_IS_ITERATING
9 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
10 #pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
12 /*=============================================================================
13 Copyright (c) 2001-2007 Joel de Guzman
15 Distributed under the Boost Software License, Version 1.0. (See accompanying
16 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
17 ==============================================================================*/
19 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
20 #pragma wave option(preserve: 1)
23 #define PHOENIX_GET_ARG(z, n, data) \
25 typename boost::add_reference< \
26 typename boost::add_const< \
27 typename boost::result_of< \
28 boost::phoenix::evaluator( \
37 #define PHOENIX_EVAL_ARG(z, n, data) \
38 help_rvalue_deduction(boost::phoenix::eval(BOOST_PP_CAT(a, n), ctx))
40 #define M0(z, n, data) \
41 typename proto::detail::uncvref<BOOST_PP_CAT(a, n)>::type
43 #define BOOST_PHOENIX_ITERATION_PARAMS \
44 (3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
45 <boost/phoenix/core/detail/cpp03/function_eval.hpp>))
46 #include BOOST_PHOENIX_ITERATE()
48 #undef PHOENIX_GET_ARG
49 #undef PHOENIX_EVAL_ARG
52 #if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
53 #pragma wave option(output: null)
60 , BOOST_PHOENIX_typename_A
63 struct result<This(F, BOOST_PHOENIX_A, Context)>
67 typename boost::result_of<evaluator(F, Context)>::type
71 BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, PHOENIX_GET_ARG, _)
74 boost::result_of<fn(BOOST_PHOENIX_a)>::type
81 , BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
97 template <typename F, BOOST_PHOENIX_typename_A, typename Context>
101 , BOOST_PHOENIX_A_ref
105 operator()(F const & f, BOOST_PHOENIX_A_ref_a, Context const & ctx) const
107 return boost::phoenix::eval(f, ctx)(BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, PHOENIX_EVAL_ARG, _));
110 template <typename F, BOOST_PHOENIX_typename_A, typename Context>
114 , BOOST_PHOENIX_A_ref
118 operator()(F & f, BOOST_PHOENIX_A_ref_a, Context const & ctx) const
120 return boost::phoenix::eval(f, ctx)(BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, PHOENIX_EVAL_ARG, _));