comp.lang.ada
 help / color / mirror / Atom feed
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







  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