$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: scleary_at_[hidden]
Date: 2001-08-25 08:24:41
>  >   int_traits::is_zero(x) -- returns true if x == 0
>  >   int_traits::is_positive(x) -- returns true if x >= 0
>  >   int_traits::is_odd(x) -- returns true if (x % 2) == 1
> 
>  I do net yet understand completely what you mean.
Just something simple, like:
namespace int_traits {
  template <typename T>
  bool is_zero(const T & x) { return (x == 0); }
  bool is_zero(const unlimited & x) { return x.is_zero(); }
  // same for others
}
then usage is:
unlimited i;
int j;
int_traits::is_zero(i); // equivalent to i.is_zero()
int_traits::is_zero(j); // equivalent to j == 0
Note that this technique does not follow the traditional application 
of 'traits' -- that's why 'traits' was in quotes.  Traditional traits 
only provide properties of a type; these 'traits' add 'type 
methods'.  Similar techniques have been done before: in the Standard, 
char_traits provides both properties and methods.
        -Steve