template元编程初识

今天在阅读effective c++这本书的时候,接触到了TMP即模板元编程这个知识点,真心觉得发现了新大陆一样。
TMP是编写template-based C++程序并执行于编译器的过程,它可以将程序的执行从运行期转移到编译期,也就是说,编译完成之后,即可得到你想要的结果!很多传统编程做不到的事情,只有TMP可以实现,而且本来运行期才能发现的错误,也可以提前在编译期就被发现,TMP的发展,将是C++的发展新动力。
TMP已经被证明是个图灵完全的机器,意思是它的威力大到足以计算任何事物。使用TMP你可以声明变量、执行循环、编写及调用函数。
夸了这么久,还是举个例子形象一点。。

temlate<unsigned n>
struct Factorial{
    enum{value=n*Factorial<n-1>::value};//递归
};
template<>
struct Factorial<0>{
    enum{value=1};//特殊情况
};

如此只要指涉Factorial<n>::value就可以得到n的阶乘值,是不是很酷!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值