[metaprogramming] 求一个数Num的N次方

[metaprogramming] 求一个数Num的N次方


 1
  template <   int  N,  int  Num  >
 2  class  PowN
 3  {
 4  public :
 5         enum
 6       {
 7            result  =  Num  *  PowN < -   1 , Num > ::result,
 8       };
 9  };
10 
11  template < int  Num >
12  class  PowN < 0 , Num >   //  注意这里的特化方式
13  {
14  public :
15          enum
16         {
17             result  =   1 ,
18         };
19  };
20 
21  //  test case: 求3的平方
22  int  main()
23  {
24      std::cout << " PowN<2, 3>::result " <<  PowN < 2 3 > ::result  <<  std::endl;
25     // 但是如果用变量作为模板参数的话,必须声明成常量
       const int n = 3;
       const int num = 10;

       std::cout << " PowN<n, num>::result " <<  PowN < n , num > ::result  <<  std::endl;

26        return   0 ;
27  }
28 

你可能感兴趣的:([metaprogramming] 求一个数Num的N次方)