## Name

operator keyword — Function call syntax for operators

## Synopsis

```               operator-function-id ::= operator op-symbol |
operator op-symbol < [template-arg-list] >
conversion-function-id ::= operator conversion-type-id
conversion-type-id ::= type-specifier-seq [conversion-declarator]
conversion-declarator ::= ptr-operator [conversion-declarator]
ptr-operator ::= * [cv-qualifier-seq] | & | [::] nested-name :: * [cv-qualifier-seq]```

The `operator` keyword converts an operator symbol into function notation. You can use the `operator` keyword when invoking an operator or when overloading an operator.

## Example

```int x =`operator`+(10, 32);
complex<double> c, d;
c.`operator`+=(d);
operator+=(c, d); // Same as above
bigint `operator`*(const bigint& a, const bigint* b);```

Table 12-1 lists the operator symbols (op-symbol) that can be overloaded. Alternative tokens (shown in parentheses) are interchangeable with their symbolic equivalents.

Table 12-1. Operator symbols that can be overloaded
 `delete` `/` `=` `%=` `<<=` `++` `delete [ ]` `%` `<` `^=` (`xor_eq`) `==` `--` `new` `^` (`xor`) `>` `&=` (`and_eq`) `!=` (`not_eq`) , `new [ ]` `&` (`bitand`) `+=` `|=` (`or_eq`) `<=` `->*` `+` `|` (`bitor`) `-=` `<<` `>=` `->` `-` `~` (`compl`) `*=` `>>` `&&` (`and`) `( )` `*` `!` (`not`) `/=` `>>=` `||` (`or`) `[ ]`

expression, identifier, `template`, type, Chapter 5