Boost logo

Boost :

From: Andy Little (andy_at_[hidden])
Date: 2004-01-31 11:38:52

"David Abrahams" <dave_at_[hidden]> wrote in message
> "Andy Little" <andy_at_[hidden]> writes:
> > Hi,
> > Following preliminary ok of "pow" mpl metafunction by Alexey
> > Gurtovoy... Here are some basic headers for mpl functions pow_, root_
> > reciprocal.
> >
> > useage:
> > boost::mpl::pow_<type,exponent>::type
> > boost::mpl::root_<type,exponent>::type
> > boost::mpl::reciprocal<type>::type
> These aren't very interesting metafunctions, since they're all
> equivalent to mpl::always<implementation_defined> ;-)

Oops sorry perhaps read 'undefined',' user defined' not implementation
defined :-)
Not to stay that way just havent had time to write some simple examples.
(pow_<int_,int_> should be easy!) Could use one of my own but doesnt mean
much to many -->

The problem is I have specialised plus, minus, multiplies etc. for use in
'expression templates'. (think is right term).
However it would be odd to put these in separate namespace. OTOH I could
derive all from mpl in other namespace, but I didnt want to be 'ad-hoc'. ;-)
But maybe that is how mpl functions should be used?. Was waiting for the
book ... :-)

        typename Coherent_exponent ,
        typename Incoherent_mux,
        typename Tag
        typename Exponent
    struct pow_<
>{ // incoherent and tags removed
        // multiply exponents
        typedef typename pqs::q_unit<
            typename multiplies<
            typename Incoherent_mux::zero_type,
            typename Tag::default_type
>::type type;

> What is the reason for the trailing underscores?

In case of pow_ to stop it name-clashing with pow(x,y), if 'using
boost::mpl' ,using std. In case of root_ for similarity with pow.
In case of reciprocal the underscore is very small. Thought 'power' might
also clash with other names.
But any suggestions appreciated.

Andy Little

Boost list run by bdawes at, gregod at, cpdaniel at, john at