[PATCH] [PR c++/85437] accept static_casted ptrmem in constexpr
Jason Merrill
jason@redhat.com
Tue Apr 24 21:46:00 GMT 2018
On Tue, Apr 24, 2018 at 12:31 PM, Nathan Sidwell <nathan@acm.org> wrote:
> On 04/23/2018 01:19 PM, Jason Merrill wrote:
>>
>> On Fri, Apr 20, 2018, 12:52 PM Nathan Sidwell <nathan@acm.org
>
>
>> I have to change convert_ptrmem to always
>> expand the constant (into an OFFSET_TYPE) so that
>> initializer_constant_valid_p (used by reduced_constant_expression_p)
>> doesn't get confused by a zero-adjusting conversion of a ptrmem_cst.
>>
>>
>> Hmm, I'm nervous about this change. Maybe teach r_c_e_p to handle this
>> case properly?
>
>
> Here's an updated patch. We keep convert_ptrmem unchanged. I didn't need
> to teach RCEP anything new, fortunately. In cxx_eval_constant_expression I
> call cplus_expand_constant on the cases that we previously complained were
> reinterpret_casts. This does seem somewhat ugly though.
Well, in such a static_cast we are no longer referring to a member of
the class type, so abandoning the more symbolic PTRMEM_CST seems
reasonable.
The patch looks good to me.
Jason
More information about the Gcc-patches
mailing list