------- Comment #12 from redi at gcc dot gnu dot org  2010-08-29 20:50 -------
(In reply to comment #10)
> 
> However you beg the question because you assume that "evaluation of operands"
> means "evaluation of rvalues derived from the operands".

I assume nothing of the sort.

> It does not; it means
> evaluation of an lvalue (i.e. a reference)

Of course it means an lvalue, but that does not imply a reference.  If you read
Clause 5 you'll see that the requirements on operands are in terms of lvalues,
rvalues etc. and not references.  

You're still assuming that invocation of a builtin operator results in a
function call, and reasoning in terms of the requirements of a function call.

5p2 makes it clear that the requirements on operands of builtin operators are
different to the requirements on function calls. If that was not the case, why
would the standard say that replacing a builtin operator with a user-defined
oeprator uses the requirements of a function call?

> and an rvalue respectively, because
> otherwise the assignment would not have an lvalue to assign to. Hence the
> function f() must be called before "|=" (the assignment) is performed.

Yes, f() is called before the assignment, but it is indeterminately sequenced
w.r.t the evaluation of sz.b


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45437

Reply via email to