有没有人在实际编码中使用模版元编程?

luciferisnotsatan luciferisnotsatan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是个简单的阶乘列子
template <typename int n>
struct Factorial
{
enum {val = Factorial<n-1>::val * n};
};


template <>
struct Factorial<0>
{
enum {val = 1};
};


int x = Factorial<10>::val;

在编译时就把值算出来了。
00411E0E  mov         dword ptr [x],375F00h 


相当于把编译器看成函数式语言的解释器,但和函数式语言不同,元编程实在编译时计算的,用不到运行时上
int y=0;
cin>>y;
Factorial<y>::val;


有没有人在平时的工作(数学计算,编写STL模版库这类工作除外)中用到这个技术,编写这类代码?

看了C++模板元编程前两章,现在不清楚这东西能不能和直到运行时才能知道具体数据的程序结合使用?比如,由用户输入阶乘数,然后计算。
...全文

相关推荐

评论 41
收藏 已收藏
分享
返回顶部
luciferisnotsatan
C++ 语言 65,214 成员 250,514 内容