From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Implicit dereferences rational question
Date: Wed, 21 May 2014 09:36:10 +0200
Date: 2014-05-21T09:36:10+02:00 [thread overview]
Message-ID: <1kghhevnfzyx4$.1juie06nqyink.dlg@40tude.net> (raw)
In-Reply-To: llgh9h$8at$1@loke.gir.dk
On Tue, 20 May 2014 16:26:08 -0500, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:1pkkrdwu7lh6y.7cjyncdfw33e.dlg@40tude.net...
>> On Mon, 19 May 2014 16:51:56 -0500, Randy Brukardt wrote:
>>
>>> "Victor Porton" <porton@narod.ru> wrote in message
>>> news:llb1aa$gth$1@speranza.aioe.org...
>>>> Robert A Duff wrote:
>>>>> Victor Porton <porton@narod.ru> writes:
>>>>>
>>>>>> Why implicit dereferences use only access discriminants, not arbitrary
>>>>>> access fields?
>>>>>
>>>>> It helps prevent dangling pointers.
>>>>
>>>> In which way limiting to discriminants may prevent dangling pointers?
>>>
>>> Discriminants have a lengthy set of accessibility rules, which turn out
>>> to
>>> be exactly what's needed for limiting dangling pointers. In particular,
>>> it's
>>> almost never the case that one can make a copy of an access discriminant,
>>> while that's easy for a "arbitrary access field".
>>
>> Except that dereference, be it implicit or explicit, does not create
>> pointers. Obviously, it eliminates a pointer, as the name suggests.
>
> I suppose, but you have to have a pointer or something very similar to a
> pointer if you want to be able to write to it.
Actually not. Most pointers and pointer-like objects are initialized once
and never change.
But this still has nothing to do with implicit dereference, or more
precisely with delegation of operations through composition with X.all.
> And that's the key feature
> here: that one can use these as variables as well as constants. It didn't
> make much sense to invent a new, almost pointer construct just for this
> purpose when we already had one with the correct semantics.
Of course it does. So many projects and practically all bindings require
smart pointers, handles and other user-defined referential objects in some
or other form.
It is about language design principles. Programmers want to control the
semantics of referential types. Ada tried to enforce a certain semantics on
them in the ugly form of incomprehensible accessibility rules.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
prev parent reply other threads:[~2014-05-21 7:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-18 15:24 Implicit dereferences rational question Victor Porton
2014-05-18 17:08 ` Robert A Duff
2014-05-18 19:22 ` Victor Porton
2014-05-19 21:51 ` Randy Brukardt
2014-05-19 22:44 ` Robert A Duff
2014-05-20 7:29 ` Dmitry A. Kazakov
2014-05-20 21:26 ` Randy Brukardt
2014-05-21 7:36 ` Dmitry A. Kazakov [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox