8 Functions

8.1 Syntax

function → attributes? function‑specifiers return‑type function‑group‑id parameter‑list (function‑body | ;)
function‑specifiers → (access | extern)*
return‑type → type‑expr
function‑group‑id → identifier | operator‑group‑id
parameter‑list → ( (parameter (, parameter)* )? )
parameter → type‑expr identifier
operator‑group‑id → operator ( << | >> | == | < | + | − | * | / | % | ^ | ! | () )
function‑body → compound‑statement
attributes → [ ( name‑value‑pair (, name‑value‑pair)* ) ]
name‑value‑pair → name = value
name → qualified‑id
value → qualified‑id | string‑literal | integer‑literal | boolean‑literal