Previous: System-specific Predefined Macros, Up: Predefined Macros

#### 3.7.4 C++ Named Operators

In C++, there are eleven keywords which are simply alternate spellings of operators normally written with punctuation. These keywords are treated as such even in the preprocessor. They function as operators in ‘`#if`’, and they cannot be defined as macros or poisoned. In C, you can request that those keywords take their C++ meaning by including `iso646.h`. That header defines each one as a normal object-like macro expanding to the appropriate punctuator.

These are the named operators and their corresponding punctuators:

Named Operator | Punctuator
`and` | `&&`
`and_eq` | `&=`
`bitand` | `&`
`bitor` | `|`
`compl` | `~`
`not` | `!`
`not_eq` | `!=`
`or` | `||`
`or_eq` | `|=`
`xor` | `^`
`xor_eq` | `^=`