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