Espaço para nome de typedef nomes
Nomes declarados usando typedef ocupam o mesmo espaço de nome como outros identificadores (exceto rótulos de instrução).Portanto, não podem usar o mesmo identificador como um nome declarado anteriormente, exceto em uma declaração de tipo de classe.Considere o exemplo a seguir:
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
As regras de ocultação de nome que pertencem a outros identificadores também determinam a visibilidade dos nomes declarados usando typedef.Portanto, o exemplo a seguir é legal em C++:
// typedef_names2.cpp
typedef unsigned long UL; // Declare a typedef name, UL
int main()
{
unsigned int UL; // Redeclaration hides typedef name
}
// typedef UL back in scope