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

    網(wǎng)友評論