On 28/11/10 9:35 PM, Walter Bright wrote:
You can write memoized functions in D, you just can't label them as
const. You'll be relying on convention. Memoized (logically const)
functions are not verifiable in C++, either, so you are not technically
worse off.
I am technically worse off, just not from the compilers point of view.
I see your point about C++ const being a convention, but that doesn't
change the fact that it is still very useful, even if it useless for the
compiler. If I give some const object to a function:
void render(const GameObject&);
GameObject obj;
render(obj);
I can be sure that my object will come back unmodified. That it is the
primary purpose of const. Like you said, it allows you to reason about
your programs.
Yes, GameObject could be unreasonably mutilated by careless use of
mutable, but in practice that simply doesn't happen.