[C++ Patch] Fix 66243, silent cast of scoped enum

Nathan Sidwell nathan@acm.org
Mon May 25 20:29:00 GMT 2015


On 05/25/15 15:43, Jason Merrill wrote:
> On 05/24/2015 07:20 PM, Nathan Sidwell wrote:
>> -      else if (! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
>> +      else if (! INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P
>> +           (TREE_TYPE (value)))
>>          value = perform_implicit_conversion_flags
>>            (ENUM_UNDERLYING_TYPE (enumtype), value, tf_warning_or_error,
>>             LOOKUP_IMPLICIT | LOOKUP_NO_NARROWING);
>
> The change is fine, but I wonder why perform_implicit_conversion_flags was
> succeeding?  I would think it should fail.

It wasn't being executed.  The if condition is if *NOT* integral-or-enum.   The 
patch changes the check such that p_i_c_f is now executed for scoped enums  -- 
and emits an appropriate error.

nathan



More information about the Gcc-patches mailing list