c++ - Is f(++i, ++i) undefined? -
i seem recall in c++11, made changes sequencing behaviour , i++ , ++i have different sequencing requirements.
is f(++i, ++i)
still undefined behaviour? difference between f(i++, i++)
, f(++i, ++i)
?
it's undefined behaviour unless i
class type. c++11 1.9/15:
except noted, evaluations of operands of individual operators , of subexpressions of individual expressions unsequenced.
followed note clarify apply function arguments:
[ note: value computations , side effects associated different argument expressions unsequenced. —end note ]
your code modifies same object twice without sequencing, same paragraph:
if side effect on scalar object unsequenced relative either side effect on same scalar object or value computation using value of same scalar object, the behavior undefined.
if i
class type, ++
call function, , function calls sequenced respect each other. modifications of scalar objects indeterminately sequenced; there's no undefined behaviour, result unspecified.
Comments
Post a Comment