2013/2/5 Christian Henning <chhenning@gmail.com>
Hi there,

is there a general template for calculating the max value by the
number of bits. GIL right now uses the following template:

template <int K>
struct unsigned_integral_max_value<packed_channel_value<K> >
    : public mpl::integral_c<typename
packed_channel_value<K>::integer_t, (1<<K)-1> {};

This code gives me some compiler errors with clang 3.2. for K = 31,
for instance. Ideally I would like to take K up to 64.

A small fix gets me up to K = 63

template <int K>
struct unsigned_integral_max_value<packed_channel_value<K> >
    : public mpl::integral_c<typename
packed_channel_value<K>::integer_t, (uint64_t(1)<<K)-1> {};


Is there a better way in boost?

Try boost::low_bits_mask_t
http://tinyurl.com/bcy22xf
 

HTH