$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] boost-spirit: need help with simple parser
From: Igor R (boost.lists_at_[hidden])
Date: 2012-07-03 07:00:56
> FWIW, your issue can be reproduced with much shorted code:
>
> <skip include>
> <skip Ipv4 definition>
>
> namespace qi = boost::spirit::qi;
> qi::uint_parser<uint8_t, 10, 1, 3> octet;
> int main()
> {
> Ipv4 ip;
> std::string s = "1.2.3.4";
> bool r = qi::parse(s.begin(), s.end(), octet >> '.' >> octet >> '.' >> octet >> '.' >> octet, ip);
> }
or even simpler:
boost::tuple<uint8_t, uint8_t, uint8_t, uint8_t> v;
bool r = qi::parse(s.begin(), s.end(), octet >> '.' >> octet >> '.'
>> octet >> '.' >> octet, v);
while the following works correctly:
boost::fusion::vector<uint8_t, uint8_t, uint8_t, uint8_t> v;
bool r = qi::parse(s.begin(), s.end(), octet >> '.' >> octet >> '.'
>> octet >> '.' >> octet, v);
So, the attribute gets converted to boost::tuple is some strange way...