
"David Abrahams" <dave@boost-consulting.com> wrote in message news:uvfmsyz69.fsf@boost-consulting.com...
"Andy Little" <andy@servocomm.freeserve.co.uk> writes:
Hi, Following preliminary ok of "pow" mpl metafunction by Alexey Gurtovoy... Here are some basic headers for mpl functions pow_, root_ and 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 ... :-) template< typename Coherent_exponent , typename Incoherent_mux, typename Tag typename Exponent > struct pow_< pqs::q_unit< Coherent_exponent, Incoherent_mux, Tag >, Exponent >{ // incoherent and tags removed // multiply exponents typedef typename pqs::q_unit< typename multiplies< Coherent_exponent, Exponent >::type, 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. regards Andy Little