On Tue, 19 Nov 2013 03:29:48 -0000, Michel Fortin
<[email protected]> wrote:
On 2013-11-18 23:42:13 +0000, "Jonathan M Davis" <[email protected]>
said:
I understand this. The problem is that in some cases, in order to do the
check, you have to do all of the work that the function you're trying to
protect bad input from has to do anyway - even without it asserting
anything.
So, having a separate function do the checking would just be extra
overhead.
Very true.
I'll just point out now that you could actually have only one function
that does one or the other or both depending on template parameters. One
template parameter is the output sink, which could be a dummy type that
does nothing or an actual type that saves the data somewhere. Another
parameter is the error handler, which can be a dummy type that does
nothing, or it could assert or throw when an error is found. Let the
optimizer remove the do-nothing code paths that will result.
Now, I really have no idea but that could be overkill in this situation.
Why use templates at all? Lets just keep it simple..
You just write /the/ one internal conversion/check function (for each
case) such that it returns a boolean success status, then.. in release
mode you call it and throw on false/failure, and in debug mode you call it
in and assert on false/failure.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/