Repository navigation
Build the paper from the generated wording, and check it against the headers - #105
Merged
steve-downey merged 4 commits intoOct 19, 2026
Merged
Conversation
Remove the cost/buy metaphors and other stock phrasing, and trim
"not X, but Y" tails and repeated "idiom"/"precisely".
Drop everything that only served the reference implementation or a
pre-C++29 language floor: D10 no longer describes staying at C++20
behind a deleted-function-message fallback, the Beman-only detection
macro section (old D11) is gone, and the implementation notes at the
end of D12 are removed. Remaining decisions are renumbered D11 and D12.
Fix the dangling \nameref{chap:impl}, and add the [version.syn] edit
bumping __cpp_lib_expected and __cpp_lib_freestanding_expected,
following P2988's treatment of optional.
…aders `make papers` already regenerated the [expected] wording through specgen's depfile before building the paper. Without specgen on PATH it now warns and uses the checked-in fragments as they are, so the paper still builds anywhere; the fragments are not touched, so the warning repeats until specgen regenerates them. `make wording-check` regenerates into a scratch directory and compares the assembled expected.tex and each checked-in fragment, failing if the checked-in wording has drifted from the headers. The specgen invocation and the assembly are now shared definitions, so the check and the real rule cannot drift apart. The papers target also assembles expected-clean.tex, the clean wording for a working-draft pull request.
specgen now wraps each synopsis in `namespace std { ... }`, as the working
draft does, which reindents every synopsis line. It also honors the `\merge`
on the expected<void, E> destructor pair: the synopsis shows the single
`constexpr ~expected();` and the itemdescr drops the Constraints paragraph,
leaving the Effects and the triviality Remarks, matching the draft. Ignoring
whitespace, those are the only changes.
`make wording-check` passes against the regenerated files.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #104: this branch contains its two commits, so review from "Makefile improvement for paper" onward.
Changes to the paper and how it's built.
papers/Makefilenow assemblesexpected-clean.tex, the text for a working-draft pull request, from the specgen-generatedwording/expected.tex. Only the hand-written[expected.general]and[expected.syn]come fromexpected-new.tex, with their change markup stripped. A build started frompapers/delegates to the root makefile first, so the clean wording can't fall behind the headers.PATH,make papersnow warns and uses the checked-in fragments.make wording-checktarget. It regenerates the wording into a scratch directory and fails if the checked-in wording has drifted from the headers. It and the real rule share the specgen invocation and the assembly.namespace std { ... }, as in the working draft, which reindents every synopsis line. And theexpected<void, E>destructor pair is now merged into the singleconstexpr ~expected();the draft has, with its Effects and triviality Remarks.\nameref{chap:impl}is fixed, and there's a new[version.syn]edit bumping__cpp_lib_expectedand__cpp_lib_freestanding_expected, following P2988's treatment ofoptional.