typename
Informuje kompilator, że nieznany identyfikator jest typem.
typename identifier;
Uwagi
Używaj tego słowa kluczowego tylko w definicjach szablonów.
To słowo kluczowe musi być używane, jeżeli nazwa jest nazwą kwalifikowaną, zależną od argumentu szablonu; jest opcjonalne, jeśli nazwa kwalifikowana nie jest zależna.Aby uzyskać więcej informacji, zobacz Szablony i rozwiązywanie nazw.
Typename może być używana przez dowolny typ, w dowolnym miejscu deklaracji lub definicji szablonu.Deklaracja ta jest niedozwolona na liście klasy podstawowej, chyba że jako argument szablonu dla szablonu klasy podstawowej.
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 kluczowe typename może być również użyte zamiast słowa kluczowego class w szablonach list parametrów.Na przykład, poniższe instrukcje są identyczne:
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()
{
}