comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: CONSTRAINT_ERROR - why?
Date: Sun, 15 Dec 2002 02:18:53 GMT
Date: 2002-12-15T02:18:53+00:00	[thread overview]
Message-ID: <3DFBD8E8.1020604@acm.org> (raw)
In-Reply-To: 3DFBB00B.230289A2@t-online.de

Alfred Hilscher wrote:
> 
> Jeffrey Carter schrieb:
>>
>>declare
>>    Value : constant := X'Size / 8;
>>begin
>>    Y := Value;
>>end;
> 
> Is there no way to avoid this extra assignment? I expected something
> like function "/" (Left, Right : universal_integer) return Byte;

There is no "extra assignment". This is a static universal expression 
and is evaluated by the compiler. Value becomes a name for the resulting 
value (a "named number"). The block statement above is another way to write

Y := 33;

except that changes to X are handled automatically.

This is, however, a gotcha in Ada. The context of the expression helps 
determine the selection ("overload resolution") of the operator. Lots of 
people, including experienced people, expect the universal operation to 
be selected for an assignment to a variable or the initialization of an 
object, but that's not what the language rules say.

-- 
Jeff Carter
"C++ is like giving an AK-47 to a monk, shooting him
full of crack and letting him loose in a mall and
expecting him to balance your checking account
'when he has the time.'"
Drew Olbrich




  parent reply	other threads:[~2002-12-15  2:18 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-14 18:28 CONSTRAINT_ERROR - why? Alfred Hilscher
2002-12-14 18:45 ` James S. Rogers
2002-12-14 19:15   ` Robert A Duff
2002-12-14 19:20     ` James S. Rogers
2002-12-14 19:42     ` Alfred Hilscher
2002-12-16  2:39       ` AG
2002-12-14 19:20   ` Alfred Hilscher
2002-12-14 20:58     ` Dennis Lee Bieber
2002-12-15 13:45       ` Alfred Hilscher
2002-12-15 19:04         ` Robert A Duff
2002-12-16  1:12         ` Dennis Lee Bieber
2002-12-16  2:20           ` Jeffrey Carter
2002-12-16 18:48             ` Alfred Hilscher
2002-12-16 19:53               ` James S. Rogers
2002-12-17 18:20                 ` Alfred Hilscher
2002-12-17 19:29                   ` Robert A Duff
2002-12-17 21:05                     ` Dennis Lee Bieber
2002-12-18 18:36                     ` Alfred Hilscher
2002-12-18 18:51                       ` Robert A Duff
2002-12-18 21:45                         ` Randy Brukardt
2002-12-19 16:49                           ` Robert Spooner
2002-12-19 20:57                             ` Randy Brukardt
2002-12-14 20:19 ` Jeffrey Carter
2002-12-14 22:26   ` Alfred Hilscher
2002-12-15  0:49     ` Dennis Lee Bieber
2002-12-15  2:18     ` Jeffrey Carter [this message]
2002-12-15 18:23       ` Jeffrey Carter
2002-12-15 14:01   ` Alfred Hilscher
2002-12-15 18:20     ` Jeffrey Carter
2002-12-15 19:00       ` Alfred Hilscher
2002-12-16  1:16         ` Dennis Lee Bieber
2002-12-16 18:50           ` Alfred Hilscher
2002-12-17  2:17             ` Dennis Lee Bieber
2002-12-17 18:21               ` Alfred Hilscher
     [not found]                 ` <26tuvu4ekeigls0bnd2okavrdhfu0tir4a@4ax.com>
2002-12-18 18:47                   ` Alfred Hilscher
replies disabled

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