
A thought came to my mind... Theoretically, is it possible for the following conditions to be true? static_cast<float>( std::numeric_limits<int>::min() ) < std::numeric_limits<int>::min() static_cast<double>( std::numeric_limits<int>::min() ) < std::numeric_limits<int>::min() static_cast<long double>( std::numeric_limits<int>::min() ) < std::numeric_limits<int>::min() static_cast<float>( std::numeric_limits<int>::max() ) > std::numeric_limits<int>::max() static_cast<double>( std::numeric_limits<int>::max() ) > std::numeric_limits<int>::max() static_cast<long double>( std::numeric_limits<int>::max() ) > std::numeric_limits<int>::max() After all, casting to floating-point may loose precision... I have no knowledge in this area, so it may be just a silly thought.
Ah, yes: when I fixed this bug I had to disable some of new the tests for type float because of that very issue: an integer type converted to type float may actually be outside the range of an integer due to rounding during the conversion. John.