From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: discriminant questions
Date: Mon, 19 Sep 2011 19:01:05 -0500
Date: 2011-09-19T19:01:05-05:00 [thread overview]
Message-ID: <j58l43$jcp$1@munin.nbi.dk> (raw)
In-Reply-To: 148cxoyabima2.16mz6xwdph2hj.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:148cxoyabima2.16mz6xwdph2hj.dlg@40tude.net...
> On Sat, 17 Sep 2011 15:55:15 -0700 (PDT), ytomino wrote:
...
>> This code is same as:
>>
>> type Reference_Type (Element : access Integer) is null record;
>
> It is not same, and I don't see the purpose of using this construct. In
> any
> case it cannot serve as a good basis for smart pointers.
The "good reason" for using this construct (beyond the obvious one of being
able to use the "implicit dereference" construct is one of lifetime. The
access discriminant of this object has the same lifetime as the enclosing
object; if that object is returned from a function, that is very short.
That's important to prevent users from creating dangling pointers to
elements stored inside of a container (including a smart pointer container).
What we want is for the container to be able to manage the actual objects as
it sees fit, so it should not be possible for a user to keep an access to an
element for any length of time.
We originally had looked at other ways of getting this safety, but
eventually it was pointed out that we already had a way to get it with the
existing constructs. Thus we simply used those constructs rather than
creating more rules and cruft -- the only new things here are the aspects
that allow dropping part of the text (the name of the discriminant).
We then went a step further and defined indexing operations that allow
omitting even more of these calls, making them syntactically look like array
indexing.
It should be noted that the primary purpose behind all of these things is
making the Vector and Map containers easier to use; the others are made
consistent but they were not the primary focus. I don't think they help much
for the Holders (and we decided not to use them on the unbounded strings
because writing would not have worked well).
Randy.
next prev parent reply other threads:[~2011-09-20 0:01 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-17 16:30 discriminant questions ytomino
2011-09-17 17:19 ` Dmitry A. Kazakov
2011-09-17 17:46 ` ytomino
2011-09-17 19:41 ` Dmitry A. Kazakov
2011-09-17 22:55 ` ytomino
2011-09-18 8:50 ` Dmitry A. Kazakov
2011-09-18 10:54 ` ytomino
2011-09-18 11:35 ` Dmitry A. Kazakov
2011-09-18 12:41 ` ytomino
2011-09-18 13:17 ` Dmitry A. Kazakov
2011-09-18 16:22 ` ytomino
2011-09-18 16:32 ` ytomino
2011-09-18 18:15 ` Dmitry A. Kazakov
2011-09-18 23:44 ` ytomino
2011-09-19 7:27 ` Dmitry A. Kazakov
2011-09-18 14:43 ` Dmitry A. Kazakov
2011-09-18 16:46 ` Robert A Duff
2011-09-18 18:01 ` Dmitry A. Kazakov
2011-09-18 19:20 ` Maciej Sobczak
2011-09-19 7:39 ` Dmitry A. Kazakov
2011-09-19 20:00 ` Maciej Sobczak
2011-09-20 7:33 ` Dmitry A. Kazakov
2011-09-20 15:45 ` Maciej Sobczak
2011-09-20 16:48 ` Dmitry A. Kazakov
2011-09-20 20:19 ` Maciej Sobczak
2011-09-21 7:48 ` Dmitry A. Kazakov
2011-09-21 20:51 ` Maciej Sobczak
2011-09-22 8:07 ` Dmitry A. Kazakov
2011-09-22 20:57 ` Maciej Sobczak
2011-09-23 7:59 ` Dmitry A. Kazakov
2011-09-23 10:57 ` Georg Bauhaus
2011-09-23 22:30 ` Randy Brukardt
2011-09-23 22:50 ` Randy Brukardt
2011-09-24 6:46 ` Dmitry A. Kazakov
2011-09-26 22:48 ` Randy Brukardt
2011-09-27 8:10 ` Dmitry A. Kazakov
2011-09-27 10:18 ` Georg Bauhaus
2011-09-27 12:14 ` Dmitry A. Kazakov
2011-09-27 15:11 ` Georg Bauhaus
2011-09-27 15:38 ` Dmitry A. Kazakov
2011-09-27 18:06 ` Georg Bauhaus
2011-09-27 19:06 ` Dmitry A. Kazakov
2011-09-29 0:01 ` Georg Bauhaus
2011-09-29 8:26 ` Dmitry A. Kazakov
2011-09-30 1:24 ` Randy Brukardt
2011-09-30 8:10 ` Dmitry A. Kazakov
2011-09-30 10:07 ` Georg Bauhaus
2011-09-30 12:38 ` Dmitry A. Kazakov
2011-09-30 17:40 ` Georg Bauhaus
2011-09-30 18:55 ` Dmitry A. Kazakov
2011-09-23 9:23 ` Stephen Leake
2011-09-23 9:48 ` Dmitry A. Kazakov
2011-09-23 22:42 ` Randy Brukardt
2011-09-24 6:56 ` Dmitry A. Kazakov
2011-09-26 22:43 ` Randy Brukardt
2011-09-24 10:47 ` Stephen Leake
2011-09-24 12:54 ` Simon Wright
2011-09-24 14:46 ` Dmitry A. Kazakov
2011-09-24 16:21 ` Simon Wright
2011-09-24 16:43 ` Dmitry A. Kazakov
2011-09-22 2:52 ` Randy Brukardt
2011-09-22 8:11 ` Dmitry A. Kazakov
2011-09-20 0:01 ` Randy Brukardt [this message]
2011-09-20 7:38 ` Dmitry A. Kazakov
2011-09-20 11:11 ` AdaMagica
2011-09-20 12:09 ` Dmitry A. Kazakov
2011-09-20 12:31 ` AdaMagica
2011-09-20 12:57 ` Dmitry A. Kazakov
2011-09-20 23:28 ` ytomino
2011-09-21 5:03 ` AdaMagica
2011-09-21 8:08 ` Dmitry A. Kazakov
2011-09-21 10:03 ` Georg Bauhaus
2011-09-21 10:29 ` Dmitry A. Kazakov
2011-09-22 3:21 ` Randy Brukardt
2011-09-22 3:05 ` Randy Brukardt
2011-09-19 23:35 ` Randy Brukardt
2011-09-20 21:39 ` ytomino
2011-09-22 3:32 ` Randy Brukardt
2011-09-18 16:32 ` ytomino
2011-09-19 14:46 ` ytomino
2011-09-19 15:14 ` Dmitry A. Kazakov
2011-09-19 17:49 ` ytomino
2011-09-20 7:29 ` Georg Bauhaus
2011-09-20 19:50 ` ytomino
2011-09-20 8:08 ` Dmitry A. Kazakov
2011-09-20 18:47 ` ytomino
2011-09-21 8:16 ` Dmitry A. Kazakov
2011-09-21 9:55 ` ytomino
2011-09-22 3:26 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox