Clean up of discarded-value expressions #3909
Closed
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.
This fixes a few issues with discarded-value expressions:
The current wording in [expr.prop] states that the temporary materialization conversion is applied to prvalues of
void
type, which makes discarded-value expressions ofvoid
type ill-formed (temporary materialization conversion requires a complete type). This fixes that, and ensures that all discarded-value expressions are evaluated (with the exception of unevaluated operands, of course)In [expr.static.cast], grammatical term expression is used where "operand" is much clearer, and more consistent with the rest of the wording. Additionally, specifying that the operand of the cast becomes a discarded-value expression is much clearer than saying "the expression", since it could be interpreted as saying that the whole expression is a discarded value expression (it shouldn't, since the operand itself needs to be temporarily materialized and evaluated). A note is also added to clarify that the conversion will be an expression of type
void
with no result.A
return
statement can sometimes have an operand of typevoid
, in which case it should be a discarded-value expression, but this is not specified.As for the editorial nature of this, the intent here is pretty clear :)
Will rename commit after edits :)