ISO/IEC C++ N4527
2.10 Identifiers [lex.name]
(3.1) — Each identifier that contains a double underscore __ or begins with an underscore followed by an
uppercase letter is reserved to the implementation for any use.
17.6.4.3 Reserved names [reserved.names]
2 If a program declares or defines a name in a context where it is reserved, other than as explicitly allowed by
this Clause, its behavior is undefined.