来自wiki的pow(power)模板实现

时间:2012-07-14 12:01:38

标签: c++ templates enums

  

可能重复:
  Template Metaprogramming - Difference Between Using Enum Hack and Static Const

请说明以下实施电源模板时使用的enum内容。

template<int B, int N>
struct Pow {
    // recursive call and recombination.
    enum{ value = B*Pow<B, N-1>::value };
};

template< int B >
struct Pow<B, 0> {
    // ''N == 0'' condition of termination.
    enum{ value = 1 };
};
int quartic_of_three = Pow<3, 4>::value;

我在维基百科上找到了它。在这种情况下,intenum之间是否存在差异?

1 个答案:

答案 0 :(得分:6)

如果您尝试使用static const int的地址,可能会有所不同。在这种情况下,编译器将为static const int生成存储。您无法获取enum的地址,编译器将永远不会为其生成存储空间。

另见Template Metaprogramming - Difference Between Using Enum Hack and Static Const