From: "Grein, Christoph" <christoph.grein@eurocopter.com>
Subject: Re: controlled initialization
Date: Tue, 17 Dec 2002 07:20:17 +0100 (MET)
Date: 2002-12-17T07:20:17+01:00 [thread overview]
Message-ID: <mailman.1040106482.12631.comp.lang.ada@ada.eu.org> (raw)
> Interesting. So (remembering that I don't know Ada) the following
> would be illegal as well? If it is, is there a way to do what the
> code obviously intends? Do I understand the issue correctly, that
> is that MakeT could use O?
>
> package P is
> type T is private;
> O : constant T;
> private
> type T is new Controlled with null record;
> function MakeT return T;
> O : constant T := MakeT;
> end P;
Absolutely correct, MakeT is not elaborated when you call it here. So this code is not illegal, but will raise an exception.
And why would you want to call a function here? A record initialisation can
easily be used because you have full visibility of all components.
In a contrived case like the following, you would have a point. But then simply
define your complicated function in a child package, use an Elaborate_Body
pragma and call the function to initilise O. Here you are - no problem.
package P is
type T is private;
O : constant T;
private
type T is new Controlled with record
Comp: Some_Type;
end record;
O : constant T := (Controlled with Comp => Some very complicated code here);
end P;
next reply other threads:[~2002-12-17 6:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-17 6:20 Grein, Christoph [this message]
-- strict thread matches above, loose matches on Subject: below --
2002-12-16 7:04 controlled initialization Maxim Reznik
2002-12-16 14:33 ` Hyman Rosen
2002-12-16 15:06 ` Robert A Duff
2002-12-16 23:26 ` Matthew Heaney
2002-12-17 1:50 ` Hyman Rosen
2002-12-17 2:00 ` Bill Findlay
2002-12-17 7:55 ` Simon Wright
2002-12-17 6:59 ` Maxim Reznik
2002-12-16 23:31 ` Stephen Leake
2002-12-16 23:31 ` Matthew Heaney
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox