On 01/05/2010 07:58 PM, Joshua Haberman wrote:
> Andrew Haley <aph <at> redhat.com> writes:
>> but
>>
>>  (union u*)&i
>>
>> is not a legal lvalue expression because the dereference is undefined
>> behaviour.
> 
> Your example does not contain a dereference.
> 
>> You may only dereference a pointer as permitted by 6.3.2.3.
> 
> 6.3.2.3 does not mention dereferencing at all; it only addresses pointer
> conversion.  Dereferencing is defined in 6.5.3.2.
> 
> But let me ask you this.  What do you think 6.5 paragraph 7 means?  For
> example, are you also of the opinion that this is illegal?
> 
>   int i;
>   unsigned int *pui = (unsigned int*)&i;
>   unsigned int ui = *pui;

That's covered by 6.3.2.3 Para 2.

Andrew.

Reply via email to