To determine the ranges of numeric types with std::numeric_limits
[18.2.1], different syntax have to be used depending on numeric type. Specifically,
numeric_limits<T>::min() for
integral types returns the minimum finite value, whereas for floating point
types it returns the minimum positive normalized value. The difference in
semantics makes client code unnecessarily complex and error prone.

boost::numeric::bounds<>
provides a consistent interface for retrieving the maximum finite value,
the minimum finite value and the minimum positive normalized value (0 for
integral types) for numeric types. The selection of implementation is performed
at compile time, so there is no runtime overhead.