Compartilhar via


typename

Em definições de modelo, typename fornece uma dica para o compilador de que um identificador desconhecido é um tipo. Em listas de parâmetros de modelo, ele é usado para especificar um parâmetro de tipo.

Sintaxe

typename identifier;

Comentários

A typename palavra-chave deve ser usada se um nome em uma definição de modelo for um nome qualificado que depende de um argumento de modelo, é opcional se o nome qualificado não for dependente. Para mais informações, consulte Resolução de modelos e nomes.

typename pode ser usado por qualquer tipo em qualquer lugar em uma declaração ou definição de modelo. Ele não é permitido na lista de classes base, a menos que como um argumento de modelo para uma classe base de modelo.

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

A palavra-chave typename também pode ser usada no lugar de class em listas de parâmetros do modelo. Por exemplo, as instruções a seguir são semanticamente equivalentes:

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

Exemplo

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

int main()
{
}

Confira também

Modelos
Palavras-chave