From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: deferred constants
Date: Wed, 7 Jul 2021 22:40:25 +0200 [thread overview]
Message-ID: <sc53fp$d6h$1@dont-email.me> (raw)
In-Reply-To: <5db8eeb4-f3fc-49a7-b588-6a4b25bdbafcn@googlegroups.com>
On 7/7/21 9:31 PM, Matt Borchers wrote:
> Is it possible to define a constant in a package body that has it's initialization deferred to elaboration?
>
> with Gnat.RegExp;
> package body
> pat : constant Gnat.RegExp.RegExp;
> begin
> pat := Gnat.RegExp.compile( "..." );
> end;
Deferred constants are defined in ARM 7.4
(http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-7-4.html), which says they
may only appear in the visible part of a pkg spec, and the full declaration must
appear in the private part of the same pkg. So what you're trying is illegal.
In cases like this, you declare the object as a variable, with comments
indicating that it is set later and is then constant.
of course, in the example, one can simply do
Pat : constant Gnat.RegExp.RegExp := Gnat.RegExp.Compile ( "..." );
but there are cases where this is not possible.
--
Jeff Carter
"He had no conception of the instrument. He
was blowing into it."
Take the Money and Run
135
next prev parent reply other threads:[~2021-07-07 20:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-07 19:31 deferred constants Matt Borchers
2021-07-07 20:40 ` Jeffrey R. Carter [this message]
2021-07-07 20:41 ` Stephen Leake
2021-07-07 20:44 ` Shark8
2021-07-07 23:15 ` Matt Borchers
2021-07-07 23:37 ` Shark8
2022-07-06 16:18 ` RegEx / rename of a function result Thomas
2022-07-06 17:56 ` J-P. Rosen
2022-07-06 19:11 ` Jeffrey R.Carter
2022-07-07 5:51 ` RegEx / rename of a function resultRig J-P. Rosen
2022-07-11 17:49 ` RegEx / rename of a function result Thomas
2022-07-12 5:13 ` J-P. Rosen
2022-07-12 14:45 ` G.B.
2022-07-07 0:44 ` Randy Brukardt
2022-07-11 17:45 ` Thomas
2022-07-12 6:54 ` Randy Brukardt
2021-07-08 1:21 ` deferred constants Stephen Leake
2021-07-08 14:18 ` Maxim Reznik
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox