 For languages that allow implicit conversion like C++, this may only be a partial solution solving the problem on call-by-copy, but not on call-by-reference.One can change the model so that instances of the classes represent constant values (i.e., they are immutable).This is the implementation that is used in purely functional programming.