comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Convert an access to constant to access to variable
Date: Fri, 4 Aug 2017 19:26:27 -0500
Date: 2017-08-04T19:26:27-05:00	[thread overview]
Message-ID: <om33bk$f3c$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: om2rph$18jt$1@gioia.aioe.org

"Victor Porton" <porton@narod.ru> wrote in message 
news:om2rph$18jt$1@gioia.aioe.org...
> What is the proper way to convert an access to constant to access to
> variable? (Yes, I know that then I need to be careful not to modify this
> "variable".)

Well, it's not a proper conversion, so there isn't going to be a "proper" 
way.

> Maybe Unchecked_Conversion?

That's one possibility.

> But:
>
> 1. Is Unchecked_Conversion guaranteed by the standard to work well in this
> case?

I think so. The rules for what must work are found in 13.9(5-10). I suppose 
a compiler could represent access-to-constant and access-to-variable 
differently.

In any case, your program is erroneous if it tries to write a constant. (But 
you knew that.)

> 2. Is there a simpler way than Unchecked_Conversion?

The alternative (assuming the access-to-variable is a general access type) 
is to use 'Access to convert:

     Ptr.all'Access

Nope, that won't work, because Ptr.all is a constant, and the result here 
has to be a variable in order to assign it into an access-to-variable.

You could certainly use Address_to_Access_Conversions, but whether that's 
"simpler" is in the eye of the beholder. (It also requires an instantiation, 
and usually an extra type conversion.)

                             Randy.




  reply	other threads:[~2017-08-05  0:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-04 22:17 Convert an access to constant to access to variable Victor Porton
2017-08-05  0:26 ` Randy Brukardt [this message]
2017-08-05  1:00   ` Victor Porton
2017-08-07 23:21     ` Randy Brukardt
2017-08-05  1:37 ` Victor Porton
2017-08-05 17:27 ` Stephen Leake
2017-08-05 17:41   ` Victor Porton
2017-08-07 23:16     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox