Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-02-25 11:52:03


FWIW in

http://groups.yahoo.com/group/boost/message/21721

I propose that

"The result of a compile-time function is obtained using function<A1, ...,
An>::type.

For convenience, some compile-time functions return compile-time values, as
well, obtained via function<A1, ..., An>::value."

IOW is_const would look like:

template<class T> struct is_const
{
  static const bool value = false;
  typedef ct_value<bool, false> type;
};

template<> struct is_const<T const>
{
  static const bool value = true;
  typedef ct_value<bool, true> type;
};

where ct_value is

template<class T, T v> struct ct_value
{
  static const T value = v;
};

"The metaprogramming library operates on types only. Compile-time values are
wrapped in ct_value<Type, Value>.

(Rationale: practice shows that attempting to cover compile-time values as
well results in excessive duplication. ct_value<> is chosen to avoid having
separate bool_t, int_t, uint_t, size_t_t and so on.)"


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk