typename一共就兩種用法
①修飾模板參數(shù),說明它是一個類型.此時可以用class關(guān)鍵字來代替.
②修飾嵌套依賴類型名
關(guān)于第②點要說明如下:
1. 依賴類型名: 一個模板中的 依賴于一個模板參數(shù)的名字.
2. 嵌套依賴類型名: 嵌套在一個類內(nèi)部的一個依賴類型名
比如:
std::list<T>
首先,它是一個依賴于模板參數(shù)的類型,所以它是一個依賴類型名
其次,它也是一個嵌套在std內(nèi)部的類型,所以它是 嵌套依賴類型名,需要用typename來修飾.如下:
typename std::list<T> m_lstT;
記住:
在涉及到一個模板中的嵌套依賴類型名的任何時候,都必須把typename放在緊挨著它的前面