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