Persistent list
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Sun Nov 15 06:42:23 PST 2015
On Sunday, 15 November 2015 at 14:34:45 UTC, Dicebot wrote:
> On Sunday, 15 November 2015 at 14:23:05 UTC, Jonathan M Davis
> wrote:
>>> As I mentioned, he's okay with changing the language to make
>>> the casts well defined. -- Andrei
>>
>> Well, that's a big change, since it pretty much means that D's
>> const isn't physical const anymore, and Walter has been _very_
>> insistent about that in the past - to the point that he's
>> argued that C++'s const is outright useless because it isn't
>> physical const. If casting away const and mutating is
>> well-defined behavior, then we basically have C++'s const
>> except that it's transitive ...
>
> Casting away _const_ is already legal if programmer can himself
> guarantee underlying object has mutable origin (i.e. not
> available via immutable reference), by the very definition of
> const. It is casting away immutable and mutating that is
> strictly UB.
No. As it stands, casting away const and mutating is _always_
considered undefined behavior, regardless of whether the object
being referred to is actually mutable, const, or immutable. In
fact, there was a discussion on that not long ago, and the spec
was updated to be clearer on that count - with approval from
Walter. AFAIK, it has never been the case that casting away const
and mutating was defined behavior in D2 (I have no idea what the
deal with D1 and const is other than the fact that it was quite
different).
- Jonathan M Davis
More information about the Digitalmars-d
mailing list