summaryrefslogtreecommitdiff
path: root/boost/phoenix/core/domain.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/phoenix/core/domain.hpp')
-rw-r--r--boost/phoenix/core/domain.hpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/boost/phoenix/core/domain.hpp b/boost/phoenix/core/domain.hpp
index ec11090916..6c438de97c 100644
--- a/boost/phoenix/core/domain.hpp
+++ b/boost/phoenix/core/domain.hpp
@@ -9,6 +9,9 @@
#define BOOST_PHOENIX_CORE_DOMAIN_HPP
#include <boost/phoenix/core/limits.hpp>
+#include <boost/proto/matches.hpp>
+#include <boost/proto/transform/call.hpp>
+#include <boost/proto/transform/when.hpp>
#include <boost/proto/domain.hpp>
namespace boost { namespace phoenix
@@ -17,17 +20,30 @@ namespace boost { namespace phoenix
struct actor;
struct meta_grammar;
-
+
+ struct phoenix_generator
+ : proto::switch_<phoenix_generator>
+ {
+
+ BOOST_PROTO_USE_BASIC_EXPR()
+
+ template<typename Tag>
+ struct case_
+ : proto::otherwise<proto::call<proto::pod_generator<actor>(proto::_)> >
+ {};
+ };
+
struct phoenix_domain
: proto::domain<
- proto::pod_generator<actor>
+ phoenix_generator
, meta_grammar
, proto::basic_default_domain
>
{
template <typename T>
struct as_child
- : as_expr<T>
+ : proto_base_domain::as_expr<T> // proto lambda example.
+ // : as_expr<T>
{};
};
}}