How to use Boost Spirit the “I just converted this from Python” way

Boost Spirit is a… highly impressive parser generator for C++. I might even call it a little too impressive but that’s because I’m not really a C++ programmer.

Anyway,

I was using pyparsing, which is a parser for Python that let’s you combine parsers with overloaded operators in nice ways, like this:

    1 
    2 nl = Reg(r'[ \t]*\n')
    3 small_nl = nl + NotAny(nl)
    4 big_nl = nl + nl
    5 
    6 word = Reg(r'[\w]+')
    7 space = Reg(r'[ \t]+')
    8 junk = Reg(r'[^\s\w\.\!\?]+')
    9 gap = OneOrMore(space ^ junk ^ small_nl).leaveWhitespace()
   10 
   11 stop = Reg(r'[\.\!\?]')
   12 

(I was parsing English sentences)

It’s a pretty nice API; the only real downside is it’s amazingly slow (yes, some of that is my fault for using regexes as nothing more than character classes). And since I already had the algorithm worked out, I thought I might as well give Spirit a shot.

Spirit works template metaprogramming to the max, which can result in errors like the following:

In file included from /usr/local/include/boost/spirit/home/qi/detail/parse_auto.hpp:14,
                 from /usr/local/include/boost/spirit/home/qi/auto.hpp:16,
                 from /usr/local/include/boost/spirit/home/qi.hpp:15,
                 from /usr/local/include/boost/spirit/include/qi.hpp:16,
                 from spirit-test.cpp:2:
/usr/local/include/boost/spirit/home/qi/parse.hpp: In function ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’:
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/spirit/home/qi/parse.hpp:66: error: no matching function for call to ‘assertion_failed(mpl_::failed************ (boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]::error_invalid_expression::************)(boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>))’
In file included from /usr/local/include/boost/spirit/home/qi/operator.hpp:20,
                 from /usr/local/include/boost/spirit/home/qi.hpp:22,
                 from /usr/local/include/boost/spirit/include/qi.hpp:16,
                 from spirit-test.cpp:2:
/usr/local/include/boost/spirit/home/qi/operator/list.hpp: In member function ‘bool boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]’:
/usr/local/include/boost/spirit/home/qi/parse.hpp:68:   instantiated from ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/spirit/home/qi/operator/list.hpp:75: error: ‘const struct boost::fusion::void_’ has no member named ‘parse’
/usr/local/include/boost/spirit/home/qi/operator/list.hpp: In member function ‘bool boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]::value_type, Left = boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, Right = boost::fusion::void_]’:
/usr/local/include/boost/spirit/home/qi/operator/list.hpp:68:   instantiated from ‘bool boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:68:   instantiated from ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/spirit/home/qi/operator/list.hpp:75: error: ‘const struct boost::fusion::void_’ has no member named ‘parse’
In file included from /usr/local/include/boost/spirit/home/qi/directive/repeat.hpp:17,
                 from /usr/local/include/boost/spirit/home/qi/directive.hpp:22,
                 from /usr/local/include/boost/spirit/home/qi.hpp:19,
                 from /usr/local/include/boost/spirit/include/qi.hpp:16,
                 from spirit-test.cpp:2:
/usr/local/include/boost/spirit/home/qi/operator/kleene.hpp: In member function ‘bool boost::spirit::qi::kleene::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]::value_type, Left = boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, Right = boost::fusion::void_]::value_type, Subject = boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>]’:
/usr/local/include/boost/spirit/home/qi/operator/list.hpp:68:   instantiated from ‘bool boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]::value_type, Left = boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, Right = boost::fusion::void_]’
/usr/local/include/boost/spirit/home/qi/operator/list.hpp:68:   instantiated from ‘bool boost::spirit::qi::list::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Context = const boost::fusion::unused_type, Skipper = boost::fusion::unused_type, Attribute = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >, Left = boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, Right = boost::fusion::void_]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:68:   instantiated from ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/spirit/home/qi/operator/kleene.hpp:71: error: ‘const struct boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>’ has no member named ‘parse’
In file included from /usr/local/include/boost/fusion/container/list/cons.hpp:19,
                 from /usr/local/include/boost/fusion/view/ext_/segmented_iterator.hpp:23,
                 from /usr/local/include/boost/proto/fusion.hpp:28,
                 from /usr/local/include/boost/proto/core.hpp:21,
                 from /usr/local/include/boost/proto/proto.hpp:12,
                 from /usr/local/include/boost/spirit/home/support/meta_compiler.hpp:17,
                 from /usr/local/include/boost/spirit/home/qi/meta_compiler.hpp:14,
                 from /usr/local/include/boost/spirit/home/qi/action/action.hpp:14,
                 from /usr/local/include/boost/spirit/home/qi/action.hpp:14,
                 from /usr/local/include/boost/spirit/home/qi.hpp:14,
                 from /usr/local/include/boost/spirit/include/qi.hpp:16,
                 from spirit-test.cpp:2:
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp: In static member function ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Cons&, mpl_::int_) [with Cons = const boost::fusion::nil, Sequence = const boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, N = mpl_::int_]’:
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:112:   instantiated from ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Cons&, mpl_::int_) [with Cons = const boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, int N2 = 1, Sequence = const boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, N = mpl_::int_]’
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:125:   instantiated from ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Sequence&) [with Sequence = const boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, N = mpl_::int_]’
/usr/local/include/boost/fusion/sequence/intrinsic/at.hpp:83:   instantiated from ‘typename boost::fusion::result_of::at::type boost::fusion::at(const Sequence&) [with N = mpl_::int_, Sequence = boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>]’
/usr/local/include/boost/fusion/sequence/intrinsic/at.hpp:101:   instantiated from ‘typename boost::fusion::result_of::at_c::type boost::fusion::at_c(const Sequence&) [with int N = 1, Sequence = boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:302:   instantiated from ‘generator<typename boost::fusion::result_of::value_at_c::type, typename boost::fusion::result_of::value_at_c::type> boost::spirit::make_binary_composite::operator()(const Elements&, boost::fusion::unused_type) const [with Elements = boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, generator = boost::spirit::qi::list]’
/usr/local/include/boost/spirit/home/qi/meta_compiler.hpp:111:   instantiated from ‘typename boost::spirit::make_component::result<boost::spirit::make_component(Elements, Modifiers)>::type boost::spirit::make_component::operator()(const Elements&, const Modifiers&) const [with Elements = boost::fusion::cons<boost::spirit::qi::list<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::void_>, boost::fusion::nil>, Modifiers = boost::fusion::unused_type, Tag = boost::proto::tag::modulus]’
/usr/local/include/boost/spirit/home/support/make_component.hpp:126:   instantiated from ‘typename boost::spirit::make_component::result<boost::spirit::make_component(typename boost::spirit::detail::result_of::make_cons<typename Grammar::result<Grammar(typename boost::proto::result_of::child_c::type, State, Data)>::type, boost::fusion::nil>::type, Data)>::type boost::spirit::detail::make_unary::impl::operator()(typename boost::spirit::detail::make_unary::impl::expr_param, typename boost::spirit::detail::make_unary::impl::state_param, typename boost::spirit::detail::make_unary::impl::data_param) const [with Expr = const boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, State = const mpl_::void_&, Data = boost::fusion::unused_type&, Domain = boost::spirit::qi::domain, Tag = boost::proto::tag::modulus, Grammar = boost::spirit::meta_compiler::meta_grammar]’
/usr/local/include/boost/proto/transform/impl.hpp:96:   instantiated from ‘typename boost::proto::detail::apply_transform::result_type boost::proto::transform::operator()(Expr&, const State&, Data&) const [with Expr = const boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, State = mpl_::void_, Data = boost::fusion::unused_type, PrimitiveTransform = boost::proto::switch_<boost::spirit::meta_compiler::cases>, X = void]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:240:   instantiated from ‘static typename boost::spirit::result_of::compile::type boost::spirit::detail::compiler::compile(const Expr&, Modifiers, mpl_::true_) [with Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Modifiers = boost::fusion::unused_type, Domain = boost::spirit::qi::domain]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:261:   instantiated from ‘typename boost::spirit::result_of::compile::type boost::spirit::compile(const Expr&) [with Domain = boost::spirit::qi::domain, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:68:   instantiated from ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:119: error: ‘const struct boost::fusion::nil’ has no member named ‘car’
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp: In static member function ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Cons&, mpl_::int_) [with Cons = const boost::fusion::nil, Sequence = const boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, N = mpl_::int_]’:
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:112:   instantiated from ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Cons&, mpl_::int_) [with Cons = const boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, int N2 = 1, Sequence = const boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, N = mpl_::int_]’
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:125:   instantiated from ‘static typename boost::mpl::eval_if<boost::is_const, boost::fusion::detail::cref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> >, boost::fusion::detail::ref_result<boost::fusion::detail::cons_deref<typename boost::fusion::detail::cons_advance::type> > >::type boost::fusion::extension::at_impl::apply::call(Sequence&) [with Sequence = const boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, N = mpl_::int_]’
/usr/local/include/boost/fusion/sequence/intrinsic/at.hpp:83:   instantiated from ‘typename boost::fusion::result_of::at::type boost::fusion::at(const Sequence&) [with N = mpl_::int_, Sequence = boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>]’
/usr/local/include/boost/fusion/sequence/intrinsic/at.hpp:101:   instantiated from ‘typename boost::fusion::result_of::at_c::type boost::fusion::at_c(const Sequence&) [with int N = 1, Sequence = boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:302:   instantiated from ‘generator<typename boost::fusion::result_of::value_at_c::type, typename boost::fusion::result_of::value_at_c::type> boost::spirit::make_binary_composite::operator()(const Elements&, boost::fusion::unused_type) const [with Elements = boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, generator = boost::spirit::qi::list]’
/usr/local/include/boost/spirit/home/qi/meta_compiler.hpp:111:   instantiated from ‘typename boost::spirit::make_component::result<boost::spirit::make_component(Elements, Modifiers)>::type boost::spirit::make_component::operator()(const Elements&, const Modifiers&) const [with Elements = boost::fusion::cons<boost::spirit::qi::kleene<boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l> >, boost::fusion::nil>, Modifiers = boost::fusion::unused_type, Tag = boost::proto::tag::modulus]’
/usr/local/include/boost/spirit/home/support/make_component.hpp:126:   instantiated from ‘typename boost::spirit::make_component::result<boost::spirit::make_component(typename boost::spirit::detail::result_of::make_cons<typename Grammar::result<Grammar(typename boost::proto::result_of::child_c::type, State, Data)>::type, boost::fusion::nil>::type, Data)>::type boost::spirit::detail::make_unary::impl::operator()(typename boost::spirit::detail::make_unary::impl::expr_param, typename boost::spirit::detail::make_unary::impl::state_param, typename boost::spirit::detail::make_unary::impl::data_param) const [with Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, State = const mpl_::void_&, Data = boost::fusion::unused_type&, Domain = boost::spirit::qi::domain, Tag = boost::proto::tag::modulus, Grammar = boost::spirit::meta_compiler::meta_grammar]’
/usr/local/include/boost/proto/transform/impl.hpp:96:   instantiated from ‘typename boost::proto::detail::apply_transform::result_type boost::proto::transform::operator()(Expr&, const State&, Data&) const [with Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>, State = mpl_::void_, Data = boost::fusion::unused_type, PrimitiveTransform = boost::proto::switch_<boost::spirit::meta_compiler::cases>, X = void]’
/usr/local/include/boost/spirit/home/support/make_component.hpp:126:   instantiated from ‘typename boost::spirit::make_component::result<boost::spirit::make_component(typename boost::spirit::detail::result_of::make_cons<typename Grammar::result<Grammar(typename boost::proto::result_of::child_c::type, State, Data)>::type, boost::fusion::nil>::type, Data)>::type boost::spirit::detail::make_unary::impl::operator()(typename boost::spirit::detail::make_unary::impl::expr_param, typename boost::spirit::detail::make_unary::impl::state_param, typename boost::spirit::detail::make_unary::impl::data_param) const [with Expr = const boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, State = const mpl_::void_&, Data = boost::fusion::unused_type&, Domain = boost::spirit::qi::domain, Tag = boost::proto::tag::modulus, Grammar = boost::spirit::meta_compiler::meta_grammar]’
/usr/local/include/boost/proto/transform/impl.hpp:96:   instantiated from ‘typename boost::proto::detail::apply_transform::result_type boost::proto::transform::operator()(Expr&, const State&, Data&) const [with Expr = const boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, State = mpl_::void_, Data = boost::fusion::unused_type, PrimitiveTransform = boost::proto::switch_<boost::spirit::meta_compiler::cases>, X = void]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:240:   instantiated from ‘static typename boost::spirit::result_of::compile::type boost::spirit::detail::compiler::compile(const Expr&, Modifiers, mpl_::true_) [with Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Modifiers = boost::fusion::unused_type, Domain = boost::spirit::qi::domain]’
/usr/local/include/boost/spirit/home/support/meta_compiler.hpp:261:   instantiated from ‘typename boost::spirit::result_of::compile::type boost::spirit::compile(const Expr&) [with Domain = boost::spirit::qi::domain, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:68:   instantiated from ‘bool boost::spirit::qi::parse(Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
/usr/local/include/boost/spirit/home/qi/parse.hpp:80:   instantiated from ‘bool boost::spirit::qi::parse(const Iterator&, Iterator, const Expr&, Attr&) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits, std::allocator > >, Expr = boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::modulus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::shift_left, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::minus, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::char_code >&, const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::unary_plus, boost::proto::argsns_::list1<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&>, 1l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 2l>&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term, 0l>&, boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<const boost::proto::exprns_::expr<boost::proto::tag::shift_right, boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&, const boost::proto::exprns_::expr<boost::proto::tag::dereference, boost::proto::argsns_::list1<boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::terminal_ex<boost::spirit::tag::char_code, boost::fusion::vector1 > >, 0l>&>, 1l>&>, 2l>&, boost::proto::exprns_::expr<boost::proto::tag::bitwise_or, boost::proto::argsns_::list2<const boost::proto::utility::literal&, const boost::proto::utility::literal&>, 2l>&>, 2l>&>, 2l>&>, 2l>, Attr = std::vector<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > >, std::allocator<std::vector<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > >, std::allocator<std::vector<std::vector<char, std::allocator >, std::allocator<std::vector<char, std::allocator > > > > > > >]’
spirit-test.cpp:55:   instantiated from here
/usr/local/include/boost/fusion/container/list/detail/at_impl.hpp:119: error: ‘const struct boost::fusion::nil’ has no member named ‘car’

(It’s a tricky one, alright: 80 lines and 250957 characters, substantially longer than the program itself. The code that produced it will follow shortly).

What confused me at first about spirit is the emphasis the documentation places on semantic actions, which, as far as I can tell, are the closest thing to Yacc in that they are bits of code that are run when an element is parsed. This may indeed be a good way to write parsers (I don’t know, I don’t write many parsers), but when you’ve been doing everything in Python and are used to cheap, easy, heavily nested structures…

What follows is normally intolerable in C++, and it takes a moment to re-realize that this kind of thing is common in other languages:

    1  
    2 #include <boost/spirit/include/qi.hpp>
    3 
    4 #include <boost/foreach.hpp>
    5 
    6 #include <iostream>
    7 #include <string>
    8 #include <vector>
    9 
   10 #define foreach BOOST_FOREACH
   11 
   12 namespace qi = boost::spirit::qi;
   13 
   14 int main()
   15 {
   16     using qi::parse;
   17     using qi::char_;
   18     using qi::omit;
   19     using qi::lit;
   20     
   21     using std::cout;
   22     using std::endl;
   23     
   24 #define v std::vector
   25     
   26     std::string text =
   27         "....a b. c? d\n"
   28         "e f! g h.\n\n"
   29         "i j. k.\n\n";
   30     
   31     bool success = false;
   32     
   33     auto word   = +(char_("a-zA-Z"));
   34     auto space  = char_(" \t");
   35     auto nl     = lit("\r\n") | lit("\n");
   36     auto two_nl = nl >> (*space) >> nl;
   37     auto one_nl = nl - two_nl;
   38     auto gap    = space | one_nl;
   39     auto junk   = char_ - char_("a-zA-Z \t\r\n.?!");
   40     auto stop   = char_("?.!");
   41     
   42     auto sentence  = *(omit[*(gap|junk)] >> word);
   43     auto paragraph = sentence % omit[stop];
   44     auto page      = paragraph % omit[two_nl];
   45     
   46     auto &grammar = page;
   47     
   48     v<v<v<v<char>>>> result;
   49     
   50     success = parse(
   51         text.begin(),
   52         text.end(),
   53         grammar,
   54         result
   55     );
   56     
   57     cout << success << endl;
   58     cout << endl;
   59     
   60     foreach (v<v<v<char>>> &p3, result) {
   61         foreach (v<v<char>> &p2, p3) {
   62             foreach (v<char> &p1, p2) {
   63                 cout << std::string(p1.begin(), p1.end());
   64                 cout << " ";
   65             }
   66             cout << endl;
   67         }
   68         cout << "- - - " << endl;
   69     }
   70 }
   71 

Yes… a vector of vectors of vectors of vectors of characters. Hey, I’m not trying to do anything fancy; I just had way too much input text to keep using Python.

(Now, without comparing to the correct code, see if you can spot the error:

    1  
    2 #include <boost/spirit/include/qi.hpp>
    3 
    4 #include <boost/foreach.hpp>
    5 
    6 #include <iostream>
    7 #include <string>
    8 #include <vector>
    9 
   10 #define foreach BOOST_FOREACH
   11 
   12 namespace qi = boost::spirit::qi;
   13 
   14 int main()
   15 {
   16     using qi::parse;
   17     using qi::char_;
   18     using qi::omit;
   19     using qi::lit;
   20     
   21     using std::cout;
   22     using std::endl;
   23     
   24 #define v std::vector
   25     
   26     std::string text =
   27         "....a b. c? d\n"
   28         "e f! g h.\n\n"
   29         "i j. k.\n\n";
   30     
   31     bool success = false;
   32     
   33     auto word   = +(char_("a-zA-Z"));
   34     auto space  = char_(" \t");
   35     auto nl     = lit("\r\n") | lit("\n");
   36     auto two_nl = nl >> (*space) >> nl;
   37     auto one_nl = nl - two_nl;
   38     auto gap    = space | one_nl;
   39     auto junk   = char_ - char_("a-zA-Z \t\r\n.?!");
   40     auto stop   = char_("?.!");
   41     
   42     auto sentence  = *(omit[*(gap|junk)] << word);
   43     auto paragraph = sentence % omit[stop];
   44     auto page      = paragraph % omit[two_nl];
   45     
   46     auto &grammar = page;
   47     
   48     v<v<v<v<char>>>> result;
   49     
   50     success = parse(
   51         text.begin(),
   52         text.end(),
   53         grammar,
   54         result
   55     );
   56     
   57     cout << success << endl;
   58     cout << endl;
   59     
   60     foreach (v<v<v<char>>> &p3, result) {
   61         foreach (v<v<char>> &p2, p3) {
   62             foreach (v<char> &p1, p2) {
   63                 cout << std::string(p1.begin(), p1.end());
   64                 cout << " ";
   65             }
   66             cout << endl;
   67         }
   68         cout << "- - - " << endl;
   69     }
   70 }
   71 

)

Advertisements
This entry was posted in Boost, C++, parsing, python. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s