381 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			381 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/*==============================================================================
							 | 
						||
| 
								 | 
							
								    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)
							 | 
						||
| 
								 | 
							
								==============================================================================*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_PHOENIX_SCOPE_LAMBDA_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_PHOENIX_SCOPE_LAMBDA_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/core/limits.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/fusion/include/transform.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/fusion/include/as_vector.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/mpl/int.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/core/call.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/core/expression.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/core/meta_grammar.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/scope/local_variable.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/scope/scoped_environment.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOST_PHOENIX_DEFINE_EXPRESSION(
							 | 
						||
| 
								 | 
							
								    (boost)(phoenix)(lambda_actor)
							 | 
						||
| 
								 | 
							
								  , (proto::terminal<proto::_>) // Locals
							 | 
						||
| 
								 | 
							
								    (proto::terminal<proto::_>) // Map
							 | 
						||
| 
								 | 
							
								    (meta_grammar)              // Lambda
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								BOOST_PHOENIX_DEFINE_EXPRESSION(
							 | 
						||
| 
								 | 
							
								    (boost)(phoenix)(lambda)
							 | 
						||
| 
								 | 
							
								  , (proto::terminal<proto::_>) // OuterEnv 
							 | 
						||
| 
								 | 
							
								    (proto::terminal<proto::_>) // Locals
							 | 
						||
| 
								 | 
							
								    (proto::terminal<proto::_>) // Map
							 | 
						||
| 
								 | 
							
								    (meta_grammar)              // Lambda
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost { namespace phoenix
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    struct lambda_eval
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        BOOST_PROTO_CALLABLE()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <typename Sig>
							 | 
						||
| 
								 | 
							
								        struct result;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <
							 | 
						||
| 
								 | 
							
								            typename This
							 | 
						||
| 
								 | 
							
								          , typename OuterEnv
							 | 
						||
| 
								 | 
							
								          , typename Locals
							 | 
						||
| 
								 | 
							
								          , typename Map
							 | 
						||
| 
								 | 
							
								          , typename Lambda
							 | 
						||
| 
								 | 
							
								          , typename Context
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								        struct result<This(OuterEnv, Locals, Map, Lambda, Context)>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        OuterEnv
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                outer_env_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        Locals
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                locals_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        Map
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                map_type;
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::env<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                env_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    typedef
							 | 
						||
| 
								 | 
							
								                            typename result_of::eval<
							 | 
						||
| 
								 | 
							
								                                Lambda
							 | 
						||
| 
								 | 
							
								                                     , typename result_of::context<
							 | 
						||
| 
								 | 
							
								                                       scoped_environment<
							 | 
						||
| 
								 | 
							
								                                              env_type
							 | 
						||
| 
								 | 
							
								                                            , outer_env_type
							 | 
						||
| 
								 | 
							
								                                            , locals_type
							 | 
						||
| 
								 | 
							
								                                            , map_type
							 | 
						||
| 
								 | 
							
								                                            >
							 | 
						||
| 
								 | 
							
								                          , typename result_of::actions<
							 | 
						||
| 
								 | 
							
								                                Context
							 | 
						||
| 
								 | 
							
								                                            >::type
							 | 
						||
| 
								 | 
							
								                                       >::type
							 | 
						||
| 
								 | 
							
								                                    >::type
							 | 
						||
| 
								 | 
							
								                             type;
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <typename OuterEnv, typename Locals, typename Map, typename Lambda, typename Context>
							 | 
						||
| 
								 | 
							
								        typename result<lambda_eval(OuterEnv const &, Locals const &, Map const &, Lambda const &, Context const &)>::type
							 | 
						||
| 
								 | 
							
								        operator()(OuterEnv const & outer_env, Locals const & locals, Map const &, Lambda const & lambda, Context const & ctx) const
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        OuterEnv
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                outer_env_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        Locals
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                locals_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<
							 | 
						||
| 
								 | 
							
								                        Map
							 | 
						||
| 
								 | 
							
								                    >::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                map_type;
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::env<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                env_type;
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								                scoped_environment<
							 | 
						||
| 
								 | 
							
								                env_type
							 | 
						||
| 
								 | 
							
								              , outer_env_type
							 | 
						||
| 
								 | 
							
								              , locals_type
							 | 
						||
| 
								 | 
							
								              , map_type
							 | 
						||
| 
								 | 
							
								            >
							 | 
						||
| 
								 | 
							
								            env(phoenix::env(ctx), proto::value(outer_env), proto::value(locals));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return eval(lambda, phoenix::context(env, phoenix::actions(ctx)));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <typename Dummy>
							 | 
						||
| 
								 | 
							
								    struct default_actions::when<rule::lambda, Dummy>
							 | 
						||
| 
								 | 
							
								        : call<lambda_eval, Dummy>
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <typename Dummy>
							 | 
						||
| 
								 | 
							
								    struct is_nullary::when<rule::lambda, Dummy>
							 | 
						||
| 
								 | 
							
								        : proto::call<
							 | 
						||
| 
								 | 
							
								            evaluator(
							 | 
						||
| 
								 | 
							
								                proto::_child_c<3>
							 | 
						||
| 
								 | 
							
								              , proto::call<
							 | 
						||
| 
								 | 
							
								                    functional::context(
							 | 
						||
| 
								 | 
							
								                        proto::make<
							 | 
						||
| 
								 | 
							
								                            mpl::true_()
							 | 
						||
| 
								 | 
							
								                        >
							 | 
						||
| 
								 | 
							
								                      , proto::make<
							 | 
						||
| 
								 | 
							
								                            detail::scope_is_nullary_actions()
							 | 
						||
| 
								 | 
							
								                        >
							 | 
						||
| 
								 | 
							
								                    )
							 | 
						||
| 
								 | 
							
								                >
							 | 
						||
| 
								 | 
							
								              , proto::make<
							 | 
						||
| 
								 | 
							
								                    proto::empty_env()
							 | 
						||
| 
								 | 
							
								                >
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <typename Dummy>
							 | 
						||
| 
								 | 
							
								    struct is_nullary::when<rule::lambda_actor, Dummy>
							 | 
						||
| 
								 | 
							
								        : proto::or_<
							 | 
						||
| 
								 | 
							
								            proto::when<
							 | 
						||
| 
								 | 
							
								                expression::lambda_actor<
							 | 
						||
| 
								 | 
							
								                    proto::terminal<vector0<> >
							 | 
						||
| 
								 | 
							
								                  , proto::terminal<proto::_>
							 | 
						||
| 
								 | 
							
								                  , meta_grammar
							 | 
						||
| 
								 | 
							
								                >
							 | 
						||
| 
								 | 
							
								              , mpl::true_()
							 | 
						||
| 
								 | 
							
								            >
							 | 
						||
| 
								 | 
							
								          , proto::when<
							 | 
						||
| 
								 | 
							
								                expression::lambda_actor<
							 | 
						||
| 
								 | 
							
								                    proto::terminal<proto::_>
							 | 
						||
| 
								 | 
							
								                  , proto::terminal<proto::_>
							 | 
						||
| 
								 | 
							
								                  , meta_grammar
							 | 
						||
| 
								 | 
							
								                >
							 | 
						||
| 
								 | 
							
								              , proto::fold<
							 | 
						||
| 
								 | 
							
								                    proto::call<proto::_value(proto::_child_c<0>)>
							 | 
						||
| 
								 | 
							
								                  , proto::make<mpl::true_()>
							 | 
						||
| 
								 | 
							
								                  , proto::make<
							 | 
						||
| 
								 | 
							
								                        mpl::and_<
							 | 
						||
| 
								 | 
							
								                            proto::_state
							 | 
						||
| 
								 | 
							
								                          , proto::call<
							 | 
						||
| 
								 | 
							
								                                evaluator(
							 | 
						||
| 
								 | 
							
								                                    proto::_
							 | 
						||
| 
								 | 
							
								                                  , _context
							 | 
						||
| 
								 | 
							
								                                  , proto::make<proto::empty_env()>
							 | 
						||
| 
								 | 
							
								                                )
							 | 
						||
| 
								 | 
							
								                            >
							 | 
						||
| 
								 | 
							
								                        >()
							 | 
						||
| 
								 | 
							
								                    >
							 | 
						||
| 
								 | 
							
								                >
							 | 
						||
| 
								 | 
							
								            >
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    struct lambda_actor_eval
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        template <typename Sig>
							 | 
						||
| 
								 | 
							
								        struct result;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <typename This, typename Vars, typename Map, typename Lambda, typename Context>
							 | 
						||
| 
								 | 
							
								        struct result<This(Vars, Map, Lambda, Context)>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::env<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                env_type;
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::actions<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                actions_type;
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<Vars>::type
							 | 
						||
| 
								 | 
							
								                     >::type
							 | 
						||
| 
								 | 
							
								                     vars_type;
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            typedef typename
							 | 
						||
| 
								 | 
							
								                detail::result_of::initialize_locals<
							 | 
						||
| 
								 | 
							
								                    vars_type
							 | 
						||
| 
								 | 
							
								                  , Context
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								            locals_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename expression::lambda<
							 | 
						||
| 
								 | 
							
								                    env_type
							 | 
						||
| 
								 | 
							
								                  , locals_type
							 | 
						||
| 
								 | 
							
								                  , Map
							 | 
						||
| 
								 | 
							
								                  , Lambda
							 | 
						||
| 
								 | 
							
								                >::type const
							 | 
						||
| 
								 | 
							
								                type;
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <
							 | 
						||
| 
								 | 
							
								            typename Vars
							 | 
						||
| 
								 | 
							
								          , typename Map
							 | 
						||
| 
								 | 
							
								          , typename Lambda
							 | 
						||
| 
								 | 
							
								          , typename Context
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								        typename result<
							 | 
						||
| 
								 | 
							
								            lambda_actor_eval(Vars const&, Map const &, Lambda const&, Context const &)
							 | 
						||
| 
								 | 
							
								        >::type const
							 | 
						||
| 
								 | 
							
								        operator()(Vars const& vars, Map const& map, Lambda const& lambda, Context const & ctx) const
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::env<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                env_type;
							 | 
						||
| 
								 | 
							
								            /*typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename result_of::actions<Context>::type
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                actions_type;*/
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<Vars>::type
							 | 
						||
| 
								 | 
							
								                     >::type
							 | 
						||
| 
								 | 
							
								                     vars_type;
							 | 
						||
| 
								 | 
							
								            /*typedef
							 | 
						||
| 
								 | 
							
								                typename proto::detail::uncvref<
							 | 
						||
| 
								 | 
							
								                    typename proto::result_of::value<Map>::type
							 | 
						||
| 
								 | 
							
								                     >::type
							 | 
						||
| 
								 | 
							
								                     map_type;*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            typedef typename
							 | 
						||
| 
								 | 
							
								                detail::result_of::initialize_locals<
							 | 
						||
| 
								 | 
							
								                    vars_type
							 | 
						||
| 
								 | 
							
								                  , Context
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								            locals_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            locals_type locals = initialize_locals(proto::value(vars), ctx);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return
							 | 
						||
| 
								 | 
							
								                expression::
							 | 
						||
| 
								 | 
							
								                    lambda<env_type, locals_type, Map, Lambda>::
							 | 
						||
| 
								 | 
							
								                        make(phoenix::env(ctx), locals, map, lambda);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <typename Dummy>
							 | 
						||
| 
								 | 
							
								    struct default_actions::when<rule::lambda_actor, Dummy>
							 | 
						||
| 
								 | 
							
								        : call<lambda_actor_eval, Dummy>
							 | 
						||
| 
								 | 
							
								    {};
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <typename Locals = vector0<>,
							 | 
						||
| 
								 | 
							
								              typename Map = detail::map_local_index_to_tuple<>,
							 | 
						||
| 
								 | 
							
								              typename Dummy = void>
							 | 
						||
| 
								 | 
							
								    struct lambda_actor_gen;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <>
							 | 
						||
| 
								 | 
							
								    struct lambda_actor_gen<vector0<>, detail::map_local_index_to_tuple<>, void>
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        template <typename Expr>
							 | 
						||
| 
								 | 
							
								        typename expression::lambda_actor<vector0<>, detail::map_local_index_to_tuple<>, Expr>::type const
							 | 
						||
| 
								 | 
							
								        operator[](Expr const & expr) const
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef vector0<> locals_type;
							 | 
						||
| 
								 | 
							
								            typedef detail::map_local_index_to_tuple<> map_type;
							 | 
						||
| 
								 | 
							
								            return expression::lambda_actor<locals_type, map_type, Expr>::make(locals_type(), map_type(), expr);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <typename Locals, typename Map>
							 | 
						||
| 
								 | 
							
								    struct lambda_actor_gen<Locals, Map>
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        lambda_actor_gen(Locals const & locals_)
							 | 
						||
| 
								 | 
							
								            : locals(locals_)
							 | 
						||
| 
								 | 
							
								        {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        lambda_actor_gen(lambda_actor_gen const & o)
							 | 
						||
| 
								 | 
							
								            : locals(o.locals)
							 | 
						||
| 
								 | 
							
								        {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <typename Expr>
							 | 
						||
| 
								 | 
							
								        typename expression::lambda_actor<
							 | 
						||
| 
								 | 
							
								            Locals
							 | 
						||
| 
								 | 
							
								          , Map
							 | 
						||
| 
								 | 
							
								          , Expr
							 | 
						||
| 
								 | 
							
								        >::type const
							 | 
						||
| 
								 | 
							
								        operator[](Expr const & expr) const
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            return expression::lambda_actor<Locals, Map, Expr>::make(locals, Map(), expr);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        Locals locals;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    struct lambda_local_gen
							 | 
						||
| 
								 | 
							
								        : lambda_actor_gen<>
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								#if defined(BOOST_PHOENIX_NO_VARIADIC_SCOPE)
							 | 
						||
| 
								 | 
							
								        lambda_actor_gen<> const
							 | 
						||
| 
								 | 
							
								        operator()() const
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            return lambda_actor_gen<>();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        #include <boost/phoenix/scope/detail/cpp03/lambda.hpp>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#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/local_gen.hpp>
							 | 
						||
| 
								 | 
							
								#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_NAME
							 | 
						||
| 
								 | 
							
								#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_FUNCTION
							 | 
						||
| 
								 | 
							
								#undef BOOST_PHOENIX_SCOPE_ACTOR_GEN_CONST
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    typedef lambda_local_gen lambda_type;
							 | 
						||
| 
								 | 
							
								    lambda_local_gen const lambda = lambda_local_gen();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |