
Originally Posted by
christop
It seems to me that order of operation/precedence is being confused with order of evaluation. C++ clearly defines precedence but leaves order of evaulation up to the implementation in a lot of cases. So something as simple as int a = *p++; could be evaluated as if it were written as either int *tmp = p; ++p; int a = *tmp; or as int a = *p; ++p; (there is no externally visible difference between the two). Even things like the order that function call arguments are evaluated is implementation-defined.
But something like Object a = *p++;, which overloads operator*, surely must be evaluated as if it were written as Object *tmp = p; ++p; Object a = *tmp;, right? Or does C++ leave that implementation-defined as well?