Hi All,

I would like to parse and evaluate boolean expression such as (a=b and c>9). I am following this example at http://stackoverflow.com/questions/12598029/how-to-calculate-boolean-expression-in-spirit/12602418#12602418.

This is the code for parsing steps:

#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/variant/recursive_wrapper.hpp>
#include <boost/lexical_cast.hpp>

namespace qi    = boost::spirit::qi;
namespace phx   = boost::phoenix;

struct op_or  {};
struct op_and {};
struct op_not {};
struct op_equal{};
struct op_not_equal{};
struct op_less{};
struct op_less_equal{};
struct op_greater{};
struct op_greater_equal{};


typedef std::string var;
template <typename tag> struct binop;
template <typename tag> struct unop;

typedef boost::variant<var,
        boost::recursive_wrapper<unop <op_not> >,
        boost::recursive_wrapper<binop<op_and> >,
        boost::recursive_wrapper<binop<op_or> >,
        boost::recursive_wrapper<binop<op_equal> >,
        boost::recursive_wrapper<binop<op_not_equal> >,
        boost::recursive_wrapper<binop<op_less> >,
        boost::recursive_wrapper<binop<op_less_equal> >,
        boost::recursive_wrapper<binop<op_greater> >,
        boost::recursive_wrapper<binop<op_greater_equal> >
        > expr;

template <typename tag> struct binop
{
    explicit binop(const expr& l, const expr& r) : oper1(l), oper2(r) { }
    expr oper1, oper2;
};

template <typename tag> struct unop
{
    explicit unop(const expr& o) : oper1(o) {}
    expr oper1;
};
    template <typename It, typename Skipper = qi::space_type>
    struct parser : qi::grammar<It, expr(), Skipper>
{
        parser() : parser::base_type(expr_)
        {
            using namespace qi;

            expr_  = boolExpr_.alias();

            boolExpr_  = *((compExpr_ >> '|'  >> compExpr_ ) [ _val = phx::construct<binop<op_or > >(_1, _2) ]
                          |(compExpr_ >> '&'  >> compExpr_ ) [ _val = phx::construct<binop<op_and > >(_1, _2) ]
                          |(compExpr_ >> '!'  >> compExpr_ ) [ _val = phx::construct<binop<op_not > >(_1, _2) ]
                          );
            compExpr_=((compExpr_ >> '='  >> compExpr_ ) [ _val = phx::construct<binop<op_equal > >(_1, _2) ]
                       |(compExpr_ >> "!="  >> compExpr_ ) [ _val = phx::construct<binop<op_not_equal > >(_1, _2) ]
                       |(compExpr_ >> '<'  >> compExpr_ ) [ _val = phx::construct<binop<op_less > >(_1, _2) ]
                       | (compExpr_ >> '<='  >> compExpr_ ) [ _val = phx::construct<binop<op_less_equal> >(_1, _2) ]
                       | (compExpr_ >> '>'  >> compExpr_ ) [ _val = phx::construct<binop<op_greater> >(_1, _2) ]
                       | (compExpr_ >> ">="  >> compExpr_ ) [ _val = phx::construct<binop<op_greater_equal> >(_1, _2) ]
                       |'(' >> boolExpr_>>')'
                       | varExpr_
                       );
             varExpr_=qi::lexeme[ +(alpha|digit) ];

            BOOST_SPIRIT_DEBUG_NODE(expr_);
            BOOST_SPIRIT_DEBUG_NODE(boolExpr_);
            BOOST_SPIRIT_DEBUG_NODE(compExpr_);
            BOOST_SPIRIT_DEBUG_NODE(varExpr_);
         //   BOOST_SPIRIT_DEBUG_NODE(simple);
         //   BOOST_SPIRIT_DEBUG_NODE(var_);
        }

        private:
        qi::rule<It, var() , Skipper> varExpr_;
        qi::rule<It, expr(), Skipper> boolExpr_, compExpr_, expr_;
};

int main()
{

               std::string inputs="a=b & c>9";
               typedef std::string::const_iterator It;
               It iter=inputs.begin(),end=inputs.end();

               parser<It> p;

                try
                {
                    expr result;
                    bool ok = qi::phrase_parse(iter,end,p,qi::space,result);

                    if (!ok)
                        std::cerr << "invalid input\n";
                    else
                    {
                        std::cout << "result:\t" << result << "\n";
                       // std::cout << "evaluated:\t" << evaluate(result) << "\n";
                    }

                } catch (const qi::expectation_failure<It>& e)
                {
                    std::cerr << "expectation_failure at '" << std::string(e.first, e.last) << "'\n";
                }

                if (iter!=end) std::cerr << "unparsed: '" << std::string(iter,end) << "'\n";

    return 0;
}

Before the parser instantiation, the compilation is ok.  This is  error. Thank you for any suggestion:


c:\boost\boost_1_53_0\boost\spirit\home\qi\nonterminal\rule.hpp:176: erreur : no matching function for call to 'assertion_failed(mpl_::failed************ (boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>::define(boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>&, const Expr&, mpl_::false_) [with Auto = mpl_::bool_<false>, Expr = boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_not_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const int&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l>, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&>, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, std::basic_string<char>(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>, Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, T1 = boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), T2 = boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, T3 = boost::spirit::unused_type, T4 = boost::spirit::unused_type, boost::spirit::qi::rule<Iterator, T1, T2, T3, T4> = boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>, mpl_::false_ = mpl_::bool_<false>]::error_invalid_expression::************)(boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_not_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const int&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::spirit::attribute<0>, boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater_equal> >, boost::fusion::vector<boost::spirit::argument<0>, boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l>, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, boost::variant<std::basic_string<char>, boost::recursive_wrapper<unop<op_not> >, boost::recursive_wrapper<binop<op_and> >, boost::recursive_wrapper<binop<op_or> >, boost::recursive_wrapper<binop<op_equal> >, boost::recursive_wrapper<binop<op_not_equal> >, boost::recursive_wrapper<binop<op_less> >, boost::recursive_wrapper<binop<op_less_equal> >, boost::recursive_wrapper<binop<op_greater> >, boost::recursive_wrapper<binop<op_greater_equal> > >(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<const char&>, 0l> >, 2l>&>, 2l>&, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, std::basic_string<char>(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>&>, 2l>))'

c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no match for 'operator<<' in '((const boost::detail::variant::printer<std::basic_ostream<char> >*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_ << operand'

c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no match for 'operator<<' in '((const boost::detail::variant::printer<std::basic_ostream<char> >*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_ << operand'

c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no match for 'operator<<' in '((const boost::detail::variant::printer<std::basic_ostream<char> >*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_ << operand'

c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no match for 'operator<<' in '((const boost::detail::variant::printer<std::basic_ostream<char> >*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_ << operand'




Regards
Olivier