Traits技法在函数模板中的使用

Traits:类型的else-if-then机制

简单来说,traits的重要性就在于能在编译时间(compile-time)通过类型(type)确定函数的调用,尽管我们往往习惯于在运行时间(run-time)通过值(value)来确定【traits是类型驱动(type-driven),依照具体的类型产生相应的模板类或模板函数,而比如多态则是在运行时间通过值来确定调用函数的,会付出性能上的代价】。更妙的是,traits能让您根据其产生环境(context)作出类型判定,使得代码更清晰可读,更易于维护,这正应了那句曾解决了软件工程界无数难题的名言──“extra level of indirection(额外的中间层)”。如果正确使用traits,我们在享受上述好处的同时,亦不必付出性能、安全及耦合性等方面的代价。

 

 

下面我们来看一下传说中的else-if-then 如下图所示

下面举一个函数模板的例子

 

 

现在就可以安全放心的使用FetchField函数了,如果还有别的类型,我们还可以特化处理。

参考C++VIEW

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值