On Sunday, 28 December 2014 at 20:25:59 UTC, bearophile wrote:
John Colvin:

I guess there are cases where it's not easily catchable:

void foo(int* p0, int* p1)
{
   (*p0)++ = (*p1)++;
}

what happens when p0 == p1?

The undefined code can be found statically, the run-time values are irrelevant.

Bye,
bearophile

It depends what you mean by "undefined". Sure, the order of those 2 ++ operations is undefined in all cases, but it doesn't lead to undefined *behaviour* unless the pointers are the same.

There's loads of code out there that has undefined order of operations but is invariant w.r.t. said ordering and is therefore correct.

Reply via email to