On 11/15/2015 01:57 PM, Andrei Alexandrescu wrote:
On 11/14/2015 06:48 PM, Timon Gehr wrote:
On 11/15/2015 12:20 AM, Andrei Alexandrescu wrote:
On 11/14/15 5:49 PM, Timon Gehr wrote:
It's supposed to guarantee that the given reference is not used to
transitively mutate the object. The casts violate this.

I think that semantics needs to change. Specifically, either we add a
@mutable attribute (which means const doesn't apply to fields marked as
such and immutable objects cannot be created); or we could just decree
that if a const object originates in a mutable object, casts should be
well-defined. -- Andrei


There's also this closely related situation:
https://issues.dlang.org/show_bug.cgi?id=9149

(I.e. delegates with mutable context pointer can be implicitly converted
to delegates with const context pointer, but when type checking the
delegate, a mutable context pointer is assumed.)

That's a hole straight into the middle of things. We need to fix that.
-- Andrei

Given your recent efforts to change the meaning of const, I think it is no longer as clear-cut as it was when I reported the bug. Those delegates can only mutate const objects that were constructed as mutable.

Reply via email to