On 09/03/2014 06:53 AM, Paolo Carlini wrote:
The issue, AFAICS, boils down to the difference itself between
cxx_eval_outermost_constant_expr and cxx_eval_constant_expression:
changing constant_value_1 means that in principle all the calls of the
latter (for VAR_DECLs) are impacted.

Oh, right.

Thus, for example, for the call at
the beginning of cxx_eval_component_reference:

struct A
{
   int i;
   mutable int j;
};

constexpr A a = { 0, 1 };
constexpr int i = a.i;

how do we avoid emitting a wrong error for the a of a.i?

Perhaps when we get the value of a we replace the mutable initializer with a magic "mutable" value and then make sure what we return from _outermost_ doesn't contain it?

Jason

Reply via email to