Boost logo

Boost :

From: Daryle Walker (darylew_at_[hidden])
Date: 2001-01-28 02:05:47

Is there or could there be a class template that can return the smallest
unsigned type for a given number of bits? I guess the interface could be

// Need much better names
namespace boost
    template < ::std::size_t L > class best_type;

// Can't exactly use this since we want 'L' values that are greater
// than the number of bits in "unsigned long" (or "unsigned long long")
// to fail.
template < std::size_t L >
    typedef typename best_type<L + 1>::type type;

    static bool const needs_masking = true;
    //static std::size_t const padding = best_type<L + 1>::padding + 1;


// No assumptions of the "standard" computer platforms is used, so
// an "8" is not hard-coded. (The C++ std mandates the number is
// at least eight, though.)
template <>
boost::best_type< std::numeric_limits<unsigned char>::digits >
    typedef unsigned char type;

    static bool const needs_masking = false;
    //static std::size_t const padding = 0;

// Question: should best_type<1> use "unsigned char" or "bool"?
// Question: what should happen for best_type<0>?

Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com

Boost list run by bdawes at, gregod at, cpdaniel at, john at