Overview

The Boost Numeric Conversion library is a collection of tools to describe and perform
conversions between values of different numeric types.

The library includes a special alternative for a subset of std::numeric_limits<>,
the bounds<> traits class, which provides
a consistent way to obtain the boundary values for the
range of a numeric type.

A policy-based converter object which uses conversion_traits
to select an optimized implementation is supplied.
Such implementation uses an optimal range checking code suitable for the source/target combination.
The converter's out-of-range behavior can be customized via an OverflowHandler
policy.
For floating-point to integral conversions, the rounding mode can be selected via
the Float2IntRounder policy.
A custom low-level conversion routine (for UDTs for instance) can be passed
via a RawConverter policy.
The optimized automatic range-checking logic can be overridden via a UserRangeChecker
policy.

History and Acknowledgments

Pre-formal review:

Kevlin Henney, with help from David Abrahams and Beman Dawes, originally contributed
the previous version of numeric_cast<> which already presented the idea of a runtime range check.
Later, Eric Ford, Kevin Lynch and the author spotted some genericity problems
with that numeric_cast<> which prevented it from being used in a generic
layer of math functions.
An improved numeric_cast<> which properly handled all combinations of arithmetic types was presented.
David Abrahams and Beman Dawes acknowledged the need of an improved version
of numeric_cast<> and supported the submission as originally laid out.
Daryl Walker and Darin Adler made some important comments and proposed fixes
to the original submission.

Special thanks go to Björn Karlsoon who helped the author considerably. Having
found the problems with numeric_cast<> himself, he revised very carefully
the original submission and spot a subtle bug in the range checking implementation.
He also wrote part of this documentation and proof-read and corrected other
parts. And most importantly: the features now presented here in this library
evolved from the original submission as a result of the useful private communications
between Björn and the author.