|
Boost : |
From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2003-01-07 19:22:43
Hi everybody,
the attached files contain a bunch of trivial stuff related to
integral types that I need in a lot of situations. Any interest for
inclusion into boost? Here's a summary:
1. max_of<T> and min_of<T>:
give the maximum and minimum value of any integral type as
an integral constant expression; care is taken so that
max_of<T>::value [min_of<T>::value]
has the same type of the corresponding climits constant (CHAR_MAX,
INT_MAX, etc.), i.e. the type to which an expression of type T
is converted according to integral promotions.
2. promotes_to<T>:
gives the type which the integral type T promotes to
3. has_sign<T>:
simply defined as
template <typename T>
struct has_sign {
static const bool value = min_of<T>::value < 0;
};
Tells whether T is able to represent any negative value,
regardless of whether the C++ standard calls it a signed
integral type or not.
4. precision<T>:
gives the precision of an integral type, which is the
number of bits it uses to represent values, excluding any
sign and padding bits.
5. width<T>:
same as precision, but including any sign bit
6. has_padding<T>:
says whether T has padding or not.
The file intconst_log2.hpp is just used for the implementation of the
remaining stuff.
Genny.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk