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.
C++23 has a nice feature,
[[assume(expr)]]
that allows giving compilers hints about invariants that must be satisfied at a specific point -- see https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1774r8.pdf. I wanted to see whether we can perhaps use that in the "NO-DEBUG" definition ofAssert
to give the compiler a hint, but it turns out that I do not have access to a compiler that supports any of the various incompatible ways compilers have provided this sort of feature pre-C++23.Let's see what the testers have to say. I would be curious to see what happens if anyone looks at the release mode library size without and with this patch, with a compiler that supports any of this.
(Separate question: We could of course also add the assumption after the
if
in the DEBUG version of theAssert
macro. Opinions?)