$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Valentin Bonnard (Bonnard.V_at_[hidden])
Date: 2000-01-29 16:03:19
Dave Abrahams wrote:
> on 1/29/00 3:15 PM, Valentin Bonnard at Bonnard.V_at_[hidden] wrote:
>
> >> Basically, the idea is to overload all the typical operators
> >> (+, -, <, ==) for functor objects, and use Nico's composition
> >> library as the nodes in the expression tree. It's really not
> >> all that hard to do...
> >
> > How it is possible at all w/o typeof, which no compiler (not even
> > gcc) supports ?
> >
> > (and even then (w/ typeof) it would be ugly)
>
> I did some thinking, and I think you could do it with traits. Preparing
> types for use in operations isn't pretty, but the resulting usage would be
> ;)
template <typename T>
T value ();
typeof (value<T> () + value<U> ())
can of course be rewritten
template <>
struct plus_trait<T, U>
{
typedef whatever result_type;
};
typename plus_trait<T, U>::result_type
but if the user is required to define too much traits, then
he will simply define a named function to do the work
directly instead of using all the compose library.
(In complex cases, the named function will be clearer than
a bunch of combinators.)
-- Valentin Bonnard