cplusplus / cplusplus/draft

[basic.contract.eval] A note becomes incorrect after adopting P3471R4

Open
#7,775 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TeX
Stars
221
Forks
813
Avg merge
16h 4m
Merged PRs (30d)
36

Description

[structure.specifications] p3.4.1 (added by P3471R4) says:

When invoking the function in a hardened implementation, prior to any other observable side effects of the function, one or more contract assertions whose predicates are as described in the hardened precondition are evaluated with a checking semantic. If any of these assertions is evaluated with a non-terminating semantic and the contract-violation handler returns, the program has undefined behavior.

This makes [basic.contract.eval] p14 (added by P2900R14) incorrect:

[Note 10 : If the contract-violation handler returns normally and the evaluation semantic is observe, control flow continues normally after the point of evaluation of the contract assertion. — end note]

We should either remove that note, or add “unless otherwise specified” to the beginning of that note and provide a link to [structure.specifications].

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with [basic.contract.eval] p14 and compare its note with [structure.specifications] p3.4.1, both identified in the issue. Resolve the contradiction by removing the note or adding the proposed exception and link, then verify that the resulting wording no longer conflicts with the hardened-implementation rule.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, tex
Domain
documentation
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.