From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,6fa8b1cda58f3518,start X-Google-Attributes: gid103376,public From: "R. Tim Coslet" Subject: Re: Default equality for generic formal types Date: 2000/02/21 Message-ID: <38B2204B.B08162F3@kaisere.com>#1/1 X-Deja-AN: 588265371 Content-Transfer-Encoding: 7bit References: Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@pacbell.net X-Trace: typhoon-la.pbi.net 951197555 206.170.2.88 (Mon, 21 Feb 2000 21:32:35 PST) Organization: SBC Internet Services MIME-Version: 1.0 NNTP-Posting-Date: Mon, 21 Feb 2000 21:32:35 PST Newsgroups: comp.lang.ada Date: 2000-02-21T00:00:00+00:00 List-Id: 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