1.從函數(shù)模板談起
函數(shù)模板的類型推導(dǎo)機制是在c++98時代就有的,auto的類型推導(dǎo)機制與其基本一致,所以先理解函數(shù)模板類型推導(dǎo)。
函數(shù)模板可以用如下代碼框架表示:
#template<typename T>void f(PT param); f(expr);
PT與T的不同之處在于PT相對于T可能有一些飾詞(adornments),如const 和引用&。
對于模板類型T的推導(dǎo)是PT和expr共同作用的結(jié)果。下面分幾種情況討論類型推導(dǎo)的原則:
1)PT是一般的引用或指針
原則:
expr是一個引用(指針)類型,忽略其引用(指針)部分;
expr其他部分去匹配PT得到T的類型。 (匹配原則就是如果PT有const則expr的const忽略,PT無const