Search code examples
boost-spirit-qi

What should qi::uint_parser<int>() parse exactly?


From testing I can get qi::uint_parser<int>() is the same as qi::uint_. They parse integers from 0 to UINT_MAX.

What I don't understand is that qi::uint_parser requires std::numeric_limits<T>::max() to be valid for the numeric base type T. I'm not sure if I should assume qi::uint_parser<int>() should parse integers from 0 to std::numeric_limits<int>::max() not std::numeric_limits<unsigned int>::max(). Or is this requirement has nothing to do with the parser's range?


Solution

  • The problem is solved now on boost 1.68.0. qi::uint_parser<int>() parses integers from 0 to std::numeric_limits<int>::max(). spirit x3 is also fixed.

    https://github.com/boostorg/spirit/pull/297