Exceptional C++ Style之7

第7条 为什么不特化函数模板
       有一个概念,我以前对偏特化不是特别清晰明了,模板分成类模板和函数模板,我原来是一致看待的。但是事实上,函数模板能不能偏特化,只能重载,每个看个偏特化的函数模板其实都是重载。
       函数模板并不参加重载决议,只有当主模板被选中,才有可能去选择某个特化版本。
而且在选择主模板的时候,编译器并不关心特化模板。所以,如果你确实需要某个特化版本,那么写成普通函数参与重载决议就可以了。重载决议是编译器的消耗,对运行期没有影响。应当避免函数模板的特化,因为普通函数就可以替代。
       如果你需要提供接口给用户来具体实现,那么使用Sutter的办法。函数模板写成一个孤立的、永远不被特化的版本。其实现包含在一个包含静态函数的类模板中。这样特化、偏特化都没有问题。
       记住,特化模板函数不是一个好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值