
On Tue, 1 Oct 2002, Roberto Bagnara wrote:
What I am saying is that, instead of writing "Not a 32-bit integer..." and exiting, you could throw an exception. This would not impede performance, since the test now controlling the printing would then control the throw.
Unfortunately this is not true since it would prohibit compilation of CLN with the option -fno-exceptions. CLN is designed in such a way that ranges must be checked before the calls are made for reasons of efficiency. Apart from having a register less maybe, the problematic part is the dtors' overhead needed for stack unwinding.
The change I am proposing would make debugging
much easier and would make possible recovering from the error (and this is the thing that is very important to us).
You'll have to check yourself at those places where an over/underflow may happen for numeric::to_int() and numeric::to_long(), I'm afraid. The other such checks you were proposing will be applied to CVS in some minutes, though.
Regards -richy.