Consider a class Foo of which foo is an instance.
Foo has a function calculate() that changes an internal member for which watermark() is the "getter", and returns something with the same type as that internal member.
Is the expression
foo.calculate() != foo.watermark()
well-defined. That is, must calculate() happen before watermark() is called?
In order words, is the evaluation order strictly foo.calculate(), followed by foo.watermark() followed by !=?
 
     
     
    