|
Boost Users : |
Subject: [Boost-users] program_options: accepting NaNs for doubles
From: Rhys Ulerich (rhys.ulerich_at_[hidden])
Date: 2011-08-11 12:55:22
Hi all,
program_options does not accept NaN or Inf as valid double input. For example,
the following sequence modifies the "Getting Started" first.cpp [1] to accept
double input:
cp $BOOST_SOURCE/libs/program_options/example/first.cpp .
perl -pi -e 's/<int>/<double>/;' first.cpp
LDFLAGS="-lboost_program_options" make first # ...or whatever
The modified example indeed barfs on NaN or Inf input:
$ ./first --compression=5.5
Compression level was set to 5.5.
$ ./first --compression=Inf
error: in option 'compression': invalid option value 'Inf'
$ ./first --compression=NaN
error: in option 'compression': invalid option value 'NaN'
Two questions:
1) Does this count as a bug? 'std::cin >> foo' doesn't grok Inf or NaNs (on my
system anyhow) but methods like strtod() do. Users providing explicit
infinities or not-a-numbers as options parameters likely don't do so
accidentally. This Inf/NaN behavior is not mentioned in the active tickets.
2) Can anyone suggest a workaround (shy of using string-based parameters and
calling strtod myself)?
Thanks,
Rhys
[1] http://www.boost.org/doc/libs/1_47_0/doc/html/program_options/tutorial.html#id2190970
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