Вот небольшой пример, показывающий, что он делает:
procedure Access_Constant is
type XA is access constant Integer;
A : aliased Integer;
X : XA;
begin
X := A'Access;
X.all := 4;
end Access_Constant;
Когда вы пытаетесь скомпилировать его, присваивание X
работает нормально (X
- переменная), тогда как присваивание X.all
запрещено (поскольку X.all
является константой - согласно определению XA
).
Хотя объявлено, что XA
указывает на constant Integer
, даже переменная является приемлемой, но выможет обрабатывать разыменование объекта XA
как constant Integer
, даже если объект является переменной.