1.從函數模板談起

函數模板的類型推導機制是在c++98時代就有的,auto的類型推導機制與其基本一致,所以先理解函數模板類型推導。

函數模板可以用如下代碼框架表示:

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

f(expr);

PT與T的不同之處在于PT相對于T可能有一些飾詞(adornments),如const 和引用&。

對于模板類型T的推導是PT和expr共同作用的結果。下面分幾種情況討論類型推導的原則:

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

原則: