[basic.contract.eval] A note becomes incorrect after adopting P3471R4
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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