$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64152 - in sandbox/SOC/2010/phoenix3/boost/phoenix: core scope
From: thom.heller_at_[hidden]
Date: 2010-07-19 06:16:47
Author: theller
Date: 2010-07-19 06:16:46 EDT (Mon, 19 Jul 2010)
New Revision: 64152
URL: http://svn.boost.org/trac/boost/changeset/64152
Log:
fixed compile error on gcc-4.2
Text files modified: 
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp            |     5 +++--                                   
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp             |     1 +                                       
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp |    16 ++++++++++------                        
   3 files changed, 14 insertions(+), 8 deletions(-)
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp	2010-07-19 06:16:46 EDT (Mon, 19 Jul 2010)
@@ -51,9 +51,10 @@
 
         template <typename Env, typename N>
         typename result_of::argument<Env, N>::type
-        operator()(Env& env, N const& n) const
+        operator()(Env& env, N const&) const
         {
-            return get_environment_argument()(env, eval(n));
+            typedef typename boost::result_of<eval_grammar(N)>::type argument_id;
+            return get_environment_argument_c<argument_id::value>(env);
         }
     };
     
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp	2010-07-19 06:16:46 EDT (Mon, 19 Jul 2010)
@@ -13,6 +13,7 @@
 #include <boost/fusion/include/as_vector.hpp>
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/scope/scoped_environment.hpp>
+#include <boost/phoenix/core/actor.hpp>
 #include <boost/phoenix/scope/local_actor.hpp>
 #include <boost/phoenix/scope/detail/local_variable.hpp>
 #include <boost/phoenix/support/element_at.hpp>
Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp	(original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp	2010-07-19 06:16:46 EDT (Mon, 19 Jul 2010)
@@ -45,12 +45,16 @@
     }
 
     // overload get_environment_argument_c to return the correct argument
-    template <int N, typename Env>
-    typename boost::enable_if<
-        is_scoped_environment<Env>
-      , typename result_of::get_environment_argument<Env, mpl::int_<N> >::type
-    >::type
-    get_environment_argument_c(Env& env)
+    template <int N, typename Env, typename OuterEnv, typename Locals, typename Map>
+	 typename result_of::get_environment_argument<scoped_environment<Env, OuterEnv, Locals, Map>, mpl::int_<N> >::type
+    get_environment_argument_c(scoped_environment<Env, OuterEnv, Locals, Map>& env)
+    {
+        return fusion::at_c<N>(env.env);
+    }
+    
+	 template <int N, typename Env, typename OuterEnv, typename Locals, typename Map>
+	 typename result_of::get_environment_argument<scoped_environment<Env, OuterEnv, Locals, Map>, mpl::int_<N> >::type
+    get_environment_argument_c(scoped_environment<Env, OuterEnv, Locals, Map> const& env)
     {
         return fusion::at_c<N>(env.env);
     }