せずに私はコンパイル時に階乗を計算します。私はこの問題を解決する方法を見つけましたが、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
が必須である理由を説明してください。彼らはコンパイル時に解決されると仮定しているため
http://en.wikipedia.org/wiki/Template_metaprogramming、それは[サンプル](httpです。 org/wiki/Template_metaprogramming#Compile-time_class_generation) – sehe