This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Semantics of MODIFY_EXPR with CONSTRUCTOR rhs


On Mon, Aug 02, 2004 at 10:15:02AM +0200, Gabriel Dos Reis wrote:
> | >   r = {.x=5, .y=8};
> | >   r = {.x=1, .y=r.x};
...
> My understanding is that it is a behvaiour unspecified by the C99
> standard, 6.7.8 Initialization:
> 
>        [#23] The order in which any side effects  occur  among  the
>        initialization list expressions is unspecified.130)

Irrelevant.  In C99, constructors can happen in only two places:

  (1) The declaration.  In which case we *can't* have assigned
      to the object before, so self-reference can only be erroneous.

  (2) A compound literal.  In which case we explicitly are creating
      a temporary object, which means that the entire rhs *must* be
      constructed first.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]