typename
告知編譯器未知的識別項是一種類型。
typename identifier;
備註
請只在樣板定義中使用此關鍵字。
如果名稱是取決於樣板引數的限定名稱,則必須使用這個關鍵字,如果限定名稱不具相依性,則可以選擇性使用此關鍵字。 如需詳細資訊,請參閱範本和名稱解析。
typename 只可以由樣板宣告或定義中的任何類型使用。 除非是做為範本基底類別的樣板引數,否則不允許出現在基底類別清單中。
template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType> // typename OK.
{};
typename 關鍵字也可以在樣板參數清單的 class 位置中使用。 例如,以下為相同的陳述式:
template<class T1, class T2>...
template<typename T1, typename T2>...
範例
// typename.cpp
template<class T> class X
{
typename T::Y m_y; // treat Y as a type
};
int main()
{
}