contract-attribute-specifier: [ [ expects contract-level : conditional-expression ] ] [ [ ensures contract-level identifier : conditional-expression ] ] [ [ assert contract-level : conditional-expression ] ]
contract-level: default audit axiom
int f(char * c) [[ensures res: res > 0 && c != nullptr]]; int g(double * p) [[ensures audit res: res != 0 && p != nullptr && *p <= 0.0]];— end example
void push(int x, queue & q) [[expects: !q.full()]] [[ensures: !q.empty()]] { /* ... */ [[assert: q.is_valid()]]; /* ... */ } int min = -42; constexpr int max = 42; constexpr int g(int x) [[expects: min <= x]] // error [[expects: x < max]] // OK { /* ... */ [[assert: 2*x < max]]; [[assert: ++min > 0]]; // undefined behavior /* ... */ }— end example