【发布时间】:2011-06-26 01:12:34
【问题描述】:
template<unsigned int n>
struct Factorial {
enum { value = n * Factorial<n-1>::value};
};
template<>
struct Factorial<0> {
enum {value = 1};
};
int main() {
std::cout << Factorial<5>::value;
std::cout << Factorial<10>::value;
}
上面的程序在编译期间计算阶乘值。我想在编译时而不是在运行时使用 cout 打印阶乘值。我们如何在编译时打印阶乘值?
我正在使用 VS2009。
谢谢!
【问题讨论】:
-
为什么简单的事情要做复杂的事情?如果您只需要计算阶乘,编写一个常用程序(不带 TMP),编译并运行它。
-
我正在学习 TMP 的基础知识,想知道编译时的结果以确保逻辑正确
-
@user:TMP 基本上是一种在编译时计算常量的方法。您希望以哪种形式完成输出?在预处理器中为时过早(常量稍后计算),在“通常”编译步骤中,您只能使用
cout等输出(需要运行程序)。
标签: c++ templates compile-time