On 2010-01-05 15:30:11 +0000, Joseph S. Myers wrote:
> On Tue, 5 Jan 2010, Vincent Lefevre wrote:
> 
> > On 2010-01-05 10:31:13 +0000, Andrew Haley wrote:
> > > "An object shall have its stored value accessed only by an lvalue
> > > expression that has one of the following types:
> > > 
> > > but
> > > 
> > >  (union u*)&i
> > > 
> > > is not a legal lvalue expression because the dereference is undefined
> > > behaviour.  You may only dereference a pointer as permitted by 6.3.2.3.
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > For the same reason, (char *) &i could not be dereferenced, and this
> > would break a lot of code!
> 
> No, read 6.3.2.3 again.  Specifically, where it says "When a pointer to an 
> object is converted to a pointer to a character type, the result points to 
> the lowest addressed byte of the object. Successive increments of the 
> result, up to the size of the object, yield pointers to the remaining 
> bytes of the object.".

6.3.2.3 says that one can *convert* the pointer, but not that one can
*dereference* it.

-- 
Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)

Reply via email to