Hi guys,
I'm investigating a
bug in the Seastar/
lexical_cast and I got stuck. Let me introduce what's going on and the further investigation that I did.
The Seastar framework uses the boost program options to parse the command line arguments. But when the user try to pass a command line argument of seastar::sstring (Seastar string type) with a white space, the lib tells us that is invalid value.
Turns out the boost program options call
lexical_cast to cast from
std::string to
seastar::sstring. This cast is failing. The
lexical_cast uses a stream to extract the value from the source, but the
operator>> stops in the white space. Making the second validation in the same
line false. Note, there is a
call to
unsetf to ensure that the white space will be skipped:
stream.unsetf(std::ios::skipws);.
What's am I trying to do is figure out where the problems live? Is there a bug in boost or is a sstring implemantion problem? Am I missing something?
Thanks!