阶乘元规划

Factorial Meta Programming

本文关键字:元规划 阶乘      更新时间:2023-10-16

我们最近在大学上了一堂关于元编程的课程...... 所以我开始实现我自己的阶乘元代码......这就是结果。

template<int i>
struct fak{
fak<i-1> next;
int fakul = i * next.fakul;
};

template<>
struct fak<1>{
int fakul = 1;
};

同时,我们脚本的变体...

template<int i>
struct fakCool{
static const int fak = i * fakCool<i-1>::fak;
};
template<>
struct fakCool<1>{
static const int fak = 1;
};

看到脚本结果后,我的问题是...这两种尝试都是元编程吗?如果是这样,它们之间的区别在哪里?实现阶乘元的常用方法是什么?

第二个代码 :-

  • 不需要实例化对象。

  • 它在编译时进行计算。由于类中的静态成员(

第一个代码,需要一个对象被实例化,并在运行时进行计算。

因为元编程是关于使用代码生成代码,所以在编译完成后生成代码是没有用的,因为即使代码被生成,代码也无法编译。因此,所有元编程仅在编译时发生。第一个程序不是元编程。