According to the C++ Primer 5th Ed by Stanley Lipp:
The standard also reserves a set of names for use in the standard library. The identifiers we define in our own programs may not contain two consecutive underscores, nor can an identifier begin with an underscore followed immediately by an uppercase letter. In addition, identifiers defined outside a function may not begin with an underscore.
All the following did compiled:
g++ -std=c++11 -o test test.cc
int _I=40;
int main() {
int __=10;
int _B=20;
}
I thought it shouldn't compile ..