Obszar nazw elementu typedef nazw
Nazwy zadeklarowane za pomocą typedef zajmują ten sam obszar nazw jako inne identyfikatory (z wyjątkiem wyciągu etykiety).W związku z tym z wyjątkiem nie mogą używać tej samej identyfikatora jako nazwę poprzednio zadeklarowanych w deklaracji klasy typu.Rozważmy następujący przykład:
// typedef_names1.cpp
// C2377 expected
typedef unsigned long UL; // Declare a typedef name, UL.
int UL; // C2377: redefined.
Ukrywanie nazwy reguły, które odnoszą się do innych identyfikatorów również regulować widoczność zadeklarowane za pomocą nazwy typedef.W związku z tym poniższy przykład jest prawnych w języku 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