Parsing of maximum double parses INF

Olaf Peter <[email protected]> Thu, 31 May 2018 15:13:41 +0200
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <[email protected]>
Hi,

I came to the following test:

#include <boost/spirit/home/x3.hpp>
#include <iostream>
#include <limits>
#include <string>

namespace x3 = boost::spirit::x3;

int main()
{
     std::string number{ 
std::to_string(std::numeric_limits<double>::max()) };

     auto iter = number.begin();
     auto const end = number.end();
     double attr;
     bool parse_ok = x3::parse(iter, end,
                               x3::double_,
                               attr);

     std::cout << number << "\n"
               << std::boolalpha
               << "parse_ok: "     << parse_ok
               << ", full_match: " << (iter == end)
               << ", attr: " << attr << "\n";
}

179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000
parse_ok: true, full_match: true, attr: inf

where parse_ok and full_match are true, but the attribute got INF. I'm 
correct with my assumption, that a string of DOUBLE_MAX must give me the 
value back, isn't it? Isn't the same true for the smallest value as of 
std::numeric_limits<double>::min() ??

See also at [Wandbox](https://wandbox.org/permlink/LD2XyKlWU5YRZvYq).

Thanks,
Olaf

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot