1.从函数模板谈起
函数模板的类型推导机制是在c++98时代就有的,auto的类型推导机制与其基本一致,所以先理解函数模板类型推导。
函数模板可以用如下代码框架表示:
#template<typename T>void f(PT param); f(expr);
PT与T的不同之处在于PT相对于T可能有一些饰词(adornments),如const 和引用&。
对于模板类型T的推导是PT和expr共同作用的结果。下面分几种情况讨论类型推导的原则:
1)PT是一般的引用或指针
原则:
expr是一个引用(指针)类型,忽略其引用(指针)部分;
expr其他部分去匹配PT得到T的类型。 (匹配原则就是如果PT有const则expr的const忽略,PT无const
