Boost logo

Boost Users :

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...


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net