From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Equivalent of dynamic_cast (downcast) for tagged types
Date: Fri, 28 Jan 2011 18:12:20 -0600
Date: 2011-01-28T18:12:20-06:00 [thread overview]
Message-ID: <ihvm19$6in$1@munin.nbi.dk> (raw)
In-Reply-To: 1phnecgw6ckgv.1vm12emlufu5b.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:1phnecgw6ckgv.1vm12emlufu5b.dlg@40tude.net...
...
> Yes, it is wrong (language design). The operation is primitive even if
> invisible in *some* contexts. It means that there might exist other
> contexts where two operations would conflict. Furthermore, Ada designers
> tried (and expectedly failed) to ensure that "multiple inheritance" always
> override.
I have no idea as to what you are talking about here. The inheritance rules
haven't changed significantly since Ada 95 (there is a tweak in Ada 2012
which will help alievate this problem when it is unintentional). And
multiple inheritance has nothing whatsoever to do with it. IMHO, MI is a
large cannon whose primary purpose is to blow off limbs. :-) Don't do it.
Remember that a lot more goes into what is overriding than just the names of
operations; it also depends on the profiles and visibility. Just thinking
about names always gets you into trouble when thinking about Ada.
And, regardless of whether there is a language design flaw, there is no
chance that this would change. It would break too much existing code.
Moreover, I think that what you are talking about is actively harmful. Claw,
for instance, uses the current rules to have implementation operations that
are dispatching, but that clients cannot override in any circumstances. (If
they did, Claw would likely fall over in a heap, causing a debugging and
support nightmare.)
Randy.
next prev parent reply other threads:[~2011-01-29 0:12 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-27 15:46 Equivalent of dynamic_cast (downcast) for tagged types Maciej Sobczak
2011-01-27 16:18 ` Dmitry A. Kazakov
2011-01-27 17:10 ` J-P. Rosen
2011-01-27 17:35 ` Dmitry A. Kazakov
2011-01-27 22:49 ` Maciej Sobczak
2011-01-27 17:50 ` Georg Bauhaus
2011-01-27 22:35 ` Maciej Sobczak
2011-01-28 5:07 ` Yannick Duchêne (Hibou57)
2011-01-28 9:16 ` Dmitry A. Kazakov
2011-01-28 13:11 ` AdaMagica
2011-01-28 14:13 ` Dmitry A. Kazakov
2011-01-28 23:51 ` Randy Brukardt
2011-01-29 0:55 ` Adam Beneschan
2011-01-28 16:44 ` Adam Beneschan
2011-01-28 17:21 ` Dmitry A. Kazakov
2011-01-29 0:12 ` Randy Brukardt [this message]
2011-01-29 8:47 ` Dmitry A. Kazakov
2011-01-28 17:33 ` Adam Beneschan
2011-01-28 15:13 ` Maciej Sobczak
2011-01-28 17:47 ` Robert A Duff
2011-01-28 22:04 ` Maciej Sobczak
2011-01-30 20:22 ` Stephen Leake
2011-01-31 9:04 ` AdaCore, user community and communication channels Maciej Sobczak
2011-01-31 10:42 ` Georg Bauhaus
2011-01-27 19:33 ` Equivalent of dynamic_cast (downcast) for tagged types Adam Beneschan
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox