c++boost.gif (8819 bytes) Home Libraries People FAQ More

Boost Integer Library

Header / Docs Contents Use
<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.

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: 10 Feb 2001