From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-03-31 01:54:45
Samuel Krempp wrote:
>>And for implicit conversion to do any harm, you need to mistakenly pass
>>boost::format to a function which takes std::string, right? In this case,
>>boost::format will immediately throw and you'll detect the bug in no time.
> The problem I find more concerning is implicit conversions caused by
> typo in operators
> s = format("name=%1 processed") % s1 + s2;
> if format is convertible to string, the type of s2 here might be such
> that this line compiles (e.g. s2 of type string), so such typos could go
> unnoticed for a while..
You mean, the human intended to pass two arguments to format, but typed '+'
instead of '%'. Then, I think the format string will most probably contain
two format specifiers:
s = format("name=%1 processed, results is %2%") % s1 + s2;
and you'll get an exception on the first execution of this line -- which
supposedly will be executed during testing.
(BTW, does your example miss '%' after '%1', or I misunderstand something
about format specifiesrs).
> My opinion was it's safe to use operators for format as long as it is
> not implictly-convertible.
You can still make mistakes, like omitting paranthesis in:
format("reminder = %%") % (a % b)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk