An object has ValueSemantics when it can be treated as a single value. In CeePlusPlus this means implementing a copy constructor and an assignment operator in such a way that when a new or existing instance is set equal to some other instance the new instance will be equivalent to the old one without acting as an alias to it.
You can give the object a ValueInterface which guarantees that the results of its operations never change, even if the underlying object does change.
See ValueObject.