
<snip>
There are difficult decisions to make about the result types of arithmetic operations, analogous to this:
int32_t a, b; int64_t c; c = a+b; // oops.
<snip>
It is tempting to make the return type of e.g. operator+ large enough to accommodate the largest possible sum, and to truncate only when the assignment occurs. <snip>
Well, everyone dies, as mentioned below, roll-their-own fixed-point. There will be lots of valid opinions on this one. But I have had good results from the following policy: 1) Forbid binary arithmetic among fixed-points with non-like parameter types. 2) Support copy construction and copy assignment of differing types, whereby *this and the LHS of copy-assign, respectively, determine the digits in the result --- be it larger or smaller (compile-time enable_if is handy here). <snip>
It is perhaps because of this that everyone tends to "roll their own", and no standard implementation has emerged.
Which, quite frankly, I have done one time too many. I definitely crave fixed-point support. Good luck on the project. Best regards, Chris.