1/*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6==============================================================================*/
7#if !defined(BOOST_SPIRIT_LAZY_NOVEMBER_04_2008_1157AM)
8#define BOOST_SPIRIT_LAZY_NOVEMBER_04_2008_1157AM
9
10#if defined(_MSC_VER)
11#pragma once
12#endif
13
14#include <boost/spirit/home/support/modify.hpp>
15#include <boost/spirit/home/support/detail/is_spirit_tag.hpp>
16#include <boost/proto/traits.hpp>
17
18namespace boost { namespace phoenix
19{
20 template <typename Expr>
21 struct actor;
22}}
23
24namespace boost { namespace spirit
25{
26 template <typename Eval>
27 typename proto::terminal<phoenix::actor<Eval> >::type
28 lazy(phoenix::actor<Eval> const& f)
29 {
30 return proto::terminal<phoenix::actor<Eval> >::type::make(f);
31 }
32
33 namespace tag
34 {
35 struct lazy_eval
36 {
37 BOOST_SPIRIT_IS_TAG()
38 };
39 }
40
41 template <typename Domain>
42 struct is_modifier_directive<Domain, tag::lazy_eval>
43 : mpl::true_ {};
44}}
45
46#endif
47

source code of boost/libs/spirit/include/boost/spirit/home/support/lazy.hpp