A well-formed expression must conform to the grammar of the expression (as defined by the standard) and must comply with semantic rules, for example, not to use names that have not been declared, or not to update the name in the same way with a different meaning.
i = 0 X::i++
The expressions above are syntactically valid, but if i not declared or const or X not a namespace or class type, or X::i not declared or X::i does not support post-increment, then they do not satisfy the semantic requirements for a well-formed expression.
Q: What are the quality characteristics of a well-formed expression in C ++?
See paragraphs 1-15. You cannot reduce the whole C ++ language to a simple list.
source share