Moving!

So, I’ve been using Sweave for all my posts recently and it seems silly always linking to another site, so this blog has now MOVED PERMANENTLY to http://strugglingthroughproblems.blogspot.com/

Posted in meta | Leave a comment

“Inside” Functors — Multiple Arguments

Again for HTML reasons this has been taken to http://strugglingthroughproblems.blogspot.com/2011/04/inside-functors-multiple-arguments.html

Posted in R | Leave a comment

“Inside” Functors

So, WordPress doesn’t like RweaveHTML, so this is posted at http://strugglingthroughproblems.blogspot.com/2011/04/inside-functors.html

Posted in R | Leave a comment

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 

)

Posted in Boost, C++, parsing, python | Leave a comment

Not Quite Functional

Bitten by not-quite-a-functional-language again!

I really should have seen it this time, after I’ve already posted on how confusing this can be. But do you remember how certain constructs that look “functional” don’t create local environments?

Sorry about the bit that follows — it’s "research code".

So the offending lines were

    1 
    2 funcs = [
    3     lambda fk: P((fk - A) * B)
    4     for P in polys
    5 ]
    6 
    7 for j in range(p):
    8     P = scipy.special.chebyt(j)
    9     for i in range(N):
   10         fk = f[i]
   11         X[i,j] = funcs[j](fk) * np.exp(-1j*2*np.pi*fk * (dist/v*2))
   12 
   13 

Now you may be wondering, "What’s that at line 8? Why’d he make that variable called P and then not use it?" Well the answer is I used to use it, and then I didn’t, and I forgot to take it away. And that line on its own wouldn’t have been a problem, if it weren’t for what came before it…

    1 [
    2     lambda __: __
    3     for __ in __
    4 ]

By this point I should have known not to write list comprehensions with straight-up lambdas in them. The variable P is not remembered for each cycle of the list comprehension, rather it is iterated through like a regular for-loop.

Of course, I would have noticed if all my fitting coefficients had come out the same/massively ill-conditioned. Think about it: that’s what normally would happen when you make this mistake — all Ps would take on the same value, and the independent variables in the fit would have been identical. And there’s where line 8 comes into play…

Because, not only does P not get held in a closure, it is a local variable of the function, even though it’s never declared in a place where you’d see that. As someone who regularly abuses R‘s carefree scoping rules I shouldn’t complain about Python dumping stuff into the local namespace, but there are downsides to letting local variables be created inadvertently (actually this is a somewhat different problem than the one described there, since the variables are really leaking in from the local environment, and that may be an inevitable downside to dynamic name resolution).

And there’s the mystery: the coefficients came out perfectly ok, because P was being reset in the loop to what it should have been. Only when later I tried to rebuild the fitted model using those same functions in funcs (isn’t that a lovely name?) did things turn out weird. And I was totally mystified.

Anyway, the fix is the same as in R:

    1 funcs = [
    2     (lambda P: lambda fk: P((fk - A) * B))(P)
    3     for P in polys
    4 ]
Posted in functional, python | Leave a comment

Keyboard…

My keyboard layout right now.

owen.xkb

Alphabetic keys, modifiers, and shift keys:

Brackets and some punctuation:

Movement keys with level 5 shift:

Greek letters:

The result of lots of tweaking

  • Greek letters should require lots of shift keys so I don’t type them by accident, because they can look like Latin letters and only the compiler can tell the difference.
  • Greek letters wouldn’t be worth it if it weren’t for typing lab reports.
  • The letters are DVORAK. This makes some things easier and some things harder. ‘ls’ is a little annoying to type.
  • Braces on left hand since I usually hit Enter after typing a brace.
  • Even if I don’t use numbers that much it’s really a pain to shift for them.
  • Since most punctuation marks, [, ], (, ) etc are on level 3, put as many on level 3 as possible so I don’t have to remember which level they’re on.
  • That ¢-sign on the : key is not to type a ¢-sign, it’s so I can map to an ESC-like command in VIM without screwing up arrow keys (there’s probably a better way to do that).
  • I prefer to shift for a key than move my hand.
  • I’ve tried putting symbols on the spacebar before. Not a good idea.

More still to do

  • Tab on the right doesn’t always feel right, but I needed the Tab key as a shift key.
  • There’s two 1 keys. Didn’t really have anything else to put there. I use both.
  • Angle brackets are a little awkward.
  • The right shift key is so far away.

Maybe it’s worth it.

I do not know if I type any faster with this layout. I do know I have to delete less, especially when typing brackets, and the keys that used to be shift+number. I never used to be able to remember where those were.

Not everything likes to use ISO_Level5_Shift. Linux console doesn’t, KDE applications sometimes do. Firefox handles it fine, OpenOffice usually handles it OK but in combination with Shift it messes up sometimes. This means I can’t use the level 5 arrow keys for a lot of things.

In theory this layout could be applied with xmodmap, but this would require a little tweaking, since blindly generating the xmodmap script from the current layout does not handle shift and modifier keys correctly. This means I haven’t figured out a way (other than possibly xmodmap) to apply this layout without root permissions.

I have a hard time typing at any computer other than my laptop now. For the most part I do not use any other computers so this is no disadvantage.

VIM is unusable without a lot of remapping. This also means that VIM-like editors that don’t support remapping are hard to use.

Posted in Keyboard | 1 Comment

Cleaner non-wrapping cursor in Vim

The basic idea at Vim Tips Wiki works nicely, but it needs some polishing.

First, does anyone actually want

inoremap <buffer> <silent> <Home> <C-o>g<Home>
inoremap <buffer> <silent> <End>  <C-o>g<End>

?

I suppose if you were treating the file as one big matrix of characters, perhaps. I personally find it inconvenient. Another problem is an annoying glitch that happens when pressing <End> followed by <Up> on a blank line, and the cursor jumps to the last screen column. A hacky remap fixes it.

inoremap <buffer> <silent> <End> <End><Right><Left>

And even though Vim Tips Wiki calls it “poor practice” (I really can’t imagine why), I like blank lines to have the correct indentation:

:inoremap <CR> x<BS><CR>

(from the same page).

What I’d really like to know is if there is a way to make Vim insert the indent characters there in the first place without simulating actual typing. Oh well.

Posted in vim | Leave a comment