к примеру, чтобы int my__var = 1; не компилировалось.
А почему не должно? Я помню, что идентификаторы, начинающиеся с двух подчеркиваний или с подчеркивания и большой буквы, зарезервированы, а тут в чем проблема?
Идентификаторы с двойным подчеркиванием тоже зарезервированы.
Из
Final Committee Draft (FCD) of the C++0x standardЦитата:
17 Library introduction
...
17.6.3 Constraints on programs
...
17.6.3.3 Reserved names
...
17.6.3.3.2 Global names [global.names]
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 (2.12) is reserved to the implementation for any use.
В более ранних стандартах это ограничение тоже, насколько я помню, присутствует.