// C++元编程示例:编译期计算阶乘
#include <iostream>
// 使用模板递归来实现编译期阶乘计算
template <int N>
struct Factorial {
static const int value = N * Factorial<N - 1>::value;
};
// 终止条件:当N为0时,返回1
template <>
struct Factorial<0> {
static const int value = 1;
};
int main() {
// 在编译期计算5的阶乘
std::cout << "Factorial of 5 is: " << Factorial<5>::value << std::endl;
return 0;
}
Factorial 是一个模板结构体,它使用递归来在编译期计算阶乘。Factorial<N> 的 value 成员是通过 N * Factorial<N-1>::value 计算出来的。Factorial<0> 进行了特化,直接将 value 设置为 1。Factorial<5>::value 在编译时就已经被计算出来了,而不是在运行时。这个例子展示了如何使用 C++ 模板进行元编程,即在编译期完成某些计算或生成代码。
下一篇:c++ ffmpeg
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站