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