1.从函数模板谈起

函数模板的类型推导机制是在c++98时代就有的,auto的类型推导机制与其基本一致,所以先理解函数模板类型推导。

函数模板可以用如下代码框架表示:

#template<typename T>void f(PT param);

f(expr);

PT与T的不同之处在于PT相对于T可能有一些饰词(adornments),如const 和引用&。

对于模板类型T的推导是PT和expr共同作用的结果。下面分几种情况讨论类型推导的原则:

1)PT是一般的引用或指针

原则: