typename

W definicjach szablonów zawiera wskazówkę dla kompilatora, typename że nieznany identyfikator jest typem. Na listach parametrów szablonu służy do określania parametru typu.

Składnia

typename identifier;

Uwagi

Słowo typename kluczowe musi być używane, jeśli nazwa w definicji szablonu jest kwalifikowaną nazwą zależną od argumentu szablonu. Jest to opcjonalne, jeśli nazwa kwalifikowana nie jest zależna. Aby uzyskać więcej informacji, zobacz Szablony i rozpoznawanie nazw.

typename Może być używany przez dowolny typ w dowolnym miejscu w deklaracji lub definicji szablonu. Nie jest to dozwolone na liście klas bazowych, chyba że jako argument szablonu do klasy bazowej szablonu.

template <class T>
class C1 : typename T::InnerType // Error - typename not allowed.
{};
template <class T>
class C2 : A<typename T::InnerType>  // typename OK.
{};

Słowo typename kluczowe może być również używane zamiast na listach parametrów class szablonu. Na przykład następujące instrukcje są semantycznie równoważne:

template<class T1, class T2>...
template<typename T1, typename T2>...

Przykład

// typename.cpp
template<class T> class X
{
   typename T::Y m_y;   // treat Y as a type
};

int main()
{
}

Zobacz też

Szablony
Słowa kluczowe