In C++23, discarded statements and if consteval statements can nest
arbitrarily. To support that, we
keep track of whether the parent of the current evaluation context
is discarded or immediate.
This is done at the construction of an evaluation context
to improve performance.
No real benefit to making these bit-fields, and it'd be good to add some documentation about why the fields exist.