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,5992229ab824d8f7 X-Google-Attributes: gid103376,public From: dgibson@snoopy.cis.ohio-state.edu (david scott gibson) Subject: Re: Q: on redefinition of "= Date: 1996/04/01 Message-ID: <4joui6INNqej@snoopy.cis.ohio-state.edu>#1/1 X-Deja-AN: 145244438 references: <4jkj5sINN8d3@aleutian.cis.ohio-state.edu> organization: The Ohio State University, Department of Computer and Information Science newsgroups: comp.lang.ada Date: 1996-04-01T00:00:00+00:00 List-Id: In article , Robert A Duff wrote: >In article <4jkj5sINN8d3@aleutian.cis.ohio-state.edu>, >david scott gibson wrote: >>Hi. I'm overloading the = operation to return a non-boolean value for >>a non-limited private type. Is there any way in Ada95 to "hide" the >>automatically defined = returning a boolean value? Redefining = >>returning a boolean type in the private section didn't seem to help. > >function "="(X, Y: My_Type) return Boolean is abstract; > >This overrides the predefined "=" with an abstract version. >It's illegal to call this abstract version, since calls to >abstract function have to be dispatching calls, and there are >no tagged operands, so there's no way to write a dispatching call. >(I'm assuming My_Type is not tagged, here.) Thanks for the suggestion. However, I should have mentioned that the type for which I'm redefining equality (My_Type above) is indeed a tagged type. According to RM3.9.3(3), I believe I can only define an abstract subprogram as a primitive operation of a tagged type if the taggged type itself is abstract. Thus this strategy doesn't seem to work. Admittedly what I'm trying to do is a bit strange, but I thought the rules for redefining the equality operator were intended to make something like this possible. Perhaps this sort of thing was only intended for limited types. Any other ideas anyone? Dave