Peter Alexander wrote:
Just to clarify my position
- I *do not* want to copy C++'s const system.
- D style immutability is useful.
- C++ style logical const is also useful.
- I think they can both work side by side by introducing a new level of
const and the mutable keyword.
Once mutable is introduced, the const attribute becomes no longer useful. You
(and the compiler) can no longer look at a function signature and reason about
the const-ness behavior. If a new attribute is introduced, "newlevel", you
really cannot reason about the behavior at all.
I wish to emphasize that the compiler cannot provide any verification that
logical constness is indeed happening. (It cannot do it in C++, either, the
notion that the C++ type system supports logical constness is incorrect.)