On 11/30/2010 02:35 AM, Walter Bright wrote:
Fawzi Mohamed wrote:
logical const is useful for lazy functions and memoization, and if
implemented correctly it is perfectly safe.
As I said in an older discussions, to have it with the current system
all that is needed is some guarantees that the compiler will not
disallow "unsafe" changes (by moving to read only memory for
example)in some cases.
For example casted mutable types, so that casting to mutable works.
D allows escape from the type system, but the programmer who does that
loses the guarantees, and it's up to him to ensure that the result works.
String literals, for example, are going to often wind up in read only
memory.
The problem is that logical const has many perfectly valid use cases.
You cannot simply tell people: "Don't use it. It is a fraud". They will
still be using casts or not using D. As casting away const is undefined
behavior in D, the outcome will be every second non-trivial D program
relying on undefined behavior.