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