我希望能够在编译时计算阶乘。我已经找到了一些解决方案,但我想知道是否有其他方法来解决这个问题,而不使用enum
。以下是使用enum
的解决方案。
#include <iostream>
template <int n>
struct fact
{
enum{value = n*fact<n-1>::value};
};
template<>
struct fact<1>
{
enum{value = 1};
};
int main()
{
std::cout << fact<10>::value;
}
如果没有其他解决方案,请说明为什么必须使用enum
。