
Omer Katz wrote:
A friend and I have started working on a SafeInt library which we hope will be included in Boost
the library is composed of a template class, which excepts existing integer types as a parameter, and an exception class. not all operators have been implemented and there is still work to be done on the library, but we have reached a stage in which at least the basic operators are ready and tested.
I've attached to this thread a zip file containing the code for the library and a tester we wrote (as an example for how the class should be used) I've also uploaded it to the boost vault.
We would appreciate it if you took the time to review our code and give us your comments, tips and opinions (either as a reply to this thread or by email - omerktz@gmail.com)
I really doubt that you library will be accepted in its current form. For the following reasons: 1. The SafeInt objects are 3 time larger than the integer they wrap. max_value and min_value can be static - they really depend only on the type of the integer you wrap. Not on the value that is currently contained. 2. Default constructor does 1 or 2 pow calls. You can use << to get a power of 2. 3. Many checks that are performed currently at run time can be done at compile time. 4. x86 has hardware support for checking for integer overflows. It means that the OS may provide some means to check if an overflow has occurred. Using hardware may be way faster then doing the checks in the software. P.S. Your code seems to be very similar to what is published here: http://msdn.microsoft.com/en-us/library/ms972705.aspx