Opened 11 years ago
#6775 new Bugs
boost::filesystem::path cannot be created from lexical_cast("")
Reported by: | Owned by: | Beman Dawes | |
---|---|---|---|
Milestone: | To Be Determined | Component: | filesystem |
Version: | Boost 1.48.0 | Severity: | Problem |
Keywords: | Cc: |
Description
The boost filesystem::path
can hold an "empty" state, where .string()
returns ""
. It even has a designated check for this state, empty()
This state is useful as a kind of null-value, to turn on or off certain behavior.
However, this state cannot be reached through lexical_cast
, the following code will for example end with a boost::bad_lexical_cast
error.
#include <boost/lexical_cast.hpp> #include <boost/filesystem/path.hpp> #include <string> int main() { boost::filesystem::path str = boost::lexical_cast<boost::filesystem::path, std::string>(""); return 0; }
IMO, this is a bug. path
clearly has a normal and useful empty()
state, which cannot for some reason be reached through lexical_cast
. The equivalent test works for std::string
, for example, so should not be inherent problem with lexical_cast
itself.
One consequence is that path
cannot be used as a value-type for program_options
, while allowing options with default-values to be turned of using empty values. (I.E. --config-file ""
)