3 Expressions

3.1 Syntax

expression disjunction
disjunction conjunction (|| conjunction)*
conjunction bit-or (&& bit-or)*
bit-or bit-xor (| bit-xor)*
bit-xor bit-and (^ bit-and)*
bit-and equality (& equality)*
equality relational ((== | !=) relational)*
relational shift ((< | > | <= | >=) shift)* | shift ( is type-expr | as type-expr )*
shift additive ((<< | >>) additive)*
additive multiplicative ((+ | ) multiplicative)*
multiplicative prefix ((* | / | %) prefix)*
prefix (( | + | ! | ~) prefix) ) | postfix
postfix primary (. identifier | [ expression ] | ( argument-list ) )*
primary ( expression ) | literal | basic‑type | template‑id | identifier | this | base | default‑expr | cast‑expr | new‑expr
default-expr default ( type‑expr )
cast-expr cast < type‑expr > ( expression )
new-expr new type-expr (( argument-list ))?
argument-list expression-list?
expression-list argument (, argument)*
argument ref expression | expression
constant‑expression expression