L'espace de noms des noms de typedef
Les noms déclarés à l'aide de typedef occupent le même espace de noms que d'autres identificateurs (à l'exception de les noms d'instructions).Par conséquent, ils ne peuvent pas utiliser le même identificateur comme un nom déclaré précédemment, sauf dans une déclaration de classe-type.Prenons l'exemple suivant :
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
Les règles nom-masquantes qui se rapportent à d'autres identificateurs également régissent la visibilité des noms déclarés à l'aide de typedef.Par conséquent, l'exemple suivant est autorisé en 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