boost.png (6897 bytes) Home Libraries People FAQ More

Boost Integer Library

Header / Docs Contents Use
<boost/integer_fwd.hpp> Forward declarations of classes and class templates When just the name of a class is needed
<boost/cstdint.hpp>

documentation
Typedef's based on the 1999 C Standard header <stdint.h>, wrapped in namespace boost. This implementation may #include the compiler supplied <stdint.h>, if present. Supplies typedefs for standard integer types such as int32_t or uint_least16_t. Use in preference to <stdint.h> for enhanced portability. Furthermore, all names are safely placed in the boost namespace.
<boost/integer_traits.hpp>

documentation
Template class boost::integer_traits, derived from std::numeric_limits.  Adds const_min and const_max members. Use to obtain the characteristics of a known integer type.
<boost/integer.hpp>

documentation
Templates for integer type selection based on properties such as maximum value or number of bits. Use to select the type an integer when some property such as maximum value or number of bits is known. Useful for generic programming.
<boost/integer/integer_mask.hpp>

documentation
Templates for the selection of integer masks, single or lowest group, based on the number of bits. Use to select a particular mask when the bit position(s) are based on a compile-time variable. Useful for generic programming.
<boost/integer/static_log2.hpp>

documentation
Template for finding the highest power of two in a number. Use to find the bit-size/range based on a maximum value. Useful for generic programming.
<boost/integer/static_min_max.hpp>

documentation
Templates for finding the extrema of two numbers. Use to find a bound based on a minimum or maximum value. Useful for generic programming.

Rationale

The organization of boost integer headers and classes is designed to take advantage of <stdint.h> types from the 1999 C standard without resorting to undefined behavior in terms of the 1998 C++ standard. The header <boost/cstdint.hpp> makes the standard integer types safely available in namespace boost without placing any names in namespace std. As always, the intension is to complement rather than compete with the C++ Standard Library. Should some future C++ standard include <stdint.h> and <cstdint>, then <boost/cstdint.hpp> will continue to function, but will become redundant and may be safely deprecated.

Because these are boost headers, their names conform to boost header naming conventions rather than C++ Standard Library header naming conventions.

Caveat emptor

As an implementation artifact, certain C <limits.h> macro names may possibly be visible to users of <boost/cstdint.hpp>. Don't use these macros; they are not part of any Boost-specified interface. Use boost::integer_traits<> or std::numeric_limits<> instead.

As another implementation artifact, certain C <stdint.h> typedef names may possibly be visible in the global namespace to users of <boost/cstdint.hpp>. Don't use these names, they are not part of any Boost-specified interface. Use the respective names in namespace boost instead.


Revised: 03 Oct 2001