$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [review] Convert library
From: Vladimir Batov (Vladimir.Batov_at_[hidden])
Date: 2014-05-25 22:17:13
On 05/26/2014 12:01 PM, feverzsj wrote:
>> 1) I do like
>>
>> T t = convert<T>(from, cnv); // Throws on failure
>> T t = convert<T>(from, default_v, cnv); // Returns 'def' on failure
>>
>> and, if my memory serves me, that was pretty much review#1 interface
>> (minus converters). What it misses though is handling one use-case --
>> deterministic non-throwing handling of conversion failure. When #2
>> returns default_v, we do not know if it is due to a failure or "from"
>> just happened to convert to "default_v".
> Using a default value means user knows the default value won't be a valid
> input or it is used as a fallback or just not cared. If conversion failure
> must be explicitly catched, other interface should be used.
My problem is that I personally have great distaste for exceptions on
mandate ordinary program-flow level. With regard to conversion that'd
turn my 10-lines code block into 50-lines monster that I have
difficulties reading. So, I handle it with
optional<T> res = convert<T>(from, cnv);
if (!res)
{
log("Invalid ignored. Proceeding with the default");
res = some_default;
}
no exceptions, no default-related non-determinism. Happy. And you want
to take it way. :-(
>> 2) I can see two potential problems with a converter provided by default:
>>
>> a) it might be tricky separating
>>
>> convert(TypeIn const&, Converter const& =some_default());
>> convert(Converter const& =some_default());
>>
> how about write another overload:
>
> convert(TypeIn const&, Converter const&);
> convert(TypeIn const&); // using default converter
There is
convert(Converter const&)
It'll probably clash with
convert(TypeIn const&)
>> b) different people might feel quite strongly what converter to be the
>> default... and I'll be on the receiving end of their fury. :-(
> A default converter may be used in most of the daily job. It's important for
> boost lib to offer such convenience.
> If one wants different converter, he can always make himself one.
>
Understood. What I am trying to say is that your preferred default might
well be not mine. That said, I'll go with the flow. What the majority
decides on.