>Since the RM95 language is not clear (the AARM didn't help), you could
>argue that the representation is indeed four bits, but that the "storage
>allocated" is indeed 32. I think (1) this is avoiding the issue that the
>behavior is counterproductive, and (2) the AARM does NOT suggest the
>meaning of 'Size has changed that much.
Unfortunately, the ARM language IS clear, and it is required behavior for
all Ada 95 compilers to change. I think that is why GNAT added 'Object_Size
== to provide the Ada 83 typical definition of size.
Ada 83 didn't define 'Size at all, and there was as many ideas of what 'Size
meant as there were implementors. That is why you don't see a "change"
in the AARM - it is just specifying something that was unspecified in Ada 83.
Unfortunately, the writers of the ARM had in mind a model that was very
different from existing practice. I know I complained about the change at
the time, but apparently most other reviewers failed to notice that it would
affect their programs, too.
In any event, do not blame this on Apex -- all Ada 95 compilers must have
this behavior. Any that don't are wrong.