
Jonathan Turkanis wrote:
Peter, could you elaborate on why rounding is the only legitimate behaviour when using rational with a limited precision type?
Nice phrasing ;-) but I'll try. Since rounding is a subset of unspecified, it can only be worse if it carries an unacceptable overhead when overflow does not occur. I don't think that this is the case here. Asserting on overflow is misguided, because asserts should be used to catch logic errors, and rationals rarely participate in program logic; the source of the computation usually comes from user input. Exception on overflow is only better than rounding if no result is better than an approximate result, that is, when the answer has to be correct no matter what. This requirement is better served by rational<unlimited> which does deliver a correct answer. I don't see how rational<limited>+exception-on-overflow is better.