comp.lang.ada
 help / color / mirror / Atom feed
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

  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