The STL is a critical piece of the C++ world, most implementations derive from the initial efforts by Stepanov and Musser.
My question is given the criticality of the co
About the variables names, library implementors must use "crazy" naming conventions, such as names starting with an underscore followed by an uppercase letter, because such names are reserved for them. They cannot use "normal" names, because those may have been redefined by a user macro.
Section 17.6.3.3.2 "Global names" §1 states:
Certain sets of names and function signatures are always reserved to the implementation:
Each name that contains a double underscore or begins with an underscore followed by an uppercase letter is reserved to the implementation for any use.
Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.
(Note that these rules forbid header guards like __MY_FILE_H which I have seen quite often.)