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.