|
Boost Users : |
From: Sami (randomaccessiterator_at_[hidden])
Date: 2007-01-22 13:59:41
Hi All,
This is a newbie mpl question, and here goes:
How can evaluate integer powers using mpl? Such as,
template < unsigned Pow, class Real > Real pow( Real r )
{
return <compile time r*r*r* ... r > ;
// the expression is compile time,
// not the result of course.
}
int main()
{
float k = pow<6>(3.14f);
return k; // just kidding :)
}
An also as a side question, is there a wrapper type container (or iterator?)
that holds a given constant value (or type)? Such as, the aptly named
"constant_wrapper" used below with fold algorithm,
using namespace boost::mpl;
const unsigned SIZE = 5;
typedef fold <
constant_wrapper< int_<-3>, SIZE>
, int_<0>
, plus<_,_>
>::type number;
BOOST_STATIC_ASSERT( number::value == -3*SIZE );
Thanks a lot
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net