A type declared within a class or struct is called a nested type. A type that is declared within a compilation unit or namespace is called a non-nested type. [Example: In the following example: class B is a nested type because it is declared within class A, and class A is a non-nested type because it is declared within a compilation unit. end example]