docopt / docopt.cpp

C++11 port of docopt
Boost Software License 1.0
1.04k stars 146 forks source link

Suggestion: docopt::value to provide a `represent` method rather than overloading operator<< for std::ostream #135

Open RuijieYu opened 4 years ago

RuijieYu commented 4 years ago

Some background information: I was trying to use fmt alongside docopt, but as far as I am aware the parsed values cannot be "unconditionally" converted to string-like objects; docopt::value::toXXXX functions throw when the type don't match, and the operator<< overload requires that I use std::ostream (and std::stringstream), which is not an easy one-line solution.

It would be ideal if in the implementation instead of overloading operator<<, a noexcept version of represent function is provided that converts the underlying value with whatever type into a string-like object. Then if providing an operator<< is absolutely necessary, mark the overload inline that simply calls represent.

jaredgrubb commented 4 years ago

So you are asking to have the to-string functionality be a member function rather than a global? Would 'represent' return a std::string? One benefit of << is that it doesn't require the creation of a string.