|
150 | 150 | A declaration of an entity or \grammarterm{typedef-name} $X$ is |
151 | 151 | a redeclaration of $X$ |
152 | 152 | if another declaration of $X$ is reachable from it\iref{module.reach}; |
153 | | -otherwise it is a \defnadj{first}{declaration}. |
| 153 | +otherwise, it is a \defnadj{first}{declaration}. |
154 | 154 | A declaration may also have effects including: |
155 | 155 | \begin{itemize} |
156 | 156 | \item a static assertion\iref{dcl.pre}, |
|
895 | 895 | \grammarterm{handler}, or |
896 | 896 | contract assertion |
897 | 897 | (as described in the following subclauses of \ref{basic.scope}) |
898 | | -appearing in another scope which thereby contains $S$. |
| 898 | +appearing in another scope, which thereby contains $S$. |
899 | 899 | An \defnadj{enclosing}{scope} at a program point is any scope that contains it; |
900 | 900 | the smallest such scope is said to be the \defnadj{immediate}{scope} |
901 | 901 | at that point. |
|
4521 | 4521 | if \tcode{X} is |
4522 | 4522 | \begin{itemize} |
4523 | 4523 | \item |
4524 | | -a scalar type, or |
| 4524 | +a scalar type or |
4525 | 4525 | \item |
4526 | 4526 | a class type that |
4527 | 4527 | has at least one eligible copy or move constructor\iref{special}, |
|
7404 | 7404 | for any given evaluation of a contract assertion. |
7405 | 7405 | \begin{note} |
7406 | 7406 | The range and flexibility of available choices of |
7407 | | -evaluation semantics depends on the implementation, |
| 7407 | +evaluation semantics depends on the implementation |
7408 | 7408 | and need not allow all four evaluation semantics as possibilities. |
7409 | 7409 | The evaluation semantics can differ |
7410 | 7410 | for different evaluations of the same contract assertion, |
|
7440 | 7440 | To determine whether a predicate would evaluate |
7441 | 7441 | to \keyword{true} or \keyword{false}, |
7442 | 7442 | an alternative evaluation |
7443 | | -that produces the same value as the predicate, |
7444 | | -but has no side effects, |
| 7443 | +that produces the same value as the predicate |
| 7444 | +but has no side effects |
7445 | 7445 | can occur. |
7446 | 7446 | \begin{example} |
7447 | 7447 | \begin{codeblock} |
|
7452 | 7452 | pre(( s.g++, false )); // \#1 |
7453 | 7453 | void g() |
7454 | 7454 | { |
7455 | | - f(); // Increment of \tcode{s.g} might not occur, even if \#1 uses a checking semantic |
| 7455 | + f(); // Increment of \tcode{s.g} might not occur, even if \#1 uses a checking semantic. |
7456 | 7456 | } |
7457 | 7457 | \end{codeblock} |
7458 | 7458 | \end{example} |
|
7553 | 7553 | \tcode{std::terminate} or \tcode{std::abort} |
7554 | 7554 | without actually making a library call |
7555 | 7555 | is a conforming implementation of |
7556 | | -contract-terminating\iref{intro.abstract}. |
| 7556 | +contract-termination\iref{intro.abstract}. |
7557 | 7557 | \end{note} |
7558 | 7558 |
|
7559 | 7559 | \pnum |
|
7572 | 7572 | If a contract violation occurs |
7573 | 7573 | in a context that is not manifestly constant-evaluated |
7574 | 7574 | and the evaluation semantic is enforce or observe, |
7575 | | -the contract-violation handle\iref{basic.contract.handler} |
| 7575 | +the contract-violation handler\iref{basic.contract.handler} |
7576 | 7576 | is invoked with an lvalue referring to |
7577 | 7577 | an object \tcode{v} |
7578 | 7578 | of type \tcode{const std::contracts::contract_violation}\iref{support.contract.violation} |
|
7638 | 7638 | the enforce semantic provides the opportunity to |
7639 | 7639 | log information about the contract violation |
7640 | 7640 | before terminating the program |
7641 | | -or throw an exception to avoid termination, |
| 7641 | +or to throw an exception to avoid termination, |
7642 | 7642 | and the quick-enforce semantic is intended |
7643 | 7643 | to terminate the program as soon as possible |
7644 | 7644 | as well as |
|
0 commit comments