Subject: Re: [boost] Formal Review Request: Boost.String.Convert
From: Vladimir Batov (batov_at_[hidden])
Date: 2009-02-18 06:55:55
> Why not just convert_to<wstring>?
> Is the problem with convert by itself that it leaves the reader worrying
> about 'to' and/or 'from'?
> - leaving one feeling 'what?'
> Direction matters.
Yes, once I got comfortable with boost::convert::to I realized that after
generalization the 'from' is obviously redundant as string-from-int can
always be transformed to int-to-string. So, 'from' died out. When only 'to'
left, I asked myself what it was doing on its own.
I do agree in principle that having direction helps (even only somewhat) but
'to' does not seem to work. It all starts nicely:
string s = boost::convert::to<int>(-1)
Above 'to' does seem natural (IMHO of course) as the line kind of reads as
"convert to int". However, with the default parameter it becomes
string s = boost::convert::to(-1, "failed to convert")
i.e. 'to' becomes a nuisance. In that setting I much prefer
string s = boost::convert(-1, "failed to convert")
which answers the "convert what" question as it reads as "convert int".
Granted, the conversion destination becomes somewhat subtle. However, I do
not feel it is too subtle to get one confused. More so, I feel the convert
family is well discriminated (with enable_if) so that
Wstring WIDE_str = boost::convert(-1, "failed to convert")
will not compile. Therefore, I feel very safe with just
string s = boost::convert(-1, "failed to convert").
That thought took me all the way from boost::string::convert() to
boost::convert(). That looks like a reasonable and logical compromise which
might not be as nice as "convert::to<int>" but overall holds better. I am OK
with that. Others..?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk