I realized that when trying to define public access typedefs and enumerations inside a class definition, I need to place them first, if I want my private members to access them. So invariably all classes that define them need to start their definition with a public access label.

Is this implementation specific, or do classes definitions follow the same rules for variable lifetime? Until now I thought that the placement of access labels was purely a matter of taste and any class definition was read by the compiler as a block, not sequentially.