Spazio dei nomi dei nomi typedef
Nomi dichiarati utilizzando typedef occupare lo stesso spazio dei nomi di altri identificatori (eccetto le etichette delle istruzioni).Di conseguenza, non possono utilizzare lo stesso identificatore come un nome dichiarato in precedenza, tranne in una dichiarazione di classe-tipo.Si consideri l'esempio seguente:
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
Le regole nome-nascondentesi che riguardano altri identificatori anche per la visibilità dei nomi dichiarati utilizzando typedef.Di conseguenza, l'esempio seguente è valido in 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