| /*============================================================================= |
| Phoenix V1.2.1 |
| Copyright (c) 2001-2003 Joel de Guzman |
| |
| Use, modification and distribution is subject to 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) |
| ==============================================================================*/ |
| #include <vector> |
| #include <algorithm> |
| #include <iostream> |
| #include <boost/spirit/include/phoenix1_operators.hpp> |
| #include <boost/spirit/include/phoenix1_primitives.hpp> |
| |
| using namespace std; |
| using namespace phoenix; |
| |
| ////////////////////////////////// |
| template <int N> |
| struct static_int { |
| |
| template <typename TupleT> |
| struct result { typedef int type; }; |
| |
| template <typename TupleT> |
| int eval(TupleT const&) const { return N; } |
| }; |
| |
| ////////////////////////////////// |
| template <int N> |
| phoenix::actor<static_int<N> > |
| int_const() |
| { |
| return static_int<N>(); |
| } |
| |
| ////////////////////////////////// |
| int |
| main() |
| { |
| cout << (int_const<5>() + int_const<6>())() << endl; |
| return 0; |
| } |