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,6d47794b76bd8d3f,start X-Google-Attributes: gid103376,public From: "Didier DOUSSAUD" Subject: Language question : function'Access / function'unchecked_Access Date: 1998/11/24 Message-ID: #1/1 X-Deja-AN: 415122947 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Newsgroups: comp.lang.ada Date: 1998-11-24T00:00:00+00:00 List-Id: I write a list package and need a Seach function that return the "Index" of the object that match some condition. (the condition is coded in a function that have for parameter the item of the list and return the boolean result of the test ) Impossible to call the Search function ???? Look the following sample may be more explicit than my poor english... Thanks Didier d_doussaud@csi.com -------------------------------------------------------------------- package P_List is type Item is null record; type List is null record; type Index is null record; type Search_Function is access function ( I : Item ) return Boolean; function Search( L : List; Funct : Search_Function ) return Index; end P_List; ----------------------------------------------------------------------- with P_List; use P_List; procedure Test_Callback is L : List; I : Index; function Match( I : Item ) return Boolean is begin return True; end; begin -- this line : I := Search( L, Match ); -- generate the ERROR : -- The Accessibility Level of The Subprogram Denoted By The The Prefix -- Shall not Be Statically Deeper Than That of The Expected type -- I can understand this -- but this line : I := Search( L, Match'Unchecked_Access ); -- generate the ERROR : -- The prefix of Unchecked_Access, which is function name, has no -- interpretation as A Parameterless function Call -- ???? -- is it possible to do what I want in ADA ? end;