On 12/10/15 10:44 AM, Phil Endecott wrote:
Hi Robert,
Robert Ramey wrote:
I've also made a proposal for the C++ Standards committee to include a simplified version of this library as part of he C++ standard.
You can see the proposal at http://www.rrsd.com/software_development/safe_numerics/proposal.pdf
I've had a quick look at this PDF. Some random thoughts:
- The "safe integer" solution that I've heard most about is Miscrosoft's, which I don't think is one of those that you cite in your references.
- At the top of page 3 of your PDF there's an example where you square an int8_t and assign the result to an int8_t, and say this can't overflow. Either I'm missing something (which is quite possible!) or you meant to assign to a wider result type.
damn - you're right. The multiplication can't overflow, but the subsequent assignment can. I'll change this.
- I suspect that in my code, the consequences of an exception that I hadn't considered could be just as bad as an overflow that I'd not considered!
LOL - Then this library is not for you! Actually, I'm guessing you have a lot of company here. I proposed a talk at CPPcon on this and there was not interest among the reviewers. It's hard to tell, but it seemed that it was just a not a problem. Another sentiment I've seen expressed is that this is only appropriate for less skilled programmers who don't really know about how to write code. In the documentation at www.blincubator.com I've tried to dispell the nothing that this can be addressed in an ad hoc manner. To me this is a 30 year festering carbuncle on the face of C++/C. For the language to permit the writing of an arithmetical expression and to permit it to fail silently, is a recipe for disaster which are are suffering from on a daily basis. The amazing thing to me is that all languages have have this problem - even those which are interpreted!!! How have computer engineers been able to ignore/forget what the fundamental purpose is about - to provide correct answers. We're using C++ to write code for self driving cars - and no one cares about this. I can't express how disheartening to me this is. BUT now we have a realistic solution!!!. I believe this is a practical, correct, elegant alternative which we can add on to C++ via a library such as this. Then C++ can stand alone not only as the way to create the most efficient programs but the most correct one as well. There will be no serious competitor. And this is testement to the foresight, vision and genius of our community leaders. This library depends upon constexpr, operator overloading and other (recent) C++ features. I believe that C++/14 is going to usher in a whole new err for computation. Now if could only get a utf8 codecvt facet which works. Robert Ramey