17、C++模板特性与未来扩展方向

C++模板特性与未来扩展方向

1. C++模板特性回顾

在C++模板机制中,全特化从一开始就是其组成部分。而函数模板重载和类模板部分特化则是后来才出现的。HP aC++编译器是首个实现函数模板重载的编译器,EDG的C++前端则是首个实现类模板部分特化的。

模板特化具有终止无限递归模板定义的能力,这一特性早已为人所知。例如,在某些情况下,模板特化可以避免无限递归,像之前提到的 List<T*> 示例。而Erwin Unruh可能是第一个注意到这一特性可以引出模板元编程概念的人,即利用模板实例化机制在编译时进行非平凡的计算。

目前,只有类模板可以进行部分特化,这主要是历史原因造成的。虽然也有可能为函数模板定义类似的部分特化机制,但函数模板重载的效果在某些方面与之相似,不过也存在一些细微差别。在查找模板时,对于类模板,首先只考虑主模板,之后再考虑特化版本以确定使用哪个实现;而对于重载的函数模板,需要将所有重载模板都纳入重载集合进行查找,它们可能来自不同的命名空间或类,这在一定程度上增加了意外重载模板名称的可能性。

另外,虽然可以设想允许类模板进行某种形式的重载,例如:

// invalid overloading of class templates 
template<typename T1, typename T2> class Pair; 
template<int N1, int N2> class Pair; 

但目前似乎并没有迫切的需求。

2. C++模板
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值