From: "R. Tim Coslet" <coslett@kaisere.com>
Subject: Re: Default equality for generic formal types
Date: 2000/02/21
Date: 2000-02-21T00:00:00+00:00 [thread overview]
Message-ID: <38B2204B.B08162F3@kaisere.com> (raw)
In-Reply-To: Fqns4.14199$O43.537287@newsread2.prod.itd.earthlink.net
See AARM 12.3(29.b)
For upward compatibility with Ada83 (which had this bug/feature) for
untagged types the the default function reverts to the predefined one. I
can't seem to locate the reference right now, but I believe that even if you
explicitly passed the instantion the "=" function, it still reverts to the
predefined one. However if your "=" function had a different name (like
"equal" you could pass that explicitly (a rename might work to accomplish
this workaround, but if not a wrapper function will).
This is not a problem with tagged types.
Matthew Heaney wrote:
> Suppose I have a generic subprogram like this:
>
> generic
> type Item_Type is private;
> with function Item_Eq (L, R : Item_Type)
> return Boolean is "=";
> procedure Generic_Op (O : T);
>
> Suppose further that the generic actual type is nontagged, and has
> overridden its predefined equality.
>
> To which equality does Item_Eq refer? The overridden version, or the
> predefined version? What does that default value for Item_Eq, "=", mean
> at the time of compilation of the generic?
>
> If the client does not explicitly pass in an item equality op during the
> instantiation (likely, because the type is nonlimited), then inside
> Generic_Op, what does Item_Eq refer to? Predefined equality, or the
> overridding version?
>
> Thanks in advance,
> Matt
next prev parent reply other threads:[~2000-02-21 0:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-02-22 0:00 Default equality for generic formal types Matthew Heaney
2000-02-21 0:00 ` R. Tim Coslet [this message]
2000-02-22 0:00 ` Andy
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox