Files
2025-10-25 03:02:53 +03:00

2.4 KiB

[stmt.contract.assert]

8 Statements [stmt]

8.9 Assertion statement [stmt.contract.assert]

assertion-statement:
contract_assert attribute-specifier-seqopt ( conditional-expression ) ;

1

#

An assertion-statement introduces a contract assertion ([basic.contract]).

The optional attribute-specifier-seq appertains to the introduced contract assertion.

2

#

The predicate ([basic.contract.general]) of an assertion-statement is its conditional-expression contextually converted to bool.

3

#

The evaluation of consecutive assertion-statements is an evaluation in sequence ([basic.contract.eval]) of the contract assertions introduced by those assertion-statements.

[Note 1:

A sequence of assertion-statements can thus be repeatedly evaluated as a group.

[Example 1: int f(int i){contract_assert(i == 0); // #1contract_assert(i >= 0); // #2return 0;}int g = f(0); // can evaluate #1, #2, #1, #2 — end example]

— end note]