
on 30.03.2010 at 19:45 Peter Dimov wrote :
Right. What is the purpose of the NaN? Its function is to delay the exception until the first use of the result, making the point of the erroneous calculation harder to trace. In what scenario is this a good thing? if you don't want to deal with specific exceptions
xint::integer foo(); //... xint::integer i = foo(); MY_ASSERT(i!=NaN);
No, it isn't an overflow. An overflow doesn't occur at random, depending on some external resource. Overflows are deterministic and depend on the fixed range of the number. A 32 bit signed integer always overflows at 2^31. If a calculation produces a number X without overflowing, that same calculation, when performed again, will still produce X without overflowing. This is not true for out of memory conditions. Arguing that making a copy of a number can overflow is stranger still. agree bad_alloc and the like suit better i would leave bad_alloc actually (no re-throwing needed)
-- Pavel P.S. if you notice a grammar mistake or weird phrasing in my message please point it out