C++ 模板元编程


当我们编写程序使用模板在编译时进行计算的时候,这就是模板元编程。

示例代码

#include <iostream>
using namespace std;

template<int n>struct power {
   enum { value = 4*power<n-1>::value };
};

template<>struct power<0> {
   enum { value = 1 };
};

int main() {
   cout <<”power is:”<< power<7>::value << endl;
   return 0;
}

输出

power is:16384

在上面的示例中,当编译器看到 power<7>::value,它尝试创建一个 power 的实例,其中参数为 7,结果证明也必须创建 power<6>,因为枚举常量值必须在编译时求值。对于 power<6>,编译器需要 power<5>,依此类推。最后,编译器使用 funStruct<1>::value,编译时递归终止。这就是模板元编程。

更新于:2019 年 7 月 30 日

237 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.