26 template<
int_t A,
int_t P,
class RetType =
long double>
28 static RetType value() {
29 return static_cast<RetType
>(A) * DPow<A,P-1,RetType>::value();
33 template<
int_t A,
class RetType>
34 struct DPow<A,1,RetType> {
35 static RetType value() {
return A; }
38 template<
int_t A,
class RetType>
39 struct DPow<A,0,RetType> {
40 static RetType value() {
return 1; }
44 template<
unsigned N,
unsigned P>
46 static const unsigned long value = IPow<N,P-1>::value * N;
51 static const unsigned long value = N;
56 static const unsigned long value = 1;
60 template<
class N,
int_t P>
62 typedef typename Mult<N,
typename IPowBig<N,P-1>::Result>::Result Result;