From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Equivalence between named access and anonymous access.
Date: Wed, 6 Sep 2023 17:54:42 +0200 [thread overview]
Message-ID: <uda7c1$2ids2$1@dont-email.me> (raw)
In-Reply-To: <uda2ql$2hle9$1@dont-email.me>
On 2023-09-06 16:37, Blady wrote:
> I'm wondering about named access and anonymous access.
> In the following Ada code, are the writing of parameter P1 type of
> procedures PA and PB equivalent ?
>
> package C1 is
> type Inst is tagged null record;
> type Class is access all Inst'Class;
> end C1;
>
> with C1;
> package C2 is
> type Inst is tagged null record;
> type Class is access all Inst'Class;
>
> procedure PA (Self : Inst; P1 : C1.Class); -- named access
> procedure PB (Self : Inst; P1 : access C1.Inst'Class); -- anonymous
> access
> end C2;
>
> Same with:
> function FA (Self : Inst) return C1.Class; -- named access
> function FB (Self : Inst) return access C1.Inst'Class; -- anonymous
> access
>
> Are FA and FB writing equivalent?
> If not why?
They are not equivalent from the access checks point of view:
declare
Y : C2.Inst;
X : aliased C1.Inst;
begin
C2.PA (Y, X'Access); -- Non-local pointer error
C2.PB (Y, X'Access); -- Fine
end;
Furthermore, tagged anonymous access is controlling (dispatches) when
not class-wide.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2023-09-06 15:54 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-06 14:37 Equivalence between named access and anonymous access Blady
2023-09-06 15:54 ` Dmitry A. Kazakov [this message]
2023-09-07 16:06 ` Blady
2023-09-07 16:18 ` Jeffrey R.Carter
2023-09-07 19:10 ` Blady
2023-09-07 20:23 ` Dmitry A. Kazakov
2023-09-06 20:55 ` Gautier write-only address
2023-09-07 0:20 ` Jeffrey R.Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox